1extern "C" {
10 fn label_type() -> i32;
11 fn label_set_alignment(slf: i64, val: i32);
12 fn label_get_alignment(slf: i64) -> i32;
13 fn label_set_alpha_ref(slf: i64, val: f32);
14 fn label_get_alpha_ref(slf: i64) -> f32;
15 fn label_set_text_width(slf: i64, val: f32);
16 fn label_get_text_width(slf: i64) -> f32;
17 fn label_set_spacing(slf: i64, val: f32);
18 fn label_get_spacing(slf: i64) -> f32;
19 fn label_set_line_gap(slf: i64, val: f32);
20 fn label_get_line_gap(slf: i64) -> f32;
21 fn label_set_outline_color(slf: i64, val: i32);
22 fn label_get_outline_color(slf: i64) -> i32;
23 fn label_set_outline_width(slf: i64, val: f32);
24 fn label_get_outline_width(slf: i64) -> f32;
25 fn label_set_smooth(slf: i64, val: i64);
26 fn label_get_smooth(slf: i64) -> i64;
27 fn label_set_text(slf: i64, val: i64);
28 fn label_get_text(slf: i64) -> i64;
29 fn label_set_blend_func(slf: i64, val: i64);
30 fn label_get_blend_func(slf: i64) -> i64;
31 fn label_set_depth_write(slf: i64, val: i32);
32 fn label_is_depth_write(slf: i64) -> i32;
33 fn label_set_batched(slf: i64, val: i32);
34 fn label_is_batched(slf: i64) -> i32;
35 fn label_set_effect(slf: i64, val: i64);
36 fn label_get_effect(slf: i64) -> i64;
37 fn label_get_character_count(slf: i64) -> i32;
38 fn label_get_character(slf: i64, index: i32) -> i64;
39 fn label_get_automatic_width() -> f32;
40 fn label_new(font_name: i64, font_size: i32, sdf: i32) -> i64;
41 fn label_with_str(font_str: i64) -> i64;
42}
43use crate::dora::IObject;
44use crate::dora::INode;
45impl INode for Label { }
46pub struct Label { raw: i64 }
48crate::dora_object!(Label);
49impl Label {
50 pub(crate) fn type_info() -> (i32, fn(i64) -> Option<Box<dyn IObject>>) {
51 (unsafe { label_type() }, |raw: i64| -> Option<Box<dyn IObject>> {
52 match raw {
53 0 => None,
54 _ => Some(Box::new(Label { raw: raw }))
55 }
56 })
57 }
58 pub fn set_alignment(&mut self, val: crate::dora::TextAlign) {
60 unsafe { label_set_alignment(self.raw(), val as i32) };
61 }
62 pub fn get_alignment(&self) -> crate::dora::TextAlign {
64 return unsafe { core::mem::transmute(label_get_alignment(self.raw())) };
65 }
66 pub fn set_alpha_ref(&mut self, val: f32) {
69 unsafe { label_set_alpha_ref(self.raw(), val) };
70 }
71 pub fn get_alpha_ref(&self) -> f32 {
74 return unsafe { label_get_alpha_ref(self.raw()) };
75 }
76 pub fn set_text_width(&mut self, val: f32) {
80 unsafe { label_set_text_width(self.raw(), val) };
81 }
82 pub fn get_text_width(&self) -> f32 {
86 return unsafe { label_get_text_width(self.raw()) };
87 }
88 pub fn set_spacing(&mut self, val: f32) {
90 unsafe { label_set_spacing(self.raw(), val) };
91 }
92 pub fn get_spacing(&self) -> f32 {
94 return unsafe { label_get_spacing(self.raw()) };
95 }
96 pub fn set_line_gap(&mut self, val: f32) {
98 unsafe { label_set_line_gap(self.raw(), val) };
99 }
100 pub fn get_line_gap(&self) -> f32 {
102 return unsafe { label_get_line_gap(self.raw()) };
103 }
104 pub fn set_outline_color(&mut self, val: &crate::dora::Color) {
106 unsafe { label_set_outline_color(self.raw(), val.to_argb() as i32) };
107 }
108 pub fn get_outline_color(&self) -> crate::dora::Color {
110 return unsafe { crate::dora::Color::from(label_get_outline_color(self.raw())) };
111 }
112 pub fn set_outline_width(&mut self, val: f32) {
114 unsafe { label_set_outline_width(self.raw(), val) };
115 }
116 pub fn get_outline_width(&self) -> f32 {
118 return unsafe { label_get_outline_width(self.raw()) };
119 }
120 pub fn set_smooth(&mut self, val: &crate::dora::Vec2) {
122 unsafe { label_set_smooth(self.raw(), val.into_i64()) };
123 }
124 pub fn get_smooth(&self) -> crate::dora::Vec2 {
126 return unsafe { crate::dora::Vec2::from(label_get_smooth(self.raw())) };
127 }
128 pub fn set_text(&mut self, val: &str) {
130 unsafe { label_set_text(self.raw(), crate::dora::from_string(val)) };
131 }
132 pub fn get_text(&self) -> String {
134 return unsafe { crate::dora::to_string(label_get_text(self.raw())) };
135 }
136 pub fn set_blend_func(&mut self, val: crate::dora::BlendFunc) {
138 unsafe { label_set_blend_func(self.raw(), val.to_value()) };
139 }
140 pub fn get_blend_func(&self) -> crate::dora::BlendFunc {
142 return unsafe { crate::dora::BlendFunc::from(label_get_blend_func(self.raw())) };
143 }
144 pub fn set_depth_write(&mut self, val: bool) {
146 unsafe { label_set_depth_write(self.raw(), if val { 1 } else { 0 }) };
147 }
148 pub fn is_depth_write(&self) -> bool {
150 return unsafe { label_is_depth_write(self.raw()) != 0 };
151 }
152 pub fn set_batched(&mut self, val: bool) {
155 unsafe { label_set_batched(self.raw(), if val { 1 } else { 0 }) };
156 }
157 pub fn is_batched(&self) -> bool {
160 return unsafe { label_is_batched(self.raw()) != 0 };
161 }
162 pub fn set_effect(&mut self, val: &crate::dora::SpriteEffect) {
164 unsafe { label_set_effect(self.raw(), val.raw()) };
165 }
166 pub fn get_effect(&self) -> crate::dora::SpriteEffect {
168 return unsafe { crate::dora::SpriteEffect::from(label_get_effect(self.raw())).unwrap() };
169 }
170 pub fn get_character_count(&self) -> i32 {
172 return unsafe { label_get_character_count(self.raw()) };
173 }
174 pub fn get_character(&mut self, index: i32) -> Option<crate::dora::Sprite> {
184 unsafe { return crate::dora::Sprite::from(label_get_character(self.raw(), index)); }
185 }
186 pub fn get_automatic_width() -> f32 {
188 return unsafe { label_get_automatic_width() };
189 }
190 pub fn new(font_name: &str, font_size: i32, sdf: bool) -> Option<Label> {
202 unsafe { return Label::from(label_new(crate::dora::from_string(font_name), font_size, if sdf { 1 } else { 0 })); }
203 }
204 pub fn with_str(font_str: &str) -> Option<crate::dora::Label> {
214 unsafe { return crate::dora::Label::from(label_with_str(crate::dora::from_string(font_str))); }
215 }
216}