48 lines
1.1 KiB
Rust
48 lines
1.1 KiB
Rust
use crate::{Mask, TextData, Textures, WeakWidget, WidgetId, Widgets, util::TrackedArena};
|
|
|
|
mod active;
|
|
mod cache;
|
|
mod painter;
|
|
mod render_state;
|
|
mod size;
|
|
|
|
pub use active::*;
|
|
pub use painter::Painter;
|
|
pub use render_state::*;
|
|
pub use size::*;
|
|
|
|
#[derive(Default)]
|
|
pub struct UiData {
|
|
pub widgets: Widgets,
|
|
pub textures: Textures,
|
|
pub text: TextData,
|
|
pub masks: TrackedArena<Mask, u32>,
|
|
}
|
|
|
|
pub trait UiRsc {
|
|
fn ui(&self) -> &UiData;
|
|
fn ui_mut(&mut self) -> &mut UiData;
|
|
|
|
#[allow(unused_variables)]
|
|
fn on_add(&mut self, id: WeakWidget) {}
|
|
#[allow(unused_variables)]
|
|
fn on_remove(&mut self, id: WidgetId) {}
|
|
#[allow(unused_variables)]
|
|
fn on_draw(&mut self, active: &ActiveData) {}
|
|
#[allow(unused_variables)]
|
|
fn on_undraw(&mut self, active: &ActiveData) {}
|
|
|
|
fn widgets(&self) -> &Widgets {
|
|
&self.ui().widgets
|
|
}
|
|
fn widgets_mut(&mut self) -> &mut Widgets {
|
|
&mut self.ui_mut().widgets
|
|
}
|
|
fn free(&mut self) {
|
|
while let Some(id) = self.widgets_mut().free_next() {
|
|
self.on_remove(id);
|
|
}
|
|
self.ui_mut().textures.free();
|
|
}
|
|
}
|