fui_core 0.1.0

Core library of FUI MVVM UI Framework
Documentation
use crate::control::ControlContext;

use drawing::primitive::Primitive;

use crate::common::*;
use crate::control::*;
use crate::events::ControlEvent;
use crate::{DrawingContext, EventContext};

pub trait Style<D> {
    fn setup(&mut self, data: &mut D, control_context: &mut ControlContext);

    fn handle_event(
        &mut self,
        data: &mut D,
        control_context: &mut ControlContext,
        drawing_context: &mut dyn DrawingContext,
        event_context: &mut dyn EventContext,
        event: ControlEvent,
    );

    fn measure(
        &mut self,
        data: &mut D,
        control_context: &mut ControlContext,
        drawing_context: &mut dyn DrawingContext,
        size: Size,
    );
    fn set_rect(&mut self, data: &mut D, control_context: &mut ControlContext, rect: Rect);
    fn get_rect(&self, control_context: &ControlContext) -> Rect;

    fn hit_test(&self, data: &D, control_context: &ControlContext, point: Point) -> HitTestResult;

    fn to_primitives(
        &self,
        data: &D,
        control_context: &ControlContext,
        drawing_context: &mut dyn DrawingContext,
    ) -> (Vec<Primitive>, Vec<Primitive>);
}