diff --git a/changelog.md b/changelog.md index 2bf23ac282..676a9ca790 100644 --- a/changelog.md +++ b/changelog.md @@ -10,6 +10,8 @@ enum variants directly in your project, you may be affected. If you only used sd [PR #1150](https://github.com/Rust-SDL2/rust-sdl2/pull/1150) Do not download SDL2 sources when using bundled feature +[PR #1112](https://github.com/Rust-SDL2/rust-sdl2/pull/1150) Add wrapper functions for `SDL_RenderSetIntegerScale` and `SDL_RenderGetIntegerScale` + ### v0.34.5 [PR #1100](https://github.com/Rust-SDL2/rust-sdl2/pull/1100) Added binding for `SDL_GetDisplayUsableBounds` diff --git a/src/sdl2/render.rs b/src/sdl2/render.rs index 45b0304c64..6090dc2c8f 100644 --- a/src/sdl2/render.rs +++ b/src/sdl2/render.rs @@ -1148,6 +1148,32 @@ impl Canvas { } } + /// Sets whether to force integer scales for resolution-independent rendering. + #[doc(alias = "SDL_RenderSetIntegerScale")] + pub fn set_integer_scale(&mut self, scale: bool) -> Result<(), String> { + let ret = unsafe { + sys::SDL_RenderSetIntegerScale( + self.raw(), + if scale { + sys::SDL_bool::SDL_TRUE + } else { + sys::SDL_bool::SDL_FALSE + }, + ) + }; + if ret != 0 { + Err(get_error()) + } else { + Ok(()) + } + } + + /// Gets whether integer scales are forced for resolution-independent rendering. + #[doc(alias = "SDL_RenderGetIntegerScale")] + pub fn integer_scale(&self) -> bool { + unsafe { sys::SDL_RenderGetIntegerScale(self.raw()) == sys::SDL_bool::SDL_TRUE } + } + /// Sets the drawing scale for rendering on the current target. #[doc(alias = "SDL_RenderSetScale")] pub fn set_scale(&mut self, scale_x: f32, scale_y: f32) -> Result<(), String> {