polyhorn-android-sys 0.4.0

Low-level Android bindings for Polyhorn.
Documentation
use jni::objects::JValue;

use super::{Bitmap, Context, Env, Object, Rect, Reference, View};

#[derive(Clone)]
pub struct ImageView {
    reference: Reference,
}

impl ImageView {
    pub fn new(env: &Env, context: impl Into<Context>) -> ImageView {
        unsafe {
            let context = context.into();

            let object = env.call_constructor(
                "com/glacyr/polyhorn/ImageView",
                "(Landroid/content/Context;)V",
                &[JValue::Object(context.as_reference().as_object()).into()],
            );

            ImageView {
                reference: env.retain(object),
            }
        }
    }

    pub fn set_image_bitmap(&mut self, env: &Env, bitmap: &Bitmap) {
        unsafe {
            env.call_method(
                self.reference.as_object(),
                "setImageBitmap",
                "(Landroid/graphics/Bitmap;)V",
                &[JValue::Object(bitmap.as_reference().as_object())],
            );
        }
    }

    pub fn set_frame(&mut self, env: &Env, frame: Rect) {
        unsafe {
            env.call_method(
                self.reference.as_object(),
                "setFrame",
                "(Lcom/glacyr/polyhorn/Rect;)V",
                &[JValue::Object(frame.as_reference().as_object())],
            );
        }
    }

    pub fn to_view(&self) -> View {
        View::from_reference(self.reference.clone())
    }
}