#[cfg(target_os = "android")]
use crate::component::Component;
#[cfg(target_os = "android")]
use crate::vdom::VNode;
#[cfg(target_os = "android")]
pub struct AndroidRenderer {
}
#[cfg(target_os = "android")]
impl AndroidRenderer {
pub fn new() -> Self {
Self {}
}
pub fn render(&mut self, vnode: &VNode) {
match vnode {
VNode::Element(element) => {
}
VNode::Text(text) => {
}
VNode::Component(component) => {
}
VNode::Empty => {
}
}
}
}
#[cfg(target_os = "android")]
impl super::Renderer for AndroidRenderer {
fn render(&mut self, vnode: &VNode) {
self.render(vnode);
}
fn handle_event(&mut self, event: super::Event) {
}
fn update(&mut self) {
}
}
#[cfg(target_os = "android")]
#[no_mangle]
pub extern "C" fn Java_com_windjammer_ui_Renderer_create() -> *mut AndroidRenderer {
Box::into_raw(Box::new(AndroidRenderer::new()))
}
#[cfg(target_os = "android")]
#[no_mangle]
pub extern "C" fn Java_com_windjammer_ui_Renderer_render(
renderer: *mut AndroidRenderer,
component: *const dyn Component,
) {
if renderer.is_null() || component.is_null() {
return;
}
unsafe {
let renderer = &mut *renderer;
let component = &*component;
let vnode = component.render();
renderer.render(&vnode);
}
}
#[cfg(target_os = "android")]
#[no_mangle]
pub extern "C" fn Java_com_windjammer_ui_Renderer_destroy(renderer: *mut AndroidRenderer) {
if !renderer.is_null() {
unsafe {
drop(Box::from_raw(renderer));
}
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_android_platform() {
}
}