1extern "C" {
10 fn rect_release(raw: i64);
11 fn rect_set_origin(slf: i64, val: i64);
12 fn rect_get_origin(slf: i64) -> i64;
13 fn rect_set_size(slf: i64, val: i64);
14 fn rect_get_size(slf: i64) -> i64;
15 fn rect_set_x(slf: i64, val: f32);
16 fn rect_get_x(slf: i64) -> f32;
17 fn rect_set_y(slf: i64, val: f32);
18 fn rect_get_y(slf: i64) -> f32;
19 fn rect_set_width(slf: i64, val: f32);
20 fn rect_get_width(slf: i64) -> f32;
21 fn rect_set_height(slf: i64, val: f32);
22 fn rect_get_height(slf: i64) -> f32;
23 fn rect_set_left(slf: i64, val: f32);
24 fn rect_get_left(slf: i64) -> f32;
25 fn rect_set_right(slf: i64, val: f32);
26 fn rect_get_right(slf: i64) -> f32;
27 fn rect_set_center_x(slf: i64, val: f32);
28 fn rect_get_center_x(slf: i64) -> f32;
29 fn rect_set_center_y(slf: i64, val: f32);
30 fn rect_get_center_y(slf: i64) -> f32;
31 fn rect_set_bottom(slf: i64, val: f32);
32 fn rect_get_bottom(slf: i64) -> f32;
33 fn rect_set_top(slf: i64, val: f32);
34 fn rect_get_top(slf: i64) -> f32;
35 fn rect_set_lower_bound(slf: i64, val: i64);
36 fn rect_get_lower_bound(slf: i64) -> i64;
37 fn rect_set_upper_bound(slf: i64, val: i64);
38 fn rect_get_upper_bound(slf: i64) -> i64;
39 fn rect_set(slf: i64, x: f32, y: f32, width: f32, height: f32);
40 fn rect_contains_point(slf: i64, point: i64) -> i32;
41 fn rect_intersects_rect(slf: i64, rect: i64) -> i32;
42 fn rect_equals(slf: i64, other: i64) -> i32;
43 fn rect_new(origin: i64, size: i64) -> i64;
44 fn rect_zero() -> i64;
45}
46impl PartialEq for Rect {
47 fn eq(&self, other: &Self) -> bool {
57 unsafe { return rect_equals(self.raw(), other.raw()) != 0 }
58 }
59}
60pub struct Rect { raw: i64 }
62impl Drop for Rect {
63 fn drop(&mut self) { unsafe { rect_release(self.raw); } }
64}
65impl Rect {
66 pub(crate) fn raw(&self) -> i64 {
67 self.raw
68 }
69 pub(crate) fn from(raw: i64) -> Rect {
70 Rect { raw: raw }
71 }
72 pub fn set_origin(&mut self, val: &crate::dora::Vec2) {
74 unsafe { rect_set_origin(self.raw(), val.into_i64()) };
75 }
76 pub fn get_origin(&self) -> crate::dora::Vec2 {
78 return unsafe { crate::dora::Vec2::from(rect_get_origin(self.raw())) };
79 }
80 pub fn set_size(&mut self, val: &crate::dora::Size) {
82 unsafe { rect_set_size(self.raw(), val.into_i64()) };
83 }
84 pub fn get_size(&self) -> crate::dora::Size {
86 return unsafe { crate::dora::Size::from(rect_get_size(self.raw())) };
87 }
88 pub fn set_x(&mut self, val: f32) {
90 unsafe { rect_set_x(self.raw(), val) };
91 }
92 pub fn get_x(&self) -> f32 {
94 return unsafe { rect_get_x(self.raw()) };
95 }
96 pub fn set_y(&mut self, val: f32) {
98 unsafe { rect_set_y(self.raw(), val) };
99 }
100 pub fn get_y(&self) -> f32 {
102 return unsafe { rect_get_y(self.raw()) };
103 }
104 pub fn set_width(&mut self, val: f32) {
106 unsafe { rect_set_width(self.raw(), val) };
107 }
108 pub fn get_width(&self) -> f32 {
110 return unsafe { rect_get_width(self.raw()) };
111 }
112 pub fn set_height(&mut self, val: f32) {
114 unsafe { rect_set_height(self.raw(), val) };
115 }
116 pub fn get_height(&self) -> f32 {
118 return unsafe { rect_get_height(self.raw()) };
119 }
120 pub fn set_left(&mut self, val: f32) {
122 unsafe { rect_set_left(self.raw(), val) };
123 }
124 pub fn get_left(&self) -> f32 {
126 return unsafe { rect_get_left(self.raw()) };
127 }
128 pub fn set_right(&mut self, val: f32) {
130 unsafe { rect_set_right(self.raw(), val) };
131 }
132 pub fn get_right(&self) -> f32 {
134 return unsafe { rect_get_right(self.raw()) };
135 }
136 pub fn set_center_x(&mut self, val: f32) {
138 unsafe { rect_set_center_x(self.raw(), val) };
139 }
140 pub fn get_center_x(&self) -> f32 {
142 return unsafe { rect_get_center_x(self.raw()) };
143 }
144 pub fn set_center_y(&mut self, val: f32) {
146 unsafe { rect_set_center_y(self.raw(), val) };
147 }
148 pub fn get_center_y(&self) -> f32 {
150 return unsafe { rect_get_center_y(self.raw()) };
151 }
152 pub fn set_bottom(&mut self, val: f32) {
154 unsafe { rect_set_bottom(self.raw(), val) };
155 }
156 pub fn get_bottom(&self) -> f32 {
158 return unsafe { rect_get_bottom(self.raw()) };
159 }
160 pub fn set_top(&mut self, val: f32) {
162 unsafe { rect_set_top(self.raw(), val) };
163 }
164 pub fn get_top(&self) -> f32 {
166 return unsafe { rect_get_top(self.raw()) };
167 }
168 pub fn set_lower_bound(&mut self, val: &crate::dora::Vec2) {
170 unsafe { rect_set_lower_bound(self.raw(), val.into_i64()) };
171 }
172 pub fn get_lower_bound(&self) -> crate::dora::Vec2 {
174 return unsafe { crate::dora::Vec2::from(rect_get_lower_bound(self.raw())) };
175 }
176 pub fn set_upper_bound(&mut self, val: &crate::dora::Vec2) {
178 unsafe { rect_set_upper_bound(self.raw(), val.into_i64()) };
179 }
180 pub fn get_upper_bound(&self) -> crate::dora::Vec2 {
182 return unsafe { crate::dora::Vec2::from(rect_get_upper_bound(self.raw())) };
183 }
184 pub fn set(&mut self, x: f32, y: f32, width: f32, height: f32) {
193 unsafe { rect_set(self.raw(), x, y, width, height); }
194 }
195 pub fn contains_point(&self, point: &crate::dora::Vec2) -> bool {
205 unsafe { return rect_contains_point(self.raw(), point.into_i64()) != 0; }
206 }
207 pub fn intersects_rect(&self, rect: &crate::dora::Rect) -> bool {
217 unsafe { return rect_intersects_rect(self.raw(), rect.raw()) != 0; }
218 }
219 pub fn new(origin: &crate::dora::Vec2, size: &crate::dora::Size) -> crate::dora::Rect {
230 unsafe { return crate::dora::Rect::from(rect_new(origin.into_i64(), size.into_i64())); }
231 }
232 pub fn zero() -> crate::dora::Rect {
234 unsafe { return crate::dora::Rect::from(rect_zero()); }
235 }
236}