Skip to content

Commit 4076dc9

Browse files
committed
Merge pull request #290 from alexandermorozov/blend-fixes
Blend mode fixes for renderer and texture
2 parents 0725386 + 8e3c7a1 commit 4076dc9

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/sdl2/render.rs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use SdlResult;
88
use std::mem;
99
use std::ptr;
1010
use std::raw;
11-
use libc::{c_int, uint32_t, c_float, c_double, c_void};
11+
use libc::{c_int, c_uint, uint32_t, c_float, c_double, c_void};
1212
use rect::Point;
1313
use rect::Rect;
1414
use std::ffi::c_str_to_bytes;
@@ -189,6 +189,23 @@ impl Renderer {
189189
}
190190
}
191191

192+
pub fn set_blend_mode(&self, blend: BlendMode) -> SdlResult<()> {
193+
let ret = unsafe { ll::SDL_SetRenderDrawBlendMode(self.raw, FromPrimitive::from_i64(blend as i64).unwrap()) };
194+
195+
if ret == 0 { Ok(()) }
196+
else { Err(get_error()) }
197+
}
198+
199+
pub fn get_blend_mode(&self) -> SdlResult<BlendMode> {
200+
let blend: c_uint = 0;
201+
let result = unsafe { ll::SDL_GetRenderDrawBlendMode(self.raw, &blend) == 0 };
202+
if result {
203+
Ok(FromPrimitive::from_i64(blend as i64).unwrap())
204+
} else {
205+
Err(get_error())
206+
}
207+
}
208+
192209
pub fn clear(&self) -> SdlResult<()> {
193210
let ret = unsafe { ll::SDL_RenderClear(self.raw) };
194211
if ret == 0 { Ok(()) }
@@ -573,8 +590,8 @@ impl Texture {
573590
}
574591

575592
pub fn get_blend_mode(&self) -> SdlResult<BlendMode> {
576-
let blend: i64 = 0;
577-
let result = unsafe { ll::SDL_GetTextureBlendMode(self.raw, &FromPrimitive::from_i64(blend as i64).unwrap()) == 0 };
593+
let blend: c_uint = 0;
594+
let result = unsafe { ll::SDL_GetTextureBlendMode(self.raw, &blend) == 0 };
578595
if result {
579596
Ok(FromPrimitive::from_i64(blend as i64).unwrap())
580597
} else {

0 commit comments

Comments
 (0)