polyhorn_android_sys/
geometry.rs

1use jni::objects::JValue;
2
3use super::{Env, Object, Reference};
4
5pub struct Rect {
6    reference: Reference,
7}
8
9impl Rect {
10    pub fn new(env: &Env, x: f32, y: f32, width: f32, height: f32) -> Rect {
11        unsafe {
12            Rect {
13                reference: env.retain(env.call_constructor(
14                    "com/glacyr/polyhorn/Rect",
15                    "(FFFF)V",
16                    &[
17                        JValue::Float(x),
18                        JValue::Float(y),
19                        JValue::Float(width),
20                        JValue::Float(height),
21                    ],
22                )),
23            }
24        }
25    }
26
27    pub fn width(&self, env: &Env) -> f32 {
28        unsafe {
29            match env.call_method(self.reference.as_object(), "getWidth", "()F", &[]) {
30                JValue::Float(value) => value,
31                _ => unreachable!(),
32            }
33        }
34    }
35
36    pub fn height(&self, env: &Env) -> f32 {
37        unsafe {
38            match env.call_method(self.reference.as_object(), "getHeight", "()F", &[]) {
39                JValue::Float(value) => value,
40                _ => unreachable!(),
41            }
42        }
43    }
44}
45
46impl Object for Rect {
47    fn from_reference(reference: Reference) -> Self {
48        Rect { reference }
49    }
50
51    fn as_reference(&self) -> &Reference {
52        &self.reference
53    }
54}