use crate::canvas::canvas_frame::Drawable; use crate::util::vertex::{VertexType, ColorVertex3D}; /// #[derive(Debug, Clone)] pub struct Rect { pub verts: VertexType, position: (f32, f32), size: (f32, f32), } /// Container class which implements drawable. impl Rect { /// pub fn new(position: (f32, f32), size: (f32, f32), depth: u32) -> Rect { let normalized_depth = (depth as f32 / 255.0); let verts = vec![ ColorVertex3D{ v_position: [position.0, position.1, normalized_depth], // top left color: [0.0, 1.0, 1.0, 0.5] }, ColorVertex3D{ v_position: [position.0, position.1 + size.1, normalized_depth], // bottom left color: [1.0, 1.0, 1.0, 1.0] }, ColorVertex3D{ v_position: [position.0 + size.0, position.1 + size.1, normalized_depth], // bottom right color: [1.0, 1.0, 1.0, 1.0] }, ColorVertex3D{ v_position: [position.0, position.1, normalized_depth], // top left color: [1.0, 1.0, 1.0, 1.0] }, ColorVertex3D{ v_position: [position.0 + size.0, position.1 + size.1, normalized_depth], // bottom right color: [1.0, 1.0, 1.0, 1.0] }, ColorVertex3D{ v_position: [position.0 + size.0, position.1, normalized_depth], // top right color: [1.0, 1.0, 1.0, 1.0] }, ]; Rect { verts: VertexType::ColorType(verts), position: position, size: size, } } } impl Drawable for Rect { fn get(&self) -> Vec { vec![self.verts.clone()] } }