#![allow(unused_variables)]
use std::fmt::Debug;
use crate::elements::WidgetComponent;
pub trait WidgetRenderer<T>: Debug {
fn render(&self, widget: &T);
fn post_render(&self, widget: &T) {}
}
pub trait BaseRender
where
Self: AsRef<WidgetComponent>,
{
fn internal_connect(&self) {
}
fn internal_disconnect(&self) {
}
#[inline]
fn scale(&self) -> f32 {
let control = self.as_ref();
if let Some(canvas) = control.canvas.as_ref() {
canvas.scale()
} else {
1.0
}
}
#[inline]
fn sx(&self) -> f32 {
let control = self.as_ref();
if let Some(canvas) = control.canvas.as_ref() {
control.x * canvas.scale()
} else {
control.x
}
}
#[inline]
fn sy(&self) -> f32 {
let control = self.as_ref();
if let Some(canvas) = control.canvas.as_ref() {
control.y * canvas.scale()
} else {
control.y
}
}
#[inline]
fn sw(&self) -> f32 {
let control = self.as_ref();
if let Some(canvas) = control.canvas.as_ref() {
control.w * canvas.scale()
} else {
control.w
}
}
#[inline]
fn sh(&self) -> f32 {
let control = self.as_ref();
if let Some(canvas) = control.canvas.as_ref() {
control.h * canvas.scale()
} else {
control.h
}
}
#[inline]
fn cs(&self, value: f32) -> f32 {
let control = self.as_ref();
if let Some(canvas) = control.canvas.as_ref() {
value * canvas.scale()
} else {
value
}
}
fn onscale(&self, scale: f32, prev: f32) {}
fn onvisible(&self, value: bool) {}
fn ondepth(&self, depth: f32) {}
fn ondestroy(&self) {}
fn onbounds(&self) {}
fn onclip(&self, disable: bool, x: f32, y: f32, w: f32, h: f32) {}
fn onchildadd(&self, control: WidgetComponent) {}
fn onchildremove(&self, control: WidgetComponent) {}
}