#[cfg(target_os = "ios")]
use crate::component::Component;
#[cfg(target_os = "ios")]
use crate::vdom::VNode;
#[cfg(target_os = "ios")]
pub struct IOSRenderer {
}
#[cfg(target_os = "ios")]
impl IOSRenderer {
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 = "ios")]
impl super::Renderer for IOSRenderer {
fn render(&mut self, vnode: &VNode) {
self.render(vnode);
}
fn handle_event(&mut self, event: super::Event) {
}
fn update(&mut self) {
}
}
#[cfg(target_os = "ios")]
#[no_mangle]
pub extern "C" fn windjammer_ui_create_renderer() -> *mut IOSRenderer {
Box::into_raw(Box::new(IOSRenderer::new()))
}
#[cfg(target_os = "ios")]
#[no_mangle]
pub extern "C" fn windjammer_ui_render(
renderer: *mut IOSRenderer,
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 = "ios")]
#[no_mangle]
pub extern "C" fn windjammer_ui_destroy_renderer(renderer: *mut IOSRenderer) {
if !renderer.is_null() {
unsafe {
drop(Box::from_raw(renderer));
}
}
}
#[cfg(test)]
mod tests {
#[test]
fn test_ios_platform() {
}
}