1extern "C" {
10 fn sprite_type() -> i32;
11 fn sprite_set_depth_write(slf: i64, val: i32);
12 fn sprite_is_depth_write(slf: i64) -> i32;
13 fn sprite_set_alpha_ref(slf: i64, val: f32);
14 fn sprite_get_alpha_ref(slf: i64) -> f32;
15 fn sprite_set_texture_rect(slf: i64, val: i64);
16 fn sprite_get_texture_rect(slf: i64) -> i64;
17 fn sprite_get_texture(slf: i64) -> i64;
18 fn sprite_set_blend_func(slf: i64, val: i64);
19 fn sprite_get_blend_func(slf: i64) -> i64;
20 fn sprite_set_effect(slf: i64, val: i64);
21 fn sprite_get_effect(slf: i64) -> i64;
22 fn sprite_set_uwrap(slf: i64, val: i32);
23 fn sprite_get_uwrap(slf: i64) -> i32;
24 fn sprite_set_vwrap(slf: i64, val: i32);
25 fn sprite_get_vwrap(slf: i64) -> i32;
26 fn sprite_set_filter(slf: i64, val: i32);
27 fn sprite_get_filter(slf: i64) -> i32;
28 fn sprite_set_effect_as_default(slf: i64);
29 fn sprite_new() -> i64;
30 fn sprite_with_texture_rect(texture: i64, texture_rect: i64) -> i64;
31 fn sprite_with_texture(texture: i64) -> i64;
32 fn sprite_with_file(clip_str: i64) -> i64;
33}
34use crate::dora::IObject;
35use crate::dora::INode;
36impl INode for Sprite { }
37pub struct Sprite { raw: i64 }
39crate::dora_object!(Sprite);
40impl ISprite for Sprite { }
41pub trait ISprite: INode {
42 fn set_depth_write(&mut self, val: bool) {
44 unsafe { sprite_set_depth_write(self.raw(), if val { 1 } else { 0 }) };
45 }
46 fn is_depth_write(&self) -> bool {
48 return unsafe { sprite_is_depth_write(self.raw()) != 0 };
49 }
50 fn set_alpha_ref(&mut self, val: f32) {
53 unsafe { sprite_set_alpha_ref(self.raw(), val) };
54 }
55 fn get_alpha_ref(&self) -> f32 {
58 return unsafe { sprite_get_alpha_ref(self.raw()) };
59 }
60 fn set_texture_rect(&mut self, val: &crate::dora::Rect) {
62 unsafe { sprite_set_texture_rect(self.raw(), val.raw()) };
63 }
64 fn get_texture_rect(&self) -> crate::dora::Rect {
66 return unsafe { crate::dora::Rect::from(sprite_get_texture_rect(self.raw())) };
67 }
68 fn get_texture(&self) -> Option<crate::dora::Texture2D> {
70 return unsafe { crate::dora::Texture2D::from(sprite_get_texture(self.raw())) };
71 }
72 fn set_blend_func(&mut self, val: crate::dora::BlendFunc) {
74 unsafe { sprite_set_blend_func(self.raw(), val.to_value()) };
75 }
76 fn get_blend_func(&self) -> crate::dora::BlendFunc {
78 return unsafe { crate::dora::BlendFunc::from(sprite_get_blend_func(self.raw())) };
79 }
80 fn set_effect(&mut self, val: &crate::dora::SpriteEffect) {
82 unsafe { sprite_set_effect(self.raw(), val.raw()) };
83 }
84 fn get_effect(&self) -> crate::dora::SpriteEffect {
86 return unsafe { crate::dora::SpriteEffect::from(sprite_get_effect(self.raw())).unwrap() };
87 }
88 fn set_uwrap(&mut self, val: crate::dora::TextureWrap) {
90 unsafe { sprite_set_uwrap(self.raw(), val as i32) };
91 }
92 fn get_uwrap(&self) -> crate::dora::TextureWrap {
94 return unsafe { core::mem::transmute(sprite_get_uwrap(self.raw())) };
95 }
96 fn set_vwrap(&mut self, val: crate::dora::TextureWrap) {
98 unsafe { sprite_set_vwrap(self.raw(), val as i32) };
99 }
100 fn get_vwrap(&self) -> crate::dora::TextureWrap {
102 return unsafe { core::mem::transmute(sprite_get_vwrap(self.raw())) };
103 }
104 fn set_filter(&mut self, val: crate::dora::TextureFilter) {
106 unsafe { sprite_set_filter(self.raw(), val as i32) };
107 }
108 fn get_filter(&self) -> crate::dora::TextureFilter {
110 return unsafe { core::mem::transmute(sprite_get_filter(self.raw())) };
111 }
112 fn set_effect_as_default(&mut self) {
114 unsafe { sprite_set_effect_as_default(self.raw()); }
115 }
116}
117impl Sprite {
118 pub(crate) fn type_info() -> (i32, fn(i64) -> Option<Box<dyn IObject>>) {
119 (unsafe { sprite_type() }, |raw: i64| -> Option<Box<dyn IObject>> {
120 match raw {
121 0 => None,
122 _ => Some(Box::new(Sprite { raw: raw }))
123 }
124 })
125 }
126 pub fn new() -> Sprite {
132 unsafe { return Sprite { raw: sprite_new() }; }
133 }
134 pub fn with_texture_rect(texture: &crate::dora::Texture2D, texture_rect: &crate::dora::Rect) -> Sprite {
145 unsafe { return Sprite { raw: sprite_with_texture_rect(texture.raw(), texture_rect.raw()) }; }
146 }
147 pub fn with_texture(texture: &crate::dora::Texture2D) -> Sprite {
157 unsafe { return Sprite { raw: sprite_with_texture(texture.raw()) }; }
158 }
159 pub fn with_file(clip_str: &str) -> Option<Sprite> {
169 unsafe { return Sprite::from(sprite_with_file(crate::dora::from_string(clip_str))); }
170 }
171}