35 lines
755 B
Rust
35 lines
755 B
Rust
|
#[derive(Debug,Clone,Copy)]
|
||
|
pub struct Point {
|
||
|
pub x: f32,
|
||
|
pub y: f32,
|
||
|
pub color: Color
|
||
|
}
|
||
|
|
||
|
#[derive(Debug,Clone,Copy)]
|
||
|
pub struct Color {
|
||
|
r: u8,
|
||
|
g: u8,
|
||
|
b: u8
|
||
|
}
|
||
|
|
||
|
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 helios_dac::Point {
|
||
|
fn from(pt: Point) -> helios_dac::Point {
|
||
|
let x = pt.x.clamp(0.0, 4095.0) as u16;
|
||
|
let y = pt.y.clamp(0.0, 4095.0) as u16;
|
||
|
helios_dac::Point {
|
||
|
coordinate: (x, y).into(),
|
||
|
color: helios_dac::Color::new(pt.color.r, pt.color.g, pt.color.b),
|
||
|
intensity: 0xFF
|
||
|
}
|
||
|
}
|
||
|
}
|