blob: 8f6f1e1308e4ad780eafee34029a86377ea04e47 [file] [log] [blame]
use std::borrow::Cow;
use crate::key::{Horizontal, Justification, Order, Stacked, Vertical};
use crate::{Axes, Axis, Color, Display, Grid, LineType, PointType, Terminal};
impl Display<&'static str> for Axis {
fn display(&self) -> &'static str {
match *self {
Axis::BottomX => "x",
Axis::LeftY => "y",
Axis::RightY => "y2",
Axis::TopX => "x2",
}
}
}
impl Display<&'static str> for Axes {
fn display(&self) -> &'static str {
match *self {
Axes::BottomXLeftY => "x1y1",
Axes::BottomXRightY => "x1y2",
Axes::TopXLeftY => "x2y1",
Axes::TopXRightY => "x2y2",
}
}
}
impl Display<Cow<'static, str>> for Color {
fn display(&self) -> Cow<'static, str> {
match *self {
Color::Black => Cow::from("black"),
Color::Blue => Cow::from("blue"),
Color::Cyan => Cow::from("cyan"),
Color::DarkViolet => Cow::from("dark-violet"),
Color::ForestGreen => Cow::from("forest-green"),
Color::Gold => Cow::from("gold"),
Color::Gray => Cow::from("gray"),
Color::Green => Cow::from("green"),
Color::Magenta => Cow::from("magenta"),
Color::Red => Cow::from("red"),
Color::Rgb(r, g, b) => Cow::from(format!("#{:02x}{:02x}{:02x}", r, g, b)),
Color::White => Cow::from("white"),
Color::Yellow => Cow::from("yellow"),
}
}
}
impl Display<&'static str> for Grid {
fn display(&self) -> &'static str {
match *self {
Grid::Major => "",
Grid::Minor => "m",
}
}
}
impl Display<&'static str> for Horizontal {
fn display(&self) -> &'static str {
match *self {
Horizontal::Center => "center",
Horizontal::Left => "left",
Horizontal::Right => "right",
}
}
}
impl Display<&'static str> for Justification {
fn display(&self) -> &'static str {
match *self {
Justification::Left => "Left",
Justification::Right => "Right",
}
}
}
impl Display<&'static str> for LineType {
fn display(&self) -> &'static str {
match *self {
LineType::Dash => "2",
LineType::Dot => "3",
LineType::DotDash => "4",
LineType::DotDotDash => "5",
LineType::SmallDot => "0",
LineType::Solid => "1",
}
}
}
impl Display<&'static str> for Order {
fn display(&self) -> &'static str {
match *self {
Order::TextSample => "noreverse",
Order::SampleText => "reverse",
}
}
}
impl Display<&'static str> for PointType {
fn display(&self) -> &'static str {
match *self {
PointType::Circle => "6",
PointType::FilledCircle => "7",
PointType::FilledSquare => "5",
PointType::FilledTriangle => "9",
PointType::Plus => "1",
PointType::Square => "4",
PointType::Star => "3",
PointType::Triangle => "8",
PointType::X => "2",
}
}
}
impl Display<&'static str> for Stacked {
fn display(&self) -> &'static str {
match *self {
Stacked::Horizontally => "horizontal",
Stacked::Vertically => "vertical",
}
}
}
impl Display<&'static str> for Terminal {
fn display(&self) -> &'static str {
match *self {
Terminal::Svg => "svg dynamic",
}
}
}
impl Display<&'static str> for Vertical {
fn display(&self) -> &'static str {
match *self {
Vertical::Bottom => "bottom",
Vertical::Center => "center",
Vertical::Top => "top",
}
}
}