Releases: jeremyletang/rust-sfml
Releases · jeremyletang/rust-sfml
0.24.0
Added
- Add
cpp::CppString
andcpp::CppVector
to deal with C++ strings and vectors returned by SFML - Add provided method
Shape::points
to get an iterator over the points of a shape - Add
From<T> for Vector2<T>
. This allows things likemy_sprite.set_scale(2.0)
,
to scale to2.0
in both axes. - Add
Image::new_solid
to create an image filled with a solid color - Add
Font::new
to create an empty font - Add
Window::new
to create a closed window - Add
RenderTexture::recreate
to recreate aRenderTexture
with new settings
Changed
- Rust requirement increased to 1.82
- Rename
SfBox
toFBox
to emphasize the fact it doesn't only deal with SFML objects, but
multiple kinds of foreign objects. (F stands for "foreign") - All methods on
system::Time
are nowconst fn
- Rename
Transform::get_matrix
toTransform::matrix
- Make
Transform::{new, matrix, inverse}
const fn
Image::new
now creates an empty image. SeeImage::new_solid
- Old
Window::new
is nowWindow::new_open
SoundRecorder
now requiresSend
- Make
RcFont::texture
returnRef
rather than "leak" a borrow - Make all fields on
RenderStates
public Texture::upate_from_pixels
is now a safe, checked function
Fixed
- Fix building on Mac OS X
- Fix
Music::from_memory
having unbounded lifetime on the memory
Removed
ConvexShape::points
in favor ofShape::points
RenderStates::{new, set_texture, set_shader}
in favor of public fields
Documentation and examples
- Remove awkward
example_res!
macro from examples in favor of calling
example_ensure_right_working_dir()
at the beginning of main. - Improve some examples, showcase more API usages in them
- Leverage "scrape examples" functionality of rustdoc in docs.rs generated documentation
- Add "positional audio" example
Internal improvements
- Added continuous integration for Windows MSVC, and Mac OS X
0.23.0 - Vendored SFML
This release removes the need for having to have SFML installed on your system.
SFML is vendored and built from source using CMake, so you need to have CMake and a C++ toolchain installed.
Changed
⚠️ Changed build process to statically link as much of SFML as possible. If you get a build error, open an issue!- Rework
LoadResult
toSfResult
as a more generic error type. - Use
SfResult
in a lot of APIs that previously returnedOption
,bool
, or panicked on error. - Fixed some methods on
Image
,RenderWindow
,RenderTexture
andWindow
to properly take&mut self
instead of&self
. - Examples now use
?
for error handling rather than.unwrap()
. SoundStream::get_data
now returns an immutable slice, as it should.SoundStream
now requiresSend
bound, as the samples are polled from a different thread.- Renamed
Image::create_from_pixels
toImage::from_pixels
Removed
- Remove
SfResource
trait. It's not required anymore. - Remove
Default
impl for clock becauseClock::start
can fail.
Added
Texture::from_image
convenience method.- Clock example. Mostly just to have an example that only links against the system submodule.
Improved
- Improve
Debug
impl forSfBox
and opaque SFML types
Fixed
- Fixed docs.rs build failing due to linking shenanigans. The new static linking model fixes this.
- Fixed potential unsoundness of
SoundStreamPlayer
holding a&mut SoundStream
simultaneously with SFML
using it from another thread.
Documentation
- Experiment with splitting up methods into different
impl
blocks, for better organization.
SeeRenderWindow
's documentation for example. - Various minor doc fixes.
0.22.0
Added
- Added
is_rgb
method forTexture
,RenderWindow
, andRenderTexture
- Add
RcTexture::raw_texture
to get the underlyingTexture
of anRcTexture
- Add direction arrow cursors from SFML 2.6 to
CursorType
- Add
Scancode
API from SFML 2.6. - Add tip about environment variables to README
Changed
Image::set_pixel
andImage::pixel_at
are now safe, checked functions. Added unsafe unchecked variants.- Renamed
SetPixelError
toPixelAccessError
- Rust requirement bumped to 1.81
- Made
Context::get_function
a safe function
Fixed
- Minor doc fixes, including typos
- Fixed compilation error on Windows MinGW
SFML 2.6 compatibility
SFML 2.6 update
rust-sfml 0.21 requires SFML 2.6. It will not work with 2.5.
Added
- Added
RcFont
andRcText
for reference counted text (seeexamples/rc-resources.rs
) - pub const DEFAULT for
Vertex
is_smooth
andset_smooth
methods forFont
RenderWindow::recreate
method to recreate a window with new parameters
Changed
- Update
RcSprite
andRcTexture
documentation.
Fixed
- Missing
#include
s in CSFML - Too restrictive lifetime for Music
v0.20.0
Added
Default
impl forColor
(transparent)- Help on using
LD_LIBRARY_PATH
for finding SFML shared libraries on *nix. RcTexture
andRcSprite
for reference counted textures (seeexamples/rc-resources.rs
)
Changed
- Removed
Sprite::disable_texture
, due to being an unsound API - Methods that used to take
&Rect
now takeRect
by value listener::set_up_vector
now TakesVector3f
instead of&Vector3f
- Use
usize
instead ofu32
forCustomShapePoints
- Use
usize
instead ofu32
forShape
methods - Use
usize
instead ofu32
inCircleShape
andConvexShape
methods
Internal improvements
- Remove needless raw conversion methods for Rect
- Remove needless raw conversion methods for Vector2/Vector3
0.19.0
Added
- Basic support for statically linking SFML
Fixed
- Wrong doc comment for RenderTexture::new
- Joystick axis was inacessible in the JoystickMoved event
Changed
joystick::Axis
is now a proper enum
v0.18.0
Added
- Examples for Vector3
- Examples for Vector2
- Examples for Rect
- Examples for RenderWindow
- Examples for Font
- Info about
SFML_INCLUDE_DIR
andSFML_LIBS_DIR
environment variables
Changed
window::clipboard::get_string()
now returnsString
instead of&'static SfStr
Color
now has public fields, removed the unnecessary getter/setter methods.
Fixed
- Update requirements in the crate documentation
- Make
set_mouse_cursor
unsafe, as the cursor must stay alive while in use. - Fix wrong
Vector3::{AddAssign, SubAssign}
impls - Add
Hash
impl forCursorType
v0.17.0
Changelog
- Replaced CSFML dependency with a vendored CSFML fork, which is built by rust-sfml and linked statically.
Now there is no dependency on CSFML anymore.
However, a C++ compiler is now required to build-rust SFML, as we are building our own CSFML-like binding. - Added spritemark example to show off the rendering speed that can be achieved with vertex arrays.
- Fixed unsoundness in
InputStream
- Added
RectangleShape::from_rect
- Removed
VertexArray
in favor ofRenderTarget::draw_primitives
, which takes a slice of vertices. - Added
graphics::vertex_array_bounds
to replaceVertexArray::get_bounds
- Enabled null pointer optimization to a bunch of types that are never null
- Added Rust version of the SFML OpenGL example
- Made
Shader
constructors only allow valid combinations of vertex/fragment/geometry - Made pong example more exciting. It speeds up as the game goes on.
- Derived a bunch more traits like
Hash
for some types - Made a bunch of previously wrongly-safe functions unsafe
- Added a bunch of conversion functions for conversion between different
Vector2/Vector3
types - Added optional support for serde for a few types, like
Rect
- Removed
SfBool
completely. Now you can just usebool
everywhere. - Once again, a bunch of other various (breaking) changes. Sorry.
v0.16.0
New features
- Implement VertexBuffer
- Add a few previously missing derives to a few types
- Add
system_handle
method toWindow
andRenderWindow
.
Soundness fixes
- Add some thread safety checks for the window module. See #227.
- CircleShape::set_radius now takes &mut self
API improvements
- Add
#[must_use]
attribute to APIs that return things that should not be ignored. - Make a bunch of APIs
const fn
- Allow SfBox to be used in generic contexts, using the
SfResource
trait.
Refactorings/Breaking changes
- Transition various enums that were previously transmuted to associated consts. This avoids unnecessary unsafe code and maps more cleanly to the underlying C API of CSFML. This means a bunch of names are now
UPPER_CASE
instead ofCamelCase
. For exampleKey::Equal
becomesKey::EQUAL
, because it's an associated const. - Remove a few API elements that are deprecated in SFML, like
Key::Return
. UseKey::ENTER
instead. - Network module is removed entirely. It has been broken and unmaintained for a long time, and there are much better alternatives when using Rust, including the standard library.
SfBox
now lives in the crate root, notsystem
.- Due to the thread safety fixes,
Window
/RenderWindow
can only be used on the main thread. They can't be accessed from different threads. - Various minor refactorings/improvements
Fix potential undefined behavior with opaque types
v0.15.1 Bump version number to 0.15.1