avenger 0.0.3

A visualization engine and renderer
Documentation
use crate::marks::arc::ArcMark;
use crate::marks::area::AreaMark;
use crate::marks::group::SceneGroup;
use crate::marks::image::ImageMark;
use crate::marks::line::LineMark;
use crate::marks::path::PathMark;
use crate::marks::rect::RectMark;
use crate::marks::rule::RuleMark;
use crate::marks::symbol::SymbolMark;
use crate::marks::text::TextMark;
use crate::marks::trail::TrailMark;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SceneMark {
    Arc(ArcMark),
    Area(AreaMark),
    Path(PathMark),
    Symbol(SymbolMark),
    Line(LineMark),
    Trail(TrailMark),
    Rect(RectMark),
    Rule(RuleMark),
    Text(Box<TextMark>),
    Image(Box<ImageMark>),
    Group(SceneGroup),
}

impl SceneMark {
    pub fn zindex(&self) -> Option<i32> {
        match self {
            Self::Arc(mark) => mark.zindex,
            Self::Area(mark) => mark.zindex,
            Self::Path(mark) => mark.zindex,
            Self::Symbol(mark) => mark.zindex,
            Self::Line(mark) => mark.zindex,
            Self::Trail(mark) => mark.zindex,
            Self::Rect(mark) => mark.zindex,
            Self::Rule(mark) => mark.zindex,
            Self::Text(mark) => mark.zindex,
            Self::Image(mark) => mark.zindex,
            Self::Group(mark) => mark.zindex,
        }
    }
}