polyhorn_android_sys/
geometry.rs1use 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}