dxplr 0.0.25

Rust wrapper around D3D11, D3D12, DXGI, D2D and DWrite
Documentation
#![allow(dead_code)]

use crate::utility::*;
use winapi::um::d2d1svg::*;

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAspectAlign {
    None = D2D1_SVG_ASPECT_ALIGN_NONE,
    XMinYMin = D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MIN,
    XMidYMin = D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MIN,
    XMaxYMin = D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MIN,
    XMinYMid = D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MID,
    XMidYMid = D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MID,
    XMaxYMid = D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MID,
    XMinYMax = D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MAX,
    XMidYMax = D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MAX,
    XMaxYMax = D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MAX,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAspectScaling {
    Meet = D2D1_SVG_ASPECT_SCALING_MEET,
    Slice = D2D1_SVG_ASPECT_SCALING_SLICE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAttributePODType {
    Float = D2D1_SVG_ATTRIBUTE_POD_TYPE_FLOAT,
    Color = D2D1_SVG_ATTRIBUTE_POD_TYPE_COLOR,
    FillMode = D2D1_SVG_ATTRIBUTE_POD_TYPE_FILL_MODE,
    Display = D2D1_SVG_ATTRIBUTE_POD_TYPE_DISPLAY,
    Overflow = D2D1_SVG_ATTRIBUTE_POD_TYPE_OVERFLOW,
    LineCap = D2D1_SVG_ATTRIBUTE_POD_TYPE_LINE_CAP,
    LineJoin = D2D1_SVG_ATTRIBUTE_POD_TYPE_LINE_JOIN,
    Visibility = D2D1_SVG_ATTRIBUTE_POD_TYPE_VISIBILITY,
    Matrix = D2D1_SVG_ATTRIBUTE_POD_TYPE_MATRIX,
    UnitType = D2D1_SVG_ATTRIBUTE_POD_TYPE_UNIT_TYPE,
    ExtendMode = D2D1_SVG_ATTRIBUTE_POD_TYPE_EXTEND_MODE,
    PreserveAspectRatio = D2D1_SVG_ATTRIBUTE_POD_TYPE_PRESERVE_ASPECT_RATIO,
    ViewBox = D2D1_SVG_ATTRIBUTE_POD_TYPE_VIEWBOX,
    Length = D2D1_SVG_ATTRIBUTE_POD_TYPE_LENGTH,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAttributeStringType {
    SVG = D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
    ID = D2D1_SVG_ATTRIBUTE_STRING_TYPE_ID,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGDisplay {
    Inline = D2D1_SVG_DISPLAY_INLINE,
    None = D2D1_SVG_DISPLAY_NONE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGLengthUnits {
    Number = D2D1_SVG_LENGTH_UNITS_NUMBER,
    Percentage = D2D1_SVG_LENGTH_UNITS_PERCENTAGE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGLineCap {
    Butt = D2D1_SVG_LINE_CAP_BUTT,
    Square = D2D1_SVG_LINE_CAP_SQUARE,
    Round = D2D1_SVG_LINE_CAP_ROUND,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGLineJoin {
    Bevel = D2D1_SVG_LINE_JOIN_BEVEL,
    Miter = D2D1_SVG_LINE_JOIN_MITER,
    Round = D2D1_SVG_LINE_JOIN_ROUND,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGOverflow {
    Visible = D2D1_SVG_OVERFLOW_VISIBLE,
    Hidden = D2D1_SVG_OVERFLOW_HIDDEN,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGPaintType {
    None = D2D1_SVG_PAINT_TYPE_NONE,
    Color = D2D1_SVG_PAINT_TYPE_COLOR,
    CurrentColor = D2D1_SVG_PAINT_TYPE_CURRENT_COLOR,
    URI = D2D1_SVG_PAINT_TYPE_URI,
    URINone = D2D1_SVG_PAINT_TYPE_URI_NONE,
    URIColor = D2D1_SVG_PAINT_TYPE_URI_COLOR,
    URICurrentColor = D2D1_SVG_PAINT_TYPE_URI_CURRENT_COLOR,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGPathCommand {
    ClosePath = D2D1_SVG_PATH_COMMAND_CLOSE_PATH,
    MoveAbsolute = D2D1_SVG_PATH_COMMAND_MOVE_ABSOLUTE,
    MoveRelative = D2D1_SVG_PATH_COMMAND_MOVE_RELATIVE,
    LineAbsolute = D2D1_SVG_PATH_COMMAND_LINE_ABSOLUTE,
    LineRelative = D2D1_SVG_PATH_COMMAND_LINE_RELATIVE,
    CubicAbsolute = D2D1_SVG_PATH_COMMAND_CUBIC_ABSOLUTE,
    CubicRelative = D2D1_SVG_PATH_COMMAND_CUBIC_RELATIVE,
    QuadradicAbsolute = D2D1_SVG_PATH_COMMAND_QUADRADIC_ABSOLUTE,
    QuadradicRelative = D2D1_SVG_PATH_COMMAND_QUADRADIC_RELATIVE,
    ArcAbsolute = D2D1_SVG_PATH_COMMAND_ARC_ABSOLUTE,
    ArcRelative = D2D1_SVG_PATH_COMMAND_ARC_RELATIVE,
    HorizontalAbsolute = D2D1_SVG_PATH_COMMAND_HORIZONTAL_ABSOLUTE,
    HorizontalRelative = D2D1_SVG_PATH_COMMAND_HORIZONTAL_RELATIVE,
    VerticalAbsolute = D2D1_SVG_PATH_COMMAND_VERTICAL_ABSOLUTE,
    VerticalRelative = D2D1_SVG_PATH_COMMAND_VERTICAL_RELATIVE,
    CubicSmoothAbsolute = D2D1_SVG_PATH_COMMAND_CUBIC_SMOOTH_ABSOLUTE,
    CubicSmoothRelative = D2D1_SVG_PATH_COMMAND_CUBIC_SMOOTH_RELATIVE,
    QuadradicSmoothAbsolute = D2D1_SVG_PATH_COMMAND_QUADRADIC_SMOOTH_ABSOLUTE,
    QuadradicSmoothRelative = D2D1_SVG_PATH_COMMAND_QUADRADIC_SMOOTH_RELATIVE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGUnitType {
    UserSpaceOnUse = D2D1_SVG_UNIT_TYPE_USER_SPACE_ON_USE,
    ObjectBoundingBox = D2D1_SVG_UNIT_TYPE_OBJECT_BOUNDING_BOX,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGVisibility {
    Visible = D2D1_SVG_VISIBILITY_VISIBLE,
    Hidden = D2D1_SVG_VISIBILITY_HIDDEN,
}

#[derive(Clone, Debug)]
pub struct SVGLength {
    pub value: f32,
    pub units: SVGLengthUnits,
}
impl SVGLength {
    fn to_c_struct(&self) -> D2D1_SVG_LENGTH {
        D2D1_SVG_LENGTH {
            value: self.value,
            units: self.units as u32,
        }
    }
}

#[derive(Clone, Debug)]
pub struct SVGPreserveAspectRatio {
    pub defer: bool,
    pub align: SVGAspectAlign,
    pub meet_or_slice: SVGAspectScaling,
}
impl SVGPreserveAspectRatio {
    fn to_c_struct(&self) -> D2D1_SVG_PRESERVE_ASPECT_RATIO {
        D2D1_SVG_PRESERVE_ASPECT_RATIO {
            defer: to_BOOL(self.defer),
            align: self.align as u32,
            meetOrSlice: self.meet_or_slice as u32,
        }
    }
}

#[derive(Clone, Debug)]
pub struct SVGViewBox {
    pub x: f32,
    pub y: f32,
    pub width: f32,
    pub height: f32,
}
impl SVGViewBox {
    fn to_c_struct(&self) -> D2D1_SVG_VIEWBOX {
        D2D1_SVG_VIEWBOX {
            x: self.x,
            y: self.y,
            width: self.width,
            height: self.height,
        }
    }
}