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