#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct PixelPoint {
pub x: i16,
pub y: i16,
}
impl PixelPoint {
#[must_use]
pub const fn new(x: i16, y: i16) -> Self {
Self { x, y }
}
}
impl From<(i16, i16)> for PixelPoint {
fn from((x, y): (i16, i16)) -> Self {
Self { x, y }
}
}
impl From<PixelPoint> for (i16, i16) {
fn from(point: PixelPoint) -> Self {
(point.x, point.y)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct PixelSize {
pub width: u16,
pub height: u16,
}
impl PixelSize {
#[must_use]
pub const fn new(width: u16, height: u16) -> Self {
Self { width, height }
}
}
impl From<(u16, u16)> for PixelSize {
fn from((width, height): (u16, u16)) -> Self {
Self { width, height }
}
}
impl From<PixelSize> for (u16, u16) {
fn from(size: PixelSize) -> Self {
(size.width, size.height)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Argb {
pub alpha: u8,
pub red: u8,
pub green: u8,
pub blue: u8,
}
impl Default for Argb {
fn default() -> Self {
Self {
alpha: 255,
red: 0,
green: 0,
blue: 0,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Rgb {
pub r: u8,
pub g: u8,
pub b: u8,
}