41 lines
797 B
Rust
41 lines
797 B
Rust
|
pub type Line = Vec<(f32, f32, u32)>;
|
||
|
|
||
|
#[derive(Debug, Clone, Copy, Default, PartialEq)]
|
||
|
pub struct Point {
|
||
|
pub x: f32,
|
||
|
pub y: f32,
|
||
|
pub color: Color,
|
||
|
}
|
||
|
|
||
|
#[derive(Debug, Clone, Copy, Default, PartialEq)]
|
||
|
pub struct Color {
|
||
|
pub r: u8,
|
||
|
pub g: u8,
|
||
|
pub b: u8,
|
||
|
}
|
||
|
|
||
|
impl From<Color> for u32 {
|
||
|
fn from(value: Color) -> Self {
|
||
|
let r = value.r as u32;
|
||
|
let g = value.g as u32;
|
||
|
let b = (value.b) as u32;
|
||
|
(r << 16) + (g << 8) + b
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
impl From<(f32, f32, u32)> for Point {
|
||
|
fn from((x, y, color): (f32, f32, u32)) -> Point {
|
||
|
let r = (color >> 16) as u8;
|
||
|
let g = ((color >> 8) & 255) as u8;
|
||
|
let b = (color & 255) as u8;
|
||
|
Point { x, y, color: Color { r, g, b } }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl From<Point> for (f32, f32, u32) {
|
||
|
fn from(pt : Point ) -> (f32, f32, u32) {
|
||
|
(pt.x,pt.y,pt.color.into())
|
||
|
}
|
||
|
}
|