use super::*;
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Camera2D {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub position: Vector2D,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub zoom: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub rotation: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub viewport_width: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub viewport_height: f64,
}
#[derive(Clone, Copy, Data, Debug, New, PartialEq, PartialOrd)]
pub struct Camera3D {
#[get(type(copy))]
#[get_mut(pub(crate))]
pub position: Vector3D,
#[get(type(copy))]
#[get_mut(pub(crate))]
pub target: Vector3D,
#[new(skip)]
#[get(type(copy))]
#[get_mut(pub(crate))]
pub up: Vector3D,
#[new(skip)]
#[get(type(copy))]
#[get_mut(pub(crate))]
pub fov: f64,
#[new(skip)]
#[get(type(copy))]
#[get_mut(pub(crate))]
pub near: f64,
#[new(skip)]
#[get(type(copy))]
#[get_mut(pub(crate))]
pub far: f64,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) viewport_width: f64,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) viewport_height: f64,
}
#[derive(Clone, Data, New)]
pub struct CanvasRenderer {
#[get(pub(crate))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) context: CanvasRenderingContext2d,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) camera: Camera2D,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) quality: RenderQuality,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct LinearGradient {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub start: Vector2D,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub end: Vector2D,
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub stops: Vec<(f64, String)>,
}
#[derive(Clone, Data, Debug, New, PartialEq)]
pub struct RadialGradient {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub inner_center: Vector2D,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub inner_radius: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub outer_center: Vector2D,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub outer_radius: f64,
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub stops: Vec<(f64, String)>,
}
#[derive(Clone, Data, Debug, New, PartialEq, PartialOrd)]
pub struct ShadowConfig {
#[get(pub(crate), type(clone))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) color: String,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) blur: f64,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) offset_x: f64,
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) offset_y: f64,
}
#[derive(Clone, Copy, Data, Debug, Default, Eq, Hash, New, Ord, PartialEq, PartialOrd)]
pub struct RenderLayer {
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub z_index: i32,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub visible: bool,
}
#[derive(Clone, Data, Debug, Default, New)]
pub struct DrawList {
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub commands: Vec<DrawCommand>,
}
#[derive(Clone, Data, New)]
pub struct SsaaCanvas {
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub display_canvas: HtmlCanvasElement,
#[get(pub(crate))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) display_context: CanvasRenderingContext2d,
#[get(pub(crate))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) offscreen_canvas: HtmlCanvasElement,
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub offscreen_context: CanvasRenderingContext2d,
#[new(skip)]
#[get(pub(crate), type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub(crate) quality: RenderQuality,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub width: f64,
#[get(type(copy))]
#[get_mut(pub(crate))]
#[set(pub(crate))]
pub height: f64,
}