use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum PortKind {
Features,
Raster,
Sprite,
Brush,
Scalar,
}
impl fmt::Display for PortKind {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(match self {
PortKind::Features => "features",
PortKind::Raster => "raster",
PortKind::Sprite => "sprite",
PortKind::Brush => "brush",
PortKind::Scalar => "scalar",
})
}
}
#[derive(Debug, Clone)]
pub struct PortSpec {
pub name: &'static str,
pub kind: PortKind,
pub optional: bool,
}
impl PortSpec {
pub const fn new(name: &'static str, kind: PortKind) -> Self {
Self {
name,
kind,
optional: false,
}
}
pub const fn optional(mut self) -> Self {
self.optional = true;
self
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CoordSpace {
Tile,
World,
Inherit,
}