Commit Graph

827 Commits

Author SHA1 Message Date
binary1248
34fde883b9 Replaced OpenAL with miniaudio.
Co-authored-by: Chris Thrasher <chrisjthrasher@gmail.com>
Co-authored-by: kimci86 <kimci86@hotmail.fr>
Co-authored-by: vittorioromeo <mail@vittorioromeo.com>
2024-04-25 10:24:11 +02:00
Chris Thrasher
a05daa62b7 Use more C++17 inline variables 2024-04-23 09:35:46 -06:00
Chris Thrasher
4315c3d290 Revert change to Drawable::draw function signature
This change was made in 359fe90 due to recommendations from tooling.
On its face this change makes sense since it removes a copy that
isn't always necessary. In practice it caused ergonomic issues due
to now being forced to make a copy of the render states when needed.

The performance gains of eliding this copy are unsubstantiated. We
have not done any profiling to measure its impact. For lack of such
measurements I'd rather err on the side of improved user experience.
If future benchmarks prove this copy is rather expensive then we
can reconsider removing it with that evidence in mind.
2024-04-18 13:18:49 +02:00
Chris Thrasher
d6e1961112 Ensure struct data members are given an initial value
While I don't suspect there are any uninitialize variable bugs
present, it's still good to err on the side of safety and provide
an initial value nonetheless.
2024-04-16 19:14:38 -06:00
Chris Thrasher
6eaf300918 constexpr-fy sf::priv::Vector4 2024-04-11 09:05:28 -06:00
Chris Thrasher
d00ab43ea6 Return nullptr when sf::Context::getFunction is called on Windows without an active context
This converts termination in Debug and a SEGFAULT in Release builds
into defined behavior.
2024-04-02 21:40:09 -05:00
vittorioromeo
23c26f9b70 Turn 'sf::Vertex' into an aggregate 'struct' 2024-02-19 16:44:06 +00:00
vittorioromeo
b552148e26 Header cleanup guided by IWYU 2024-02-09 12:52:23 +01:00
vittorioromeo
ee13dfbd3b 'SoundFileFactory' implementation overhaul 2024-02-05 17:11:23 +01:00
vittorioromeo
4ff70c87d3 Self-contained '.inl' headers + minor refactoring 2024-02-05 13:45:01 +01:00
Vittorio Romeo
76295f2624 Improve SocketSelector in-documentation example 2024-02-04 20:41:52 +01:00
vittorioromeo
368ff9dace Header include clean-up and minor refactoring 2024-02-03 23:58:44 +01:00
Kipernal
eb07e1e6c5 Added support for stencil testing.
Co-authored-by: binary1248 <binary1248@hotmail.com>
Co-authored-by: Chris Thrasher <chrisjthrasher@gmail.com>
2024-01-29 08:13:14 -07:00
Chris Thrasher
9022d9564d Define character traits for std::uint8_t
Character traits are only standardized for character types of which
std::uint8_t is not. All major C++ implementations happen to define
this specialization but because it is not standard C++ they are
allowed to remove it as LLVM has done by deprecating this specialization
in LLVM 18. It is slated for removal in LLVM 19. To avoid compilation
errors and to get ahead of any deprecation warnings when LLVM 18 ships
we need to define our own std::uint8_t character traits.

SFML 4 will have access to C++20's std::u8string which should let us
remove this code.
2024-01-28 10:24:02 -07:00
kimci86
a7f054712a Update PrimitiveType values occurrences in documentation
because PrimitiveType is a scoped enumeration.
2024-01-27 15:31:30 -07:00
kimci86
0d3c7f1c32 Make VertexBuffer::Usage a scoped enumeration 2024-01-27 15:31:30 -07:00
kimci86
a019b5167b Make Shader::Type a scoped enumeration 2024-01-27 15:31:30 -07:00
kimci86
b496877c90 Make BlendMode::Factor and BlendMode::Equation scoped enumerations 2024-01-27 15:31:30 -07:00
Miron Alexandru
3ca42c9a45 Update copyright year 2024-01-26 12:00:22 -07:00
Corentin Schreiber
ebf485737f Add texture coordinate type to sf::RenderStates 2024-01-25 23:45:00 -07:00
Chris Thrasher
b234ede61e Use struct for data type with exclusively public contents 2024-01-24 21:59:00 -07:00
Chris Thrasher
a2c003b2b7 Add sf::State for specifying fullscreen or floating windows 2024-01-15 23:08:33 -07:00
Chris Thrasher
0d49fab1a6 Remove unnecessary private operators
Equality operations are not automatically generated by the compiler
so we can omit this.
2024-01-09 22:17:55 -07:00
Chris Thrasher
4346b9a8bc Remove unnecessary default destructor
sf::RenderWindow still inherits a virtual destructor from a base
class so there's no need to explicitly declare a virtual destructor.
I added a test to ensure this property was not broken.
2024-01-08 12:26:28 -07:00
Chris Thrasher
a9d9ef6d83 Deduplicate Window{Base}::create implementations
Co-authored-by: binary1248 <binary1248@hotmail.com>
2024-01-01 12:57:57 -07:00
Chris Thrasher
8509f0fddd Use struct for type with exclusively public contents 2023-12-23 18:36:41 -06:00
Chris Thrasher
ffe9cc0671 Fix incorrect assertion comment 2023-12-22 16:00:39 -06:00
kimci86
39da2b829c Make Keyboard::Key a scoped enumeration 2023-12-22 10:47:30 -06:00
kimci86
82ee0f79ac Remove Key::Last and Scan::Last enumerators
The purpose of those was to make it obvious that an action is needed to
update KeyCount or ScancodeCount when adding more enumerators, but we
rarely touch those enumerations so it is not worth adding those
technical names to the public API.
2023-12-19 22:37:13 +01:00
Chris Thrasher
674d68faa6 Remove unhelpful return values 2023-12-17 17:48:11 -07:00
kimci86
faaceb5b5b Define KeyCount and ScancodeCount out of enums
Those values are not valid Key or Scancode values, so it doesn't make
sense for them to have Key or Scancode type.
Moving them out of their enum makes it possible to write exhaustive
switch case statement without having to write a case for those values.
Making them unsigned int allows to use them as array size without having
to do a static_cast.
2023-12-17 15:47:47 -07:00
kimci86
b20376813c Rename XButton1 and XButton2 into Extra1 and Extra2
This is to avoid repeating Button when using those values now that the
sf::Mouse::Button enumeration is a scoped enumeration.
2023-12-16 12:14:43 -07:00
kimci86
eab8f426e7 Make Sensor::Type a scoped enumeration 2023-12-15 15:18:25 -07:00
kimci86
3fb0ffce51 Make Mouse::Button and Mouse::Wheel scoped enumerations 2023-12-15 15:18:25 -07:00
kimci86
ebf190b660 Make Joystick::Axis a scoped enumeration 2023-12-15 15:18:25 -07:00
kimci86
df2f56fe83 Make Cursor::Type a scoped enumeration 2023-12-15 15:18:25 -07:00
Chris Thrasher
04a7184ab4 Simplify sf::View construction 2023-12-11 19:33:20 -07:00
Chris Thrasher
e11154e7f7 Define default special member functions in headers 2023-12-10 10:28:42 -07:00
Chris Thrasher
7f5d87dcd5 Add move semantics to sf::Context 2023-12-09 10:27:57 -07:00
Chris Thrasher
c89c5eae69 Replace raw loops with standard algorithm 2023-11-28 09:41:28 -07:00
Chris Thrasher
c6919e28fc Prefer std::optional return types over output parameters 2023-11-28 09:37:03 -07:00
Chris Thrasher
0a1090c89d Let compiler define default constructors 2023-11-27 10:49:51 -05:00
Chris Thrasher
fca84e4011 Implicitly define default constructors 2023-11-20 21:31:40 -07:00
Chris Thrasher
1e4cdf89b6 Use std::array to reduce code duplication
std::array lets us have a single source of truth for array size
rather than needing separate constants or magic numbers that have
to stay in sync with the underlying array.
2023-11-20 12:14:21 -07:00
binary1248
5a2f30c5ae Added support for scissor testing. 2023-11-20 11:01:33 -07:00
Chris Thrasher
08eca7c9a4 Default all sf::Font special member functions 2023-11-18 20:52:17 -07:00
Chris Thrasher
ec50a7332b Fix sf::Rect docs 2023-11-15 15:58:01 -07:00
Chris Thrasher
d3a79e6282 Add sf::Rect<T>::getCenter() 2023-11-15 09:30:01 -07:00
Chris Thrasher
f588589089 Use inline to define constant in header 2023-11-10 00:24:39 -07:00
Chris Thrasher
dcfccbec6e Remove declaration of unimplemented function 2023-11-10 00:22:35 -07:00