use super::formulas::{FormulaOp, GuideDef};
use super::path::{PathCommandDef, PathDef, PathFill};
pub struct TextRectDef {
pub l: &'static str,
pub t: &'static str,
pub r: &'static str,
pub b: &'static str,
}
pub struct PresetDef {
pub adjust_defaults: &'static [(&'static str, i64)],
pub guides: &'static [GuideDef],
pub paths: &'static [PathDef],
pub text_rect: Option<TextRectDef>,
}
macro_rules! gd {
($name:expr, $op:ident, $x:expr, $y:expr, $z:expr) => {
GuideDef {
name: $name,
op: FormulaOp::$op,
x: $x,
y: $y,
z: $z,
}
};
}
pub fn lookup(name: &str) -> Option<&'static PresetDef> {
match name {
"accentBorderCallout1" => Some(&ACCENT_BORDER_CALLOUT1),
"accentBorderCallout2" => Some(&ACCENT_BORDER_CALLOUT2),
"accentBorderCallout3" => Some(&ACCENT_BORDER_CALLOUT3),
"accentCallout1" => Some(&ACCENT_CALLOUT1),
"accentCallout2" => Some(&ACCENT_CALLOUT2),
"accentCallout3" => Some(&ACCENT_CALLOUT3),
"actionButtonBackPrevious" => Some(&ACTION_BUTTON_BACK_PREVIOUS),
"actionButtonBeginning" => Some(&ACTION_BUTTON_BEGINNING),
"actionButtonBlank" => Some(&ACTION_BUTTON_BLANK),
"actionButtonDocument" => Some(&ACTION_BUTTON_DOCUMENT),
"actionButtonEnd" => Some(&ACTION_BUTTON_END),
"actionButtonForwardNext" => Some(&ACTION_BUTTON_FORWARD_NEXT),
"actionButtonHelp" => Some(&ACTION_BUTTON_HELP),
"actionButtonHome" => Some(&ACTION_BUTTON_HOME),
"actionButtonInformation" => Some(&ACTION_BUTTON_INFORMATION),
"actionButtonMovie" => Some(&ACTION_BUTTON_MOVIE),
"actionButtonReturn" => Some(&ACTION_BUTTON_RETURN),
"actionButtonSound" => Some(&ACTION_BUTTON_SOUND),
"arc" => Some(&ARC),
"bentArrow" => Some(&BENT_ARROW),
"bentConnector2" => Some(&BENT_CONNECTOR2),
"bentConnector3" => Some(&BENT_CONNECTOR3),
"bentConnector4" => Some(&BENT_CONNECTOR4),
"bentConnector5" => Some(&BENT_CONNECTOR5),
"bentUpArrow" => Some(&BENT_UP_ARROW),
"bevel" => Some(&BEVEL),
"blockArc" => Some(&BLOCK_ARC),
"borderCallout1" => Some(&BORDER_CALLOUT1),
"borderCallout2" => Some(&BORDER_CALLOUT2),
"borderCallout3" => Some(&BORDER_CALLOUT3),
"bracePair" => Some(&BRACE_PAIR),
"bracketPair" => Some(&BRACKET_PAIR),
"callout1" => Some(&CALLOUT1),
"callout2" => Some(&CALLOUT2),
"callout3" => Some(&CALLOUT3),
"can" => Some(&CAN),
"chartPlus" => Some(&CHART_PLUS),
"chartStar" => Some(&CHART_STAR),
"chartX" => Some(&CHART_X),
"chevron" => Some(&CHEVRON),
"chord" => Some(&CHORD),
"circularArrow" => Some(&CIRCULAR_ARROW),
"cloud" => Some(&CLOUD),
"cloudCallout" => Some(&CLOUD_CALLOUT),
"corner" => Some(&CORNER),
"cornerTabs" => Some(&CORNER_TABS),
"cube" => Some(&CUBE),
"curvedConnector2" => Some(&CURVED_CONNECTOR2),
"curvedConnector3" => Some(&CURVED_CONNECTOR3),
"curvedConnector4" => Some(&CURVED_CONNECTOR4),
"curvedConnector5" => Some(&CURVED_CONNECTOR5),
"curvedDownArrow" => Some(&CURVED_DOWN_ARROW),
"curvedLeftArrow" => Some(&CURVED_LEFT_ARROW),
"curvedRightArrow" => Some(&CURVED_RIGHT_ARROW),
"curvedUpArrow" => Some(&CURVED_UP_ARROW),
"decagon" => Some(&DECAGON),
"diagStripe" => Some(&DIAG_STRIPE),
"diamond" => Some(&DIAMOND),
"dodecagon" => Some(&DODECAGON),
"donut" => Some(&DONUT),
"doubleWave" => Some(&DOUBLE_WAVE),
"downArrow" => Some(&DOWN_ARROW),
"downArrowCallout" => Some(&DOWN_ARROW_CALLOUT),
"ellipse" => Some(&ELLIPSE),
"ellipseRibbon" => Some(&ELLIPSE_RIBBON),
"ellipseRibbon2" => Some(&ELLIPSE_RIBBON2),
"flowChartAlternateProcess" => Some(&FLOW_CHART_ALTERNATE_PROCESS),
"flowChartCollate" => Some(&FLOW_CHART_COLLATE),
"flowChartConnector" => Some(&FLOW_CHART_CONNECTOR),
"flowChartDecision" => Some(&FLOW_CHART_DECISION),
"flowChartDelay" => Some(&FLOW_CHART_DELAY),
"flowChartDisplay" => Some(&FLOW_CHART_DISPLAY),
"flowChartDocument" => Some(&FLOW_CHART_DOCUMENT),
"flowChartExtract" => Some(&FLOW_CHART_EXTRACT),
"flowChartInputOutput" => Some(&FLOW_CHART_INPUT_OUTPUT),
"flowChartInternalStorage" => Some(&FLOW_CHART_INTERNAL_STORAGE),
"flowChartMagneticDisk" => Some(&FLOW_CHART_MAGNETIC_DISK),
"flowChartMagneticDrum" => Some(&FLOW_CHART_MAGNETIC_DRUM),
"flowChartMagneticTape" => Some(&FLOW_CHART_MAGNETIC_TAPE),
"flowChartManualInput" => Some(&FLOW_CHART_MANUAL_INPUT),
"flowChartManualOperation" => Some(&FLOW_CHART_MANUAL_OPERATION),
"flowChartMerge" => Some(&FLOW_CHART_MERGE),
"flowChartMultidocument" => Some(&FLOW_CHART_MULTIDOCUMENT),
"flowChartOfflineStorage" => Some(&FLOW_CHART_OFFLINE_STORAGE),
"flowChartOffpageConnector" => Some(&FLOW_CHART_OFFPAGE_CONNECTOR),
"flowChartOnlineStorage" => Some(&FLOW_CHART_ONLINE_STORAGE),
"flowChartOr" => Some(&FLOW_CHART_OR),
"flowChartPredefinedProcess" => Some(&FLOW_CHART_PREDEFINED_PROCESS),
"flowChartPreparation" => Some(&FLOW_CHART_PREPARATION),
"flowChartProcess" => Some(&FLOW_CHART_PROCESS),
"flowChartPunchedCard" => Some(&FLOW_CHART_PUNCHED_CARD),
"flowChartPunchedTape" => Some(&FLOW_CHART_PUNCHED_TAPE),
"flowChartSort" => Some(&FLOW_CHART_SORT),
"flowChartSummingJunction" => Some(&FLOW_CHART_SUMMING_JUNCTION),
"flowChartTerminator" => Some(&FLOW_CHART_TERMINATOR),
"foldedCorner" => Some(&FOLDED_CORNER),
"frame" => Some(&FRAME),
"funnel" => Some(&FUNNEL),
"gear6" => Some(&GEAR6),
"gear9" => Some(&GEAR9),
"halfFrame" => Some(&HALF_FRAME),
"heart" => Some(&HEART),
"heptagon" => Some(&HEPTAGON),
"hexagon" => Some(&HEXAGON),
"homePlate" => Some(&HOME_PLATE),
"horizontalScroll" => Some(&HORIZONTAL_SCROLL),
"irregularSeal1" => Some(&IRREGULAR_SEAL1),
"irregularSeal2" => Some(&IRREGULAR_SEAL2),
"leftArrow" => Some(&LEFT_ARROW),
"leftArrowCallout" => Some(&LEFT_ARROW_CALLOUT),
"leftBrace" => Some(&LEFT_BRACE),
"leftBracket" => Some(&LEFT_BRACKET),
"leftCircularArrow" => Some(&LEFT_CIRCULAR_ARROW),
"leftRightArrow" => Some(&LEFT_RIGHT_ARROW),
"leftRightArrowCallout" => Some(&LEFT_RIGHT_ARROW_CALLOUT),
"leftRightCircularArrow" => Some(&LEFT_RIGHT_CIRCULAR_ARROW),
"leftRightRibbon" => Some(&LEFT_RIGHT_RIBBON),
"leftRightUpArrow" => Some(&LEFT_RIGHT_UP_ARROW),
"leftUpArrow" => Some(&LEFT_UP_ARROW),
"lightningBolt" => Some(&LIGHTNING_BOLT),
"line" => Some(&LINE),
"lineInv" => Some(&LINE_INV),
"mathDivide" => Some(&MATH_DIVIDE),
"mathEqual" => Some(&MATH_EQUAL),
"mathMinus" => Some(&MATH_MINUS),
"mathMultiply" => Some(&MATH_MULTIPLY),
"mathNotEqual" => Some(&MATH_NOT_EQUAL),
"mathPlus" => Some(&MATH_PLUS),
"moon" => Some(&MOON),
"nonIsoscelesTrapezoid" => Some(&NON_ISOSCELES_TRAPEZOID),
"noSmoking" => Some(&NO_SMOKING),
"notchedRightArrow" => Some(&NOTCHED_RIGHT_ARROW),
"octagon" => Some(&OCTAGON),
"parallelogram" => Some(&PARALLELOGRAM),
"pentagon" => Some(&PENTAGON),
"pie" => Some(&PIE),
"pieWedge" => Some(&PIE_WEDGE),
"plaque" => Some(&PLAQUE),
"plaqueTabs" => Some(&PLAQUE_TABS),
"plus" => Some(&PLUS),
"quadArrow" => Some(&QUAD_ARROW),
"quadArrowCallout" => Some(&QUAD_ARROW_CALLOUT),
"rect" => Some(&RECT),
"ribbon" => Some(&RIBBON),
"ribbon2" => Some(&RIBBON2),
"rightArrow" => Some(&RIGHT_ARROW),
"rightArrowCallout" => Some(&RIGHT_ARROW_CALLOUT),
"rightBrace" => Some(&RIGHT_BRACE),
"rightBracket" => Some(&RIGHT_BRACKET),
"round1Rect" => Some(&ROUND1_RECT),
"round2DiagRect" => Some(&ROUND2_DIAG_RECT),
"round2SameRect" => Some(&ROUND2_SAME_RECT),
"roundRect" => Some(&ROUND_RECT),
"rtTriangle" => Some(&RT_TRIANGLE),
"smileyFace" => Some(&SMILEY_FACE),
"snip1Rect" => Some(&SNIP1_RECT),
"snip2DiagRect" => Some(&SNIP2_DIAG_RECT),
"snip2SameRect" => Some(&SNIP2_SAME_RECT),
"snipRoundRect" => Some(&SNIP_ROUND_RECT),
"squareTabs" => Some(&SQUARE_TABS),
"star10" => Some(&STAR10),
"star12" => Some(&STAR12),
"star16" => Some(&STAR16),
"star24" => Some(&STAR24),
"star32" => Some(&STAR32),
"star4" => Some(&STAR4),
"star5" => Some(&STAR5),
"star6" => Some(&STAR6),
"star7" => Some(&STAR7),
"star8" => Some(&STAR8),
"straightConnector1" => Some(&STRAIGHT_CONNECTOR1),
"stripedRightArrow" => Some(&STRIPED_RIGHT_ARROW),
"sun" => Some(&SUN),
"swooshArrow" => Some(&SWOOSH_ARROW),
"teardrop" => Some(&TEARDROP),
"trapezoid" => Some(&TRAPEZOID),
"triangle" => Some(&TRIANGLE),
"upArrowCallout" => Some(&UP_ARROW_CALLOUT),
"upDownArrow" => Some(&UP_DOWN_ARROW),
"upArrow" => Some(&UP_ARROW),
"upDownArrowCallout" => Some(&UP_DOWN_ARROW_CALLOUT),
"uturnArrow" => Some(&UTURN_ARROW),
"verticalScroll" => Some(&VERTICAL_SCROLL),
"wave" => Some(&WAVE),
"wedgeEllipseCallout" => Some(&WEDGE_ELLIPSE_CALLOUT),
"wedgeRectCallout" => Some(&WEDGE_RECT_CALLOUT),
"wedgeRoundRectCallout" => Some(&WEDGE_ROUND_RECT_CALLOUT),
_ => None,
}
}
static ACCENT_BORDER_CALLOUT1_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACCENT_BORDER_CALLOUT1_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::Close,
PathCommandDef::LineTo { x: "x1", y: "b" },
];
static ACCENT_BORDER_CALLOUT1_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
];
static ACCENT_BORDER_CALLOUT1_PATHS: &[PathDef] = &[
PathDef {
commands: ACCENT_BORDER_CALLOUT1_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: ACCENT_BORDER_CALLOUT1_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACCENT_BORDER_CALLOUT1_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACCENT_BORDER_CALLOUT1_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
];
static ACCENT_BORDER_CALLOUT1: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 112500),
("adj4", -38333),
],
guides: ACCENT_BORDER_CALLOUT1_GUIDES,
paths: ACCENT_BORDER_CALLOUT1_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACCENT_BORDER_CALLOUT2_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACCENT_BORDER_CALLOUT2_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::Close,
PathCommandDef::LineTo { x: "x1", y: "b" },
];
static ACCENT_BORDER_CALLOUT2_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
];
static ACCENT_BORDER_CALLOUT2_PATHS: &[PathDef] = &[
PathDef {
commands: ACCENT_BORDER_CALLOUT2_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: ACCENT_BORDER_CALLOUT2_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACCENT_BORDER_CALLOUT2_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACCENT_BORDER_CALLOUT2_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
];
static ACCENT_BORDER_CALLOUT2: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 112500),
("adj6", -46667),
],
guides: ACCENT_BORDER_CALLOUT2_GUIDES,
paths: ACCENT_BORDER_CALLOUT2_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACCENT_BORDER_CALLOUT3_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACCENT_BORDER_CALLOUT3_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::Close,
PathCommandDef::LineTo { x: "x1", y: "b" },
];
static ACCENT_BORDER_CALLOUT3_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
];
static ACCENT_BORDER_CALLOUT3_PATHS: &[PathDef] = &[
PathDef {
commands: ACCENT_BORDER_CALLOUT3_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: ACCENT_BORDER_CALLOUT3_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACCENT_BORDER_CALLOUT3_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACCENT_BORDER_CALLOUT3_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
gd!("y4", MulDiv, "h", "adj7", "100000"),
gd!("x4", MulDiv, "w", "adj8", "100000"),
];
static ACCENT_BORDER_CALLOUT3: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 100000),
("adj6", -16667),
("adj7", 112963),
("adj8", -8333),
],
guides: ACCENT_BORDER_CALLOUT3_GUIDES,
paths: ACCENT_BORDER_CALLOUT3_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACCENT_CALLOUT1_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACCENT_CALLOUT1_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::Close,
PathCommandDef::LineTo { x: "x1", y: "b" },
];
static ACCENT_CALLOUT1_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
];
static ACCENT_CALLOUT1_PATHS: &[PathDef] = &[
PathDef {
commands: ACCENT_CALLOUT1_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACCENT_CALLOUT1_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACCENT_CALLOUT1_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACCENT_CALLOUT1_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
];
static ACCENT_CALLOUT1: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 112500),
("adj4", -38333),
],
guides: ACCENT_CALLOUT1_GUIDES,
paths: ACCENT_CALLOUT1_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACCENT_CALLOUT2_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACCENT_CALLOUT2_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::Close,
PathCommandDef::LineTo { x: "x1", y: "b" },
];
static ACCENT_CALLOUT2_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
];
static ACCENT_CALLOUT2_PATHS: &[PathDef] = &[
PathDef {
commands: ACCENT_CALLOUT2_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACCENT_CALLOUT2_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACCENT_CALLOUT2_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACCENT_CALLOUT2_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
];
static ACCENT_CALLOUT2: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 112500),
("adj6", -46667),
],
guides: ACCENT_CALLOUT2_GUIDES,
paths: ACCENT_CALLOUT2_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACCENT_CALLOUT3_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACCENT_CALLOUT3_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::Close,
PathCommandDef::LineTo { x: "x1", y: "b" },
];
static ACCENT_CALLOUT3_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
];
static ACCENT_CALLOUT3_PATHS: &[PathDef] = &[
PathDef {
commands: ACCENT_CALLOUT3_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACCENT_CALLOUT3_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACCENT_CALLOUT3_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACCENT_CALLOUT3_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
gd!("y4", MulDiv, "h", "adj7", "100000"),
gd!("x4", MulDiv, "w", "adj8", "100000"),
];
static ACCENT_CALLOUT3: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 100000),
("adj6", -16667),
("adj7", 112963),
("adj8", -8333),
],
guides: ACCENT_CALLOUT3_GUIDES,
paths: ACCENT_CALLOUT3_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_BACK_PREVIOUS_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g11", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BACK_PREVIOUS_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BACK_PREVIOUS_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BACK_PREVIOUS_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BACK_PREVIOUS_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_BACK_PREVIOUS_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_BACK_PREVIOUS_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_BACK_PREVIOUS_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_BACK_PREVIOUS_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_BACK_PREVIOUS_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
];
static ACTION_BUTTON_BACK_PREVIOUS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_BACK_PREVIOUS_GUIDES,
paths: ACTION_BUTTON_BACK_PREVIOUS_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_BEGINNING_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g17", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g16", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::LineTo { x: "g16", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BEGINNING_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g17", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g16", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::LineTo { x: "g16", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BEGINNING_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g17", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g16", y: "g9" },
PathCommandDef::LineTo { x: "g16", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BEGINNING_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BEGINNING_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_BEGINNING_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_BEGINNING_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_BEGINNING_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_BEGINNING_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_BEGINNING_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "1", "8"),
gd!("g15", MulDiv, "g13", "1", "4"),
gd!("g16", AddSub, "g11", "g14", "0"),
gd!("g17", AddSub, "g11", "g15", "0"),
];
static ACTION_BUTTON_BEGINNING: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_BEGINNING_GUIDES,
paths: ACTION_BUTTON_BEGINNING_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_BLANK_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_BLANK_PATHS: &[PathDef] = &[PathDef {
commands: ACTION_BUTTON_BLANK_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static ACTION_BUTTON_BLANK: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: ACTION_BUTTON_BLANK_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_DOCUMENT_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g14", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g15" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_DOCUMENT_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g14", y: "g9" },
PathCommandDef::LineTo { x: "g14", y: "g15" },
PathCommandDef::LineTo { x: "g12", y: "g15" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_DOCUMENT_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g14", y: "g9" },
PathCommandDef::LineTo { x: "g14", y: "g15" },
PathCommandDef::LineTo { x: "g12", y: "g15" },
PathCommandDef::Close,
];
static ACTION_BUTTON_DOCUMENT_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g14", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g15" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g12", y: "g15" },
PathCommandDef::LineTo { x: "g14", y: "g15" },
PathCommandDef::LineTo { x: "g14", y: "g9" },
];
static ACTION_BUTTON_DOCUMENT_P4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_DOCUMENT_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_DOCUMENT_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_DOCUMENT_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_DOCUMENT_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_DOCUMENT_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_DOCUMENT_P4_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_DOCUMENT_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("dx1", MulDiv, "ss", "9", "32"),
gd!("g11", AddSub, "hc", "0", "dx1"),
gd!("g12", AddSub, "hc", "dx1", "0"),
gd!("g13", MulDiv, "ss", "3", "16"),
gd!("g14", AddSub, "g12", "0", "g13"),
gd!("g15", AddSub, "g9", "g13", "0"),
];
static ACTION_BUTTON_DOCUMENT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_DOCUMENT_GUIDES,
paths: ACTION_BUTTON_DOCUMENT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_END_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g16", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g17", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::LineTo { x: "g17", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_END_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g16", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g17", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::LineTo { x: "g17", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_END_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g16", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g17", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g9" },
PathCommandDef::LineTo { x: "g12", y: "g10" },
PathCommandDef::LineTo { x: "g17", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_END_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_END_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_END_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_END_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_END_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_END_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_END_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "3", "4"),
gd!("g15", MulDiv, "g13", "7", "8"),
gd!("g16", AddSub, "g11", "g14", "0"),
gd!("g17", AddSub, "g11", "g15", "0"),
];
static ACTION_BUTTON_END: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_END_GUIDES,
paths: ACTION_BUTTON_END_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_FORWARD_NEXT_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g12", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_FORWARD_NEXT_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g12", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_FORWARD_NEXT_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g12", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "g10" },
PathCommandDef::LineTo { x: "g11", y: "g9" },
PathCommandDef::Close,
];
static ACTION_BUTTON_FORWARD_NEXT_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_FORWARD_NEXT_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_FORWARD_NEXT_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_FORWARD_NEXT_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_FORWARD_NEXT_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_FORWARD_NEXT_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_FORWARD_NEXT_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
];
static ACTION_BUTTON_FORWARD_NEXT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_FORWARD_NEXT_GUIDES,
paths: ACTION_BUTTON_FORWARD_NEXT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_HELP_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g33", y: "g27" },
PathCommandDef::ArcTo {
wr: "g16",
hr: "g16",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "g14",
hr: "g15",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "g41",
hr: "g42",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "g37", y: "g30" },
PathCommandDef::LineTo { x: "g36", y: "g30" },
PathCommandDef::LineTo { x: "g36", y: "g29" },
PathCommandDef::ArcTo {
wr: "g14",
hr: "g15",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "g41",
hr: "g42",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "g14",
hr: "g14",
st_ang: "0",
sw_ang: "-10800000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g31" },
PathCommandDef::ArcTo {
wr: "g42",
hr: "g42",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static ACTION_BUTTON_HELP_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g33", y: "g27" },
PathCommandDef::ArcTo {
wr: "g16",
hr: "g16",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "g14",
hr: "g15",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "g41",
hr: "g42",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "g37", y: "g30" },
PathCommandDef::LineTo { x: "g36", y: "g30" },
PathCommandDef::LineTo { x: "g36", y: "g29" },
PathCommandDef::ArcTo {
wr: "g14",
hr: "g15",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "g41",
hr: "g42",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "g14",
hr: "g14",
st_ang: "0",
sw_ang: "-10800000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g31" },
PathCommandDef::ArcTo {
wr: "g42",
hr: "g42",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static ACTION_BUTTON_HELP_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g33", y: "g27" },
PathCommandDef::ArcTo {
wr: "g16",
hr: "g16",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "g14",
hr: "g15",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "g41",
hr: "g42",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "g37", y: "g30" },
PathCommandDef::LineTo { x: "g36", y: "g30" },
PathCommandDef::LineTo { x: "g36", y: "g29" },
PathCommandDef::ArcTo {
wr: "g14",
hr: "g15",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "g41",
hr: "g42",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "g14",
hr: "g14",
st_ang: "0",
sw_ang: "-10800000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g31" },
PathCommandDef::ArcTo {
wr: "g42",
hr: "g42",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static ACTION_BUTTON_HELP_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_HELP_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_HELP_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_HELP_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_HELP_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_HELP_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_HELP_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "1", "7"),
gd!("g15", MulDiv, "g13", "3", "14"),
gd!("g16", MulDiv, "g13", "2", "7"),
gd!("g19", MulDiv, "g13", "3", "7"),
gd!("g20", MulDiv, "g13", "4", "7"),
gd!("g21", MulDiv, "g13", "17", "28"),
gd!("g23", MulDiv, "g13", "21", "28"),
gd!("g24", MulDiv, "g13", "11", "14"),
gd!("g27", AddSub, "g9", "g16", "0"),
gd!("g29", AddSub, "g9", "g21", "0"),
gd!("g30", AddSub, "g9", "g23", "0"),
gd!("g31", AddSub, "g9", "g24", "0"),
gd!("g33", AddSub, "g11", "g15", "0"),
gd!("g36", AddSub, "g11", "g19", "0"),
gd!("g37", AddSub, "g11", "g20", "0"),
gd!("g41", MulDiv, "g13", "1", "14"),
gd!("g42", MulDiv, "g13", "3", "28"),
];
static ACTION_BUTTON_HELP: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_HELP_GUIDES,
paths: ACTION_BUTTON_HELP_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_HOME_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "vc" },
PathCommandDef::LineTo { x: "g28", y: "vc" },
PathCommandDef::LineTo { x: "g28", y: "g10" },
PathCommandDef::LineTo { x: "g33", y: "g10" },
PathCommandDef::LineTo { x: "g33", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "vc" },
PathCommandDef::LineTo { x: "g32", y: "g26" },
PathCommandDef::LineTo { x: "g32", y: "g24" },
PathCommandDef::LineTo { x: "g31", y: "g24" },
PathCommandDef::LineTo { x: "g31", y: "g25" },
PathCommandDef::Close,
];
static ACTION_BUTTON_HOME_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g32", y: "g26" },
PathCommandDef::LineTo { x: "g32", y: "g24" },
PathCommandDef::LineTo { x: "g31", y: "g24" },
PathCommandDef::LineTo { x: "g31", y: "g25" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g28", y: "vc" },
PathCommandDef::LineTo { x: "g28", y: "g10" },
PathCommandDef::LineTo { x: "g29", y: "g10" },
PathCommandDef::LineTo { x: "g29", y: "g27" },
PathCommandDef::LineTo { x: "g30", y: "g27" },
PathCommandDef::LineTo { x: "g30", y: "g10" },
PathCommandDef::LineTo { x: "g33", y: "g10" },
PathCommandDef::LineTo { x: "g33", y: "vc" },
PathCommandDef::Close,
];
static ACTION_BUTTON_HOME_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "g9" },
PathCommandDef::LineTo { x: "g11", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "vc" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g29", y: "g27" },
PathCommandDef::LineTo { x: "g30", y: "g27" },
PathCommandDef::LineTo { x: "g30", y: "g10" },
PathCommandDef::LineTo { x: "g29", y: "g10" },
PathCommandDef::Close,
];
static ACTION_BUTTON_HOME_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "g9" },
PathCommandDef::LineTo { x: "g31", y: "g25" },
PathCommandDef::LineTo { x: "g31", y: "g24" },
PathCommandDef::LineTo { x: "g32", y: "g24" },
PathCommandDef::LineTo { x: "g32", y: "g26" },
PathCommandDef::LineTo { x: "g12", y: "vc" },
PathCommandDef::LineTo { x: "g33", y: "vc" },
PathCommandDef::LineTo { x: "g33", y: "g10" },
PathCommandDef::LineTo { x: "g28", y: "g10" },
PathCommandDef::LineTo { x: "g28", y: "vc" },
PathCommandDef::LineTo { x: "g11", y: "vc" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g31", y: "g25" },
PathCommandDef::LineTo { x: "g32", y: "g26" },
PathCommandDef::MoveTo { x: "g33", y: "vc" },
PathCommandDef::LineTo { x: "g28", y: "vc" },
PathCommandDef::MoveTo { x: "g29", y: "g10" },
PathCommandDef::LineTo { x: "g29", y: "g27" },
PathCommandDef::LineTo { x: "g30", y: "g27" },
PathCommandDef::LineTo { x: "g30", y: "g10" },
];
static ACTION_BUTTON_HOME_P4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_HOME_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_HOME_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_HOME_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_HOME_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_HOME_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_HOME_P4_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_HOME_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "1", "16"),
gd!("g15", MulDiv, "g13", "1", "8"),
gd!("g16", MulDiv, "g13", "3", "16"),
gd!("g17", MulDiv, "g13", "5", "16"),
gd!("g18", MulDiv, "g13", "7", "16"),
gd!("g19", MulDiv, "g13", "9", "16"),
gd!("g20", MulDiv, "g13", "11", "16"),
gd!("g21", MulDiv, "g13", "3", "4"),
gd!("g22", MulDiv, "g13", "13", "16"),
gd!("g23", MulDiv, "g13", "7", "8"),
gd!("g24", AddSub, "g9", "g14", "0"),
gd!("g25", AddSub, "g9", "g16", "0"),
gd!("g26", AddSub, "g9", "g17", "0"),
gd!("g27", AddSub, "g9", "g21", "0"),
gd!("g28", AddSub, "g11", "g15", "0"),
gd!("g29", AddSub, "g11", "g18", "0"),
gd!("g30", AddSub, "g11", "g19", "0"),
gd!("g31", AddSub, "g11", "g20", "0"),
gd!("g32", AddSub, "g11", "g22", "0"),
gd!("g33", AddSub, "g11", "g23", "0"),
];
static ACTION_BUTTON_HOME: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_HOME_GUIDES,
paths: ACTION_BUTTON_HOME_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_INFORMATION_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g9" },
PathCommandDef::ArcTo {
wr: "dx2",
hr: "dx2",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static ACTION_BUTTON_INFORMATION_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "g9" },
PathCommandDef::ArcTo {
wr: "dx2",
hr: "dx2",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g25" },
PathCommandDef::ArcTo {
wr: "g38",
hr: "g38",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::MoveTo { x: "g32", y: "g28" },
PathCommandDef::LineTo { x: "g32", y: "g29" },
PathCommandDef::LineTo { x: "g34", y: "g29" },
PathCommandDef::LineTo { x: "g34", y: "g30" },
PathCommandDef::LineTo { x: "g32", y: "g30" },
PathCommandDef::LineTo { x: "g32", y: "g31" },
PathCommandDef::LineTo { x: "g37", y: "g31" },
PathCommandDef::LineTo { x: "g37", y: "g30" },
PathCommandDef::LineTo { x: "g35", y: "g30" },
PathCommandDef::LineTo { x: "g35", y: "g28" },
PathCommandDef::Close,
];
static ACTION_BUTTON_INFORMATION_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "g25" },
PathCommandDef::ArcTo {
wr: "g38",
hr: "g38",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::MoveTo { x: "g32", y: "g28" },
PathCommandDef::LineTo { x: "g35", y: "g28" },
PathCommandDef::LineTo { x: "g35", y: "g30" },
PathCommandDef::LineTo { x: "g37", y: "g30" },
PathCommandDef::LineTo { x: "g37", y: "g31" },
PathCommandDef::LineTo { x: "g32", y: "g31" },
PathCommandDef::LineTo { x: "g32", y: "g30" },
PathCommandDef::LineTo { x: "g34", y: "g30" },
PathCommandDef::LineTo { x: "g34", y: "g29" },
PathCommandDef::LineTo { x: "g32", y: "g29" },
PathCommandDef::Close,
];
static ACTION_BUTTON_INFORMATION_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "g9" },
PathCommandDef::ArcTo {
wr: "dx2",
hr: "dx2",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "g25" },
PathCommandDef::ArcTo {
wr: "g38",
hr: "g38",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::MoveTo { x: "g32", y: "g28" },
PathCommandDef::LineTo { x: "g35", y: "g28" },
PathCommandDef::LineTo { x: "g35", y: "g30" },
PathCommandDef::LineTo { x: "g37", y: "g30" },
PathCommandDef::LineTo { x: "g37", y: "g31" },
PathCommandDef::LineTo { x: "g32", y: "g31" },
PathCommandDef::LineTo { x: "g32", y: "g30" },
PathCommandDef::LineTo { x: "g34", y: "g30" },
PathCommandDef::LineTo { x: "g34", y: "g29" },
PathCommandDef::LineTo { x: "g32", y: "g29" },
PathCommandDef::Close,
];
static ACTION_BUTTON_INFORMATION_P4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_INFORMATION_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_INFORMATION_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_INFORMATION_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_INFORMATION_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_INFORMATION_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_INFORMATION_P4_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_INFORMATION_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "1", "32"),
gd!("g17", MulDiv, "g13", "5", "16"),
gd!("g18", MulDiv, "g13", "3", "8"),
gd!("g19", MulDiv, "g13", "13", "32"),
gd!("g20", MulDiv, "g13", "19", "32"),
gd!("g22", MulDiv, "g13", "11", "16"),
gd!("g23", MulDiv, "g13", "13", "16"),
gd!("g24", MulDiv, "g13", "7", "8"),
gd!("g25", AddSub, "g9", "g14", "0"),
gd!("g28", AddSub, "g9", "g17", "0"),
gd!("g29", AddSub, "g9", "g18", "0"),
gd!("g30", AddSub, "g9", "g23", "0"),
gd!("g31", AddSub, "g9", "g24", "0"),
gd!("g32", AddSub, "g11", "g17", "0"),
gd!("g34", AddSub, "g11", "g19", "0"),
gd!("g35", AddSub, "g11", "g20", "0"),
gd!("g37", AddSub, "g11", "g22", "0"),
gd!("g38", MulDiv, "g13", "3", "32"),
];
static ACTION_BUTTON_INFORMATION: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_INFORMATION_GUIDES,
paths: ACTION_BUTTON_INFORMATION_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_MOVIE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g11", y: "g39" },
PathCommandDef::LineTo { x: "g11", y: "g44" },
PathCommandDef::LineTo { x: "g31", y: "g44" },
PathCommandDef::LineTo { x: "g32", y: "g43" },
PathCommandDef::LineTo { x: "g33", y: "g43" },
PathCommandDef::LineTo { x: "g33", y: "g47" },
PathCommandDef::LineTo { x: "g35", y: "g47" },
PathCommandDef::LineTo { x: "g35", y: "g45" },
PathCommandDef::LineTo { x: "g36", y: "g45" },
PathCommandDef::LineTo { x: "g38", y: "g46" },
PathCommandDef::LineTo { x: "g12", y: "g46" },
PathCommandDef::LineTo { x: "g12", y: "g41" },
PathCommandDef::LineTo { x: "g38", y: "g41" },
PathCommandDef::LineTo { x: "g37", y: "g42" },
PathCommandDef::LineTo { x: "g35", y: "g42" },
PathCommandDef::LineTo { x: "g35", y: "g41" },
PathCommandDef::LineTo { x: "g34", y: "g40" },
PathCommandDef::LineTo { x: "g32", y: "g40" },
PathCommandDef::LineTo { x: "g31", y: "g39" },
PathCommandDef::Close,
];
static ACTION_BUTTON_MOVIE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "g39" },
PathCommandDef::LineTo { x: "g11", y: "g44" },
PathCommandDef::LineTo { x: "g31", y: "g44" },
PathCommandDef::LineTo { x: "g32", y: "g43" },
PathCommandDef::LineTo { x: "g33", y: "g43" },
PathCommandDef::LineTo { x: "g33", y: "g47" },
PathCommandDef::LineTo { x: "g35", y: "g47" },
PathCommandDef::LineTo { x: "g35", y: "g45" },
PathCommandDef::LineTo { x: "g36", y: "g45" },
PathCommandDef::LineTo { x: "g38", y: "g46" },
PathCommandDef::LineTo { x: "g12", y: "g46" },
PathCommandDef::LineTo { x: "g12", y: "g41" },
PathCommandDef::LineTo { x: "g38", y: "g41" },
PathCommandDef::LineTo { x: "g37", y: "g42" },
PathCommandDef::LineTo { x: "g35", y: "g42" },
PathCommandDef::LineTo { x: "g35", y: "g41" },
PathCommandDef::LineTo { x: "g34", y: "g40" },
PathCommandDef::LineTo { x: "g32", y: "g40" },
PathCommandDef::LineTo { x: "g31", y: "g39" },
PathCommandDef::Close,
];
static ACTION_BUTTON_MOVIE_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "g39" },
PathCommandDef::LineTo { x: "g31", y: "g39" },
PathCommandDef::LineTo { x: "g32", y: "g40" },
PathCommandDef::LineTo { x: "g34", y: "g40" },
PathCommandDef::LineTo { x: "g35", y: "g41" },
PathCommandDef::LineTo { x: "g35", y: "g42" },
PathCommandDef::LineTo { x: "g37", y: "g42" },
PathCommandDef::LineTo { x: "g38", y: "g41" },
PathCommandDef::LineTo { x: "g12", y: "g41" },
PathCommandDef::LineTo { x: "g12", y: "g46" },
PathCommandDef::LineTo { x: "g38", y: "g46" },
PathCommandDef::LineTo { x: "g36", y: "g45" },
PathCommandDef::LineTo { x: "g35", y: "g45" },
PathCommandDef::LineTo { x: "g35", y: "g47" },
PathCommandDef::LineTo { x: "g33", y: "g47" },
PathCommandDef::LineTo { x: "g33", y: "g43" },
PathCommandDef::LineTo { x: "g32", y: "g43" },
PathCommandDef::LineTo { x: "g31", y: "g44" },
PathCommandDef::LineTo { x: "g11", y: "g44" },
PathCommandDef::Close,
];
static ACTION_BUTTON_MOVIE_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_MOVIE_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_MOVIE_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_MOVIE_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_MOVIE_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_MOVIE_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_MOVIE_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "1455", "21600"),
gd!("g15", MulDiv, "g13", "1905", "21600"),
gd!("g16", MulDiv, "g13", "2325", "21600"),
gd!("g17", MulDiv, "g13", "16155", "21600"),
gd!("g18", MulDiv, "g13", "17010", "21600"),
gd!("g19", MulDiv, "g13", "19335", "21600"),
gd!("g20", MulDiv, "g13", "19725", "21600"),
gd!("g21", MulDiv, "g13", "20595", "21600"),
gd!("g22", MulDiv, "g13", "5280", "21600"),
gd!("g23", MulDiv, "g13", "5730", "21600"),
gd!("g24", MulDiv, "g13", "6630", "21600"),
gd!("g25", MulDiv, "g13", "7492", "21600"),
gd!("g26", MulDiv, "g13", "9067", "21600"),
gd!("g27", MulDiv, "g13", "9555", "21600"),
gd!("g28", MulDiv, "g13", "13342", "21600"),
gd!("g29", MulDiv, "g13", "14580", "21600"),
gd!("g30", MulDiv, "g13", "15592", "21600"),
gd!("g31", AddSub, "g11", "g14", "0"),
gd!("g32", AddSub, "g11", "g15", "0"),
gd!("g33", AddSub, "g11", "g16", "0"),
gd!("g34", AddSub, "g11", "g17", "0"),
gd!("g35", AddSub, "g11", "g18", "0"),
gd!("g36", AddSub, "g11", "g19", "0"),
gd!("g37", AddSub, "g11", "g20", "0"),
gd!("g38", AddSub, "g11", "g21", "0"),
gd!("g39", AddSub, "g9", "g22", "0"),
gd!("g40", AddSub, "g9", "g23", "0"),
gd!("g41", AddSub, "g9", "g24", "0"),
gd!("g42", AddSub, "g9", "g25", "0"),
gd!("g43", AddSub, "g9", "g26", "0"),
gd!("g44", AddSub, "g9", "g27", "0"),
gd!("g45", AddSub, "g9", "g28", "0"),
gd!("g46", AddSub, "g9", "g29", "0"),
gd!("g47", AddSub, "g9", "g30", "0"),
gd!("g48", AddSub, "g9", "g31", "0"),
];
static ACTION_BUTTON_MOVIE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_MOVIE_GUIDES,
paths: ACTION_BUTTON_MOVIE_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_RETURN_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g12", y: "g21" },
PathCommandDef::LineTo { x: "g23", y: "g9" },
PathCommandDef::LineTo { x: "hc", y: "g21" },
PathCommandDef::LineTo { x: "g24", y: "g21" },
PathCommandDef::LineTo { x: "g24", y: "g20" },
PathCommandDef::ArcTo {
wr: "g27",
hr: "g27",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "g25", y: "g19" },
PathCommandDef::ArcTo {
wr: "g27",
hr: "g27",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "g26", y: "g21" },
PathCommandDef::LineTo { x: "g11", y: "g21" },
PathCommandDef::LineTo { x: "g11", y: "g20" },
PathCommandDef::ArcTo {
wr: "g17",
hr: "g17",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "g10" },
PathCommandDef::ArcTo {
wr: "g17",
hr: "g17",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "g22", y: "g21" },
PathCommandDef::Close,
];
static ACTION_BUTTON_RETURN_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g12", y: "g21" },
PathCommandDef::LineTo { x: "g23", y: "g9" },
PathCommandDef::LineTo { x: "hc", y: "g21" },
PathCommandDef::LineTo { x: "g24", y: "g21" },
PathCommandDef::LineTo { x: "g24", y: "g20" },
PathCommandDef::ArcTo {
wr: "g27",
hr: "g27",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "g25", y: "g19" },
PathCommandDef::ArcTo {
wr: "g27",
hr: "g27",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "g26", y: "g21" },
PathCommandDef::LineTo { x: "g11", y: "g21" },
PathCommandDef::LineTo { x: "g11", y: "g20" },
PathCommandDef::ArcTo {
wr: "g17",
hr: "g17",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "g10" },
PathCommandDef::ArcTo {
wr: "g17",
hr: "g17",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "g22", y: "g21" },
PathCommandDef::Close,
];
static ACTION_BUTTON_RETURN_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g12", y: "g21" },
PathCommandDef::LineTo { x: "g22", y: "g21" },
PathCommandDef::LineTo { x: "g22", y: "g20" },
PathCommandDef::ArcTo {
wr: "g17",
hr: "g17",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "g25", y: "g10" },
PathCommandDef::ArcTo {
wr: "g17",
hr: "g17",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "g11", y: "g21" },
PathCommandDef::LineTo { x: "g26", y: "g21" },
PathCommandDef::LineTo { x: "g26", y: "g20" },
PathCommandDef::ArcTo {
wr: "g27",
hr: "g27",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "g19" },
PathCommandDef::ArcTo {
wr: "g27",
hr: "g27",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "g24", y: "g21" },
PathCommandDef::LineTo { x: "hc", y: "g21" },
PathCommandDef::LineTo { x: "g23", y: "g9" },
PathCommandDef::Close,
];
static ACTION_BUTTON_RETURN_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_RETURN_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_RETURN_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_RETURN_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_RETURN_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_RETURN_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_RETURN_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "7", "8"),
gd!("g15", MulDiv, "g13", "3", "4"),
gd!("g16", MulDiv, "g13", "5", "8"),
gd!("g17", MulDiv, "g13", "3", "8"),
gd!("g18", MulDiv, "g13", "1", "4"),
gd!("g19", AddSub, "g9", "g15", "0"),
gd!("g20", AddSub, "g9", "g16", "0"),
gd!("g21", AddSub, "g9", "g18", "0"),
gd!("g22", AddSub, "g11", "g14", "0"),
gd!("g23", AddSub, "g11", "g15", "0"),
gd!("g24", AddSub, "g11", "g16", "0"),
gd!("g25", AddSub, "g11", "g17", "0"),
gd!("g26", AddSub, "g11", "g18", "0"),
gd!("g27", MulDiv, "g13", "1", "8"),
];
static ACTION_BUTTON_RETURN: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_RETURN_GUIDES,
paths: ACTION_BUTTON_RETURN_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ACTION_BUTTON_SOUND_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g11", y: "g21" },
PathCommandDef::LineTo { x: "g11", y: "g22" },
PathCommandDef::LineTo { x: "g24", y: "g22" },
PathCommandDef::LineTo { x: "g25", y: "g10" },
PathCommandDef::LineTo { x: "g25", y: "g9" },
PathCommandDef::LineTo { x: "g24", y: "g21" },
PathCommandDef::Close,
];
static ACTION_BUTTON_SOUND_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "g21" },
PathCommandDef::LineTo { x: "g11", y: "g22" },
PathCommandDef::LineTo { x: "g24", y: "g22" },
PathCommandDef::LineTo { x: "g25", y: "g10" },
PathCommandDef::LineTo { x: "g25", y: "g9" },
PathCommandDef::LineTo { x: "g24", y: "g21" },
PathCommandDef::Close,
];
static ACTION_BUTTON_SOUND_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "g11", y: "g21" },
PathCommandDef::LineTo { x: "g24", y: "g21" },
PathCommandDef::LineTo { x: "g25", y: "g9" },
PathCommandDef::LineTo { x: "g25", y: "g10" },
PathCommandDef::LineTo { x: "g24", y: "g22" },
PathCommandDef::LineTo { x: "g11", y: "g22" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "g26", y: "g21" },
PathCommandDef::LineTo { x: "g12", y: "g20" },
PathCommandDef::MoveTo { x: "g26", y: "vc" },
PathCommandDef::LineTo { x: "g12", y: "vc" },
PathCommandDef::MoveTo { x: "g26", y: "g22" },
PathCommandDef::LineTo { x: "g12", y: "g23" },
];
static ACTION_BUTTON_SOUND_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ACTION_BUTTON_SOUND_PATHS: &[PathDef] = &[
PathDef {
commands: ACTION_BUTTON_SOUND_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_SOUND_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ACTION_BUTTON_SOUND_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: ACTION_BUTTON_SOUND_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ACTION_BUTTON_SOUND_GUIDES: &[GuideDef] = &[
gd!("dx2", MulDiv, "ss", "3", "8"),
gd!("g9", AddSub, "vc", "0", "dx2"),
gd!("g10", AddSub, "vc", "dx2", "0"),
gd!("g11", AddSub, "hc", "0", "dx2"),
gd!("g12", AddSub, "hc", "dx2", "0"),
gd!("g13", MulDiv, "ss", "3", "4"),
gd!("g14", MulDiv, "g13", "1", "8"),
gd!("g15", MulDiv, "g13", "5", "16"),
gd!("g16", MulDiv, "g13", "5", "8"),
gd!("g17", MulDiv, "g13", "11", "16"),
gd!("g18", MulDiv, "g13", "3", "4"),
gd!("g19", MulDiv, "g13", "7", "8"),
gd!("g20", AddSub, "g9", "g14", "0"),
gd!("g21", AddSub, "g9", "g15", "0"),
gd!("g22", AddSub, "g9", "g17", "0"),
gd!("g23", AddSub, "g9", "g19", "0"),
gd!("g24", AddSub, "g11", "g15", "0"),
gd!("g25", AddSub, "g11", "g16", "0"),
gd!("g26", AddSub, "g11", "g18", "0"),
];
static ACTION_BUTTON_SOUND: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ACTION_BUTTON_SOUND_GUIDES,
paths: ACTION_BUTTON_SOUND_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static ARC_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "hc", y: "vc" },
PathCommandDef::Close,
];
static ARC_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "stAng",
sw_ang: "swAng",
},
];
static ARC_PATHS: &[PathDef] = &[
PathDef {
commands: ARC_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ARC_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ARC_GUIDES: &[GuideDef] = &[
gd!("stAng", Pin, "0", "adj1", "21599999"),
gd!("enAng", Pin, "0", "adj2", "21599999"),
gd!("sw11", AddSub, "enAng", "0", "stAng"),
gd!("sw12", AddSub, "sw11", "21600000", "0"),
gd!("swAng", IfElse, "sw11", "sw11", "sw12"),
gd!("wt1", Sin, "wd2", "stAng", ""),
gd!("ht1", Cos, "hd2", "stAng", ""),
gd!("dx1", CosAtan2, "wd2", "ht1", "wt1"),
gd!("dy1", SinAtan2, "hd2", "ht1", "wt1"),
gd!("wt2", Sin, "wd2", "enAng", ""),
gd!("ht2", Cos, "hd2", "enAng", ""),
gd!("dx2", CosAtan2, "wd2", "ht2", "wt2"),
gd!("dy2", SinAtan2, "hd2", "ht2", "wt2"),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "dy1", "0"),
gd!("x2", AddSub, "hc", "dx2", "0"),
gd!("y2", AddSub, "vc", "dy2", "0"),
gd!("sw0", AddSub, "21600000", "0", "stAng"),
gd!("da1", AddSub, "swAng", "0", "sw0"),
gd!("g1", Max, "x1", "x2", ""),
gd!("ir", IfElse, "da1", "r", "g1"),
gd!("sw1", AddSub, "cd4", "0", "stAng"),
gd!("sw2", AddSub, "27000000", "0", "stAng"),
gd!("sw3", IfElse, "sw1", "sw1", "sw2"),
gd!("da2", AddSub, "swAng", "0", "sw3"),
gd!("g5", Max, "y1", "y2", ""),
gd!("ib", IfElse, "da2", "b", "g5"),
gd!("sw4", AddSub, "cd2", "0", "stAng"),
gd!("sw5", AddSub, "32400000", "0", "stAng"),
gd!("sw6", IfElse, "sw4", "sw4", "sw5"),
gd!("da3", AddSub, "swAng", "0", "sw6"),
gd!("g9", Min, "x1", "x2", ""),
gd!("il", IfElse, "da3", "l", "g9"),
gd!("sw7", AddSub, "3cd4", "0", "stAng"),
gd!("sw8", AddSub, "37800000", "0", "stAng"),
gd!("sw9", IfElse, "sw7", "sw7", "sw8"),
gd!("da4", AddSub, "swAng", "0", "sw9"),
gd!("g13", Min, "y1", "y2", ""),
gd!("it", IfElse, "da4", "t", "g13"),
gd!("cang1", AddSub, "stAng", "0", "cd4"),
gd!("cang2", AddSub, "enAng", "cd4", "0"),
gd!("cang3", AddDiv, "cang1", "cang2", "2"),
];
static ARC: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16200000), ("adj2", 0)],
guides: ARC_GUIDES,
paths: ARC_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static BENT_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "l", y: "y5" },
PathCommandDef::ArcTo {
wr: "bd",
hr: "bd",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x4", y: "dh2" },
PathCommandDef::LineTo { x: "x4", y: "t" },
PathCommandDef::LineTo { x: "r", y: "aw2" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::ArcTo {
wr: "bd2",
hr: "bd2",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "th", y: "b" },
PathCommandDef::Close,
];
static BENT_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: BENT_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static BENT_ARROW_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("a3", Pin, "0", "adj3", "50000"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("aw2", MulDiv, "ss", "a2", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("dh2", AddSub, "aw2", "0", "th2"),
gd!("ah", MulDiv, "ss", "a3", "100000"),
gd!("bw", AddSub, "r", "0", "ah"),
gd!("bh", AddSub, "b", "0", "dh2"),
gd!("bs", Min, "bw", "bh", ""),
gd!("maxAdj4", MulDiv, "100000", "bs", "ss"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("bd", MulDiv, "ss", "a4", "100000"),
gd!("bd3", AddSub, "bd", "0", "th"),
gd!("bd2", Max, "bd3", "0", ""),
gd!("x3", AddSub, "th", "bd2", "0"),
gd!("x4", AddSub, "r", "0", "ah"),
gd!("y3", AddSub, "dh2", "th", "0"),
gd!("y4", AddSub, "y3", "dh2", "0"),
gd!("y5", AddSub, "dh2", "bd", "0"),
gd!("y6", AddSub, "y3", "bd2", "0"),
];
static BENT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 43750),
],
guides: BENT_ARROW_GUIDES,
paths: BENT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BENT_CONNECTOR2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
];
static BENT_CONNECTOR2_PATHS: &[PathDef] = &[PathDef {
commands: BENT_CONNECTOR2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static BENT_CONNECTOR2: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: BENT_CONNECTOR2_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BENT_CONNECTOR3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "r", y: "b" },
];
static BENT_CONNECTOR3_PATHS: &[PathDef] = &[PathDef {
commands: BENT_CONNECTOR3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static BENT_CONNECTOR3_GUIDES: &[GuideDef] = &[gd!("x1", MulDiv, "w", "adj1", "100000")];
static BENT_CONNECTOR3: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000)],
guides: BENT_CONNECTOR3_GUIDES,
paths: BENT_CONNECTOR3_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BENT_CONNECTOR4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "b" },
];
static BENT_CONNECTOR4_PATHS: &[PathDef] = &[PathDef {
commands: BENT_CONNECTOR4_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static BENT_CONNECTOR4_GUIDES: &[GuideDef] = &[
gd!("x1", MulDiv, "w", "adj1", "100000"),
gd!("x2", AddDiv, "x1", "r", "2"),
gd!("y2", MulDiv, "h", "adj2", "100000"),
gd!("y1", AddDiv, "t", "y2", "2"),
];
static BENT_CONNECTOR4: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: BENT_CONNECTOR4_GUIDES,
paths: BENT_CONNECTOR4_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BENT_CONNECTOR5_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "b" },
PathCommandDef::LineTo { x: "r", y: "b" },
];
static BENT_CONNECTOR5_PATHS: &[PathDef] = &[PathDef {
commands: BENT_CONNECTOR5_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static BENT_CONNECTOR5_GUIDES: &[GuideDef] = &[
gd!("x1", MulDiv, "w", "adj1", "100000"),
gd!("x3", MulDiv, "w", "adj3", "100000"),
gd!("x2", AddDiv, "x1", "x3", "2"),
gd!("y2", MulDiv, "h", "adj2", "100000"),
gd!("y1", AddDiv, "t", "y2", "2"),
gd!("y3", AddDiv, "b", "y2", "2"),
];
static BENT_CONNECTOR5: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000), ("adj3", 50000)],
guides: BENT_CONNECTOR5_GUIDES,
paths: BENT_CONNECTOR5_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BENT_UP_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static BENT_UP_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: BENT_UP_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static BENT_UP_ARROW_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("a3", Pin, "0", "adj3", "50000"),
gd!("y1", MulDiv, "ss", "a3", "100000"),
gd!("dx1", MulDiv, "ss", "a2", "50000"),
gd!("x1", AddSub, "r", "0", "dx1"),
gd!("dx3", MulDiv, "ss", "a2", "100000"),
gd!("x3", AddSub, "r", "0", "dx3"),
gd!("dx2", MulDiv, "ss", "a1", "200000"),
gd!("x2", AddSub, "x3", "0", "dx2"),
gd!("x4", AddSub, "x3", "dx2", "0"),
gd!("dy2", MulDiv, "ss", "a1", "100000"),
gd!("y2", AddSub, "b", "0", "dy2"),
gd!("x0", MulDiv, "x4", "1", "2"),
gd!("y3", AddDiv, "y2", "b", "2"),
gd!("y15", AddDiv, "y1", "b", "2"),
];
static BENT_UP_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 25000), ("adj3", 25000)],
guides: BENT_UP_ARROW_GUIDES,
paths: BENT_UP_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y2",
r: "x4",
b: "b",
}),
};
static BEVEL_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
];
static BEVEL_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "x1", y: "x1" },
PathCommandDef::Close,
];
static BEVEL_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static BEVEL_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "x1" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static BEVEL_P4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::Close,
];
static BEVEL_P5_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x1", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "x1" },
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::MoveTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::MoveTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
];
static BEVEL_PATHS: &[PathDef] = &[
PathDef {
commands: BEVEL_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BEVEL_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BEVEL_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BEVEL_P3_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BEVEL_P4_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BEVEL_P5_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static BEVEL_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "b", "0", "x1"),
];
static BEVEL: PresetDef = PresetDef {
adjust_defaults: &[("adj", 12500)],
guides: BEVEL_GUIDES,
paths: BEVEL_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "x1",
r: "x2",
b: "y2",
}),
};
static BLOCK_ARC_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "istAng",
sw_ang: "iswAng",
},
PathCommandDef::Close,
];
static BLOCK_ARC_PATHS: &[PathDef] = &[PathDef {
commands: BLOCK_ARC_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static BLOCK_ARC_GUIDES: &[GuideDef] = &[
gd!("stAng", Pin, "0", "adj1", "21599999"),
gd!("istAng", Pin, "0", "adj2", "21599999"),
gd!("a3", Pin, "0", "adj3", "50000"),
gd!("sw11", AddSub, "istAng", "0", "stAng"),
gd!("sw12", AddSub, "sw11", "21600000", "0"),
gd!("swAng", IfElse, "sw11", "sw11", "sw12"),
gd!("iswAng", AddSub, "0", "0", "swAng"),
gd!("wt1", Sin, "wd2", "stAng", ""),
gd!("ht1", Cos, "hd2", "stAng", ""),
gd!("wt3", Sin, "wd2", "istAng", ""),
gd!("ht3", Cos, "hd2", "istAng", ""),
gd!("dx1", CosAtan2, "wd2", "ht1", "wt1"),
gd!("dy1", SinAtan2, "hd2", "ht1", "wt1"),
gd!("dx3", CosAtan2, "wd2", "ht3", "wt3"),
gd!("dy3", SinAtan2, "hd2", "ht3", "wt3"),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "dy1", "0"),
gd!("x3", AddSub, "hc", "dx3", "0"),
gd!("y3", AddSub, "vc", "dy3", "0"),
gd!("dr", MulDiv, "ss", "a3", "100000"),
gd!("iwd2", AddSub, "wd2", "0", "dr"),
gd!("ihd2", AddSub, "hd2", "0", "dr"),
gd!("wt2", Sin, "iwd2", "istAng", ""),
gd!("ht2", Cos, "ihd2", "istAng", ""),
gd!("wt4", Sin, "iwd2", "stAng", ""),
gd!("ht4", Cos, "ihd2", "stAng", ""),
gd!("dx2", CosAtan2, "iwd2", "ht2", "wt2"),
gd!("dy2", SinAtan2, "ihd2", "ht2", "wt2"),
gd!("dx4", CosAtan2, "iwd2", "ht4", "wt4"),
gd!("dy4", SinAtan2, "ihd2", "ht4", "wt4"),
gd!("x2", AddSub, "hc", "dx2", "0"),
gd!("y2", AddSub, "vc", "dy2", "0"),
gd!("x4", AddSub, "hc", "dx4", "0"),
gd!("y4", AddSub, "vc", "dy4", "0"),
gd!("sw0", AddSub, "21600000", "0", "stAng"),
gd!("da1", AddSub, "swAng", "0", "sw0"),
gd!("g1", Max, "x1", "x2", ""),
gd!("g2", Max, "x3", "x4", ""),
gd!("g3", Max, "g1", "g2", ""),
gd!("ir", IfElse, "da1", "r", "g3"),
gd!("sw1", AddSub, "cd4", "0", "stAng"),
gd!("sw2", AddSub, "27000000", "0", "stAng"),
gd!("sw3", IfElse, "sw1", "sw1", "sw2"),
gd!("da2", AddSub, "swAng", "0", "sw3"),
gd!("g5", Max, "y1", "y2", ""),
gd!("g6", Max, "y3", "y4", ""),
gd!("g7", Max, "g5", "g6", ""),
gd!("ib", IfElse, "da2", "b", "g7"),
gd!("sw4", AddSub, "cd2", "0", "stAng"),
gd!("sw5", AddSub, "32400000", "0", "stAng"),
gd!("sw6", IfElse, "sw4", "sw4", "sw5"),
gd!("da3", AddSub, "swAng", "0", "sw6"),
gd!("g9", Min, "x1", "x2", ""),
gd!("g10", Min, "x3", "x4", ""),
gd!("g11", Min, "g9", "g10", ""),
gd!("il", IfElse, "da3", "l", "g11"),
gd!("sw7", AddSub, "3cd4", "0", "stAng"),
gd!("sw8", AddSub, "37800000", "0", "stAng"),
gd!("sw9", IfElse, "sw7", "sw7", "sw8"),
gd!("da4", AddSub, "swAng", "0", "sw9"),
gd!("g13", Min, "y1", "y2", ""),
gd!("g14", Min, "y3", "y4", ""),
gd!("g15", Min, "g13", "g14", ""),
gd!("it", IfElse, "da4", "t", "g15"),
gd!("x5", AddDiv, "x1", "x4", "2"),
gd!("y5", AddDiv, "y1", "y4", "2"),
gd!("x6", AddDiv, "x3", "x2", "2"),
gd!("y6", AddDiv, "y3", "y2", "2"),
gd!("cang1", AddSub, "stAng", "0", "cd4"),
gd!("cang2", AddSub, "istAng", "cd4", "0"),
gd!("cang3", AddDiv, "cang1", "cang2", "2"),
];
static BLOCK_ARC: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 10800000), ("adj2", 0), ("adj3", 25000)],
guides: BLOCK_ARC_GUIDES,
paths: BLOCK_ARC_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static BORDER_CALLOUT1_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static BORDER_CALLOUT1_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
];
static BORDER_CALLOUT1_PATHS: &[PathDef] = &[
PathDef {
commands: BORDER_CALLOUT1_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: BORDER_CALLOUT1_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static BORDER_CALLOUT1_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
];
static BORDER_CALLOUT1: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 112500),
("adj4", -38333),
],
guides: BORDER_CALLOUT1_GUIDES,
paths: BORDER_CALLOUT1_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BORDER_CALLOUT2_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static BORDER_CALLOUT2_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
];
static BORDER_CALLOUT2_PATHS: &[PathDef] = &[
PathDef {
commands: BORDER_CALLOUT2_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: BORDER_CALLOUT2_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static BORDER_CALLOUT2_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
];
static BORDER_CALLOUT2: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 112500),
("adj6", -46667),
],
guides: BORDER_CALLOUT2_GUIDES,
paths: BORDER_CALLOUT2_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BORDER_CALLOUT3_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static BORDER_CALLOUT3_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
];
static BORDER_CALLOUT3_PATHS: &[PathDef] = &[
PathDef {
commands: BORDER_CALLOUT3_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: BORDER_CALLOUT3_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static BORDER_CALLOUT3_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
gd!("y4", MulDiv, "h", "adj7", "100000"),
gd!("x4", MulDiv, "w", "adj8", "100000"),
];
static BORDER_CALLOUT3: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 100000),
("adj6", -16667),
("adj7", 112963),
("adj8", -8333),
],
guides: BORDER_CALLOUT3_GUIDES,
paths: BORDER_CALLOUT3_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static BRACE_PAIR_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x2", y: "b" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x1", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static BRACE_PAIR_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x2", y: "b" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x1", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::MoveTo { x: "x3", y: "t" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "cd4",
},
];
static BRACE_PAIR_PATHS: &[PathDef] = &[
PathDef {
commands: BRACE_PAIR_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BRACE_PAIR_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static BRACE_PAIR_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "25000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", MulDiv, "ss", "a", "50000"),
gd!("x3", AddSub, "r", "0", "x2"),
gd!("x4", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "vc", "0", "x1"),
gd!("y3", AddSub, "vc", "x1", "0"),
gd!("y4", AddSub, "b", "0", "x1"),
gd!("it", MulDiv, "x1", "29289", "100000"),
gd!("il", AddSub, "x1", "it", "0"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "it"),
];
static BRACE_PAIR: PresetDef = PresetDef {
adjust_defaults: &[("adj", 8333)],
guides: BRACE_PAIR_GUIDES,
paths: BRACE_PAIR_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static BRACKET_PAIR_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static BRACKET_PAIR_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "b" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::MoveTo { x: "x2", y: "t" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "cd4",
},
];
static BRACKET_PAIR_PATHS: &[PathDef] = &[
PathDef {
commands: BRACKET_PAIR_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: BRACKET_PAIR_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static BRACKET_PAIR_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "b", "0", "x1"),
gd!("il", MulDiv, "x1", "29289", "100000"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static BRACKET_PAIR: PresetDef = PresetDef {
adjust_defaults: &[("adj", 16667)],
guides: BRACKET_PAIR_GUIDES,
paths: BRACKET_PAIR_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static CALLOUT1_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static CALLOUT1_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
];
static CALLOUT1_PATHS: &[PathDef] = &[
PathDef {
commands: CALLOUT1_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CALLOUT1_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CALLOUT1_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
];
static CALLOUT1: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 112500),
("adj4", -38333),
],
guides: CALLOUT1_GUIDES,
paths: CALLOUT1_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CALLOUT2_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static CALLOUT2_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
];
static CALLOUT2_PATHS: &[PathDef] = &[
PathDef {
commands: CALLOUT2_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CALLOUT2_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CALLOUT2_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
];
static CALLOUT2: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 112500),
("adj6", -46667),
],
guides: CALLOUT2_GUIDES,
paths: CALLOUT2_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CALLOUT3_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static CALLOUT3_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
];
static CALLOUT3_PATHS: &[PathDef] = &[
PathDef {
commands: CALLOUT3_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CALLOUT3_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CALLOUT3_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "adj1", "100000"),
gd!("x1", MulDiv, "w", "adj2", "100000"),
gd!("y2", MulDiv, "h", "adj3", "100000"),
gd!("x2", MulDiv, "w", "adj4", "100000"),
gd!("y3", MulDiv, "h", "adj5", "100000"),
gd!("x3", MulDiv, "w", "adj6", "100000"),
gd!("y4", MulDiv, "h", "adj7", "100000"),
gd!("x4", MulDiv, "w", "adj8", "100000"),
];
static CALLOUT3: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18750),
("adj2", -8333),
("adj3", 18750),
("adj4", -16667),
("adj5", 100000),
("adj6", -16667),
("adj7", 112963),
("adj8", -8333),
],
guides: CALLOUT3_GUIDES,
paths: CALLOUT3_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CAN_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "r", y: "y3" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static CAN_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static CAN_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "r", y: "y3" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "l", y: "y1" },
];
static CAN_PATHS: &[PathDef] = &[
PathDef {
commands: CAN_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CAN_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CAN_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CAN_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "50000", "h", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("y1", MulDiv, "ss", "a", "200000"),
gd!("y2", AddSub, "y1", "y1", "0"),
gd!("y3", AddSub, "b", "0", "y1"),
];
static CAN: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: CAN_GUIDES,
paths: CAN_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y2",
r: "r",
b: "y3",
}),
};
static CHART_PLUS_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "5", y: "0" },
PathCommandDef::LineTo { x: "5", y: "10" },
PathCommandDef::MoveTo { x: "0", y: "5" },
PathCommandDef::LineTo { x: "10", y: "5" },
];
static CHART_PLUS_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "0", y: "10" },
PathCommandDef::LineTo { x: "10", y: "10" },
PathCommandDef::LineTo { x: "10", y: "0" },
PathCommandDef::Close,
];
static CHART_PLUS_PATHS: &[PathDef] = &[
PathDef {
commands: CHART_PLUS_P0_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: CHART_PLUS_P1_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::Norm,
stroke: false,
},
];
static CHART_PLUS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: CHART_PLUS_PATHS,
text_rect: None,
};
static CHART_STAR_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "10", y: "10" },
PathCommandDef::MoveTo { x: "0", y: "10" },
PathCommandDef::LineTo { x: "10", y: "0" },
PathCommandDef::MoveTo { x: "5", y: "0" },
PathCommandDef::LineTo { x: "5", y: "10" },
];
static CHART_STAR_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "0", y: "10" },
PathCommandDef::LineTo { x: "10", y: "10" },
PathCommandDef::LineTo { x: "10", y: "0" },
PathCommandDef::Close,
];
static CHART_STAR_PATHS: &[PathDef] = &[
PathDef {
commands: CHART_STAR_P0_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: CHART_STAR_P1_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::Norm,
stroke: false,
},
];
static CHART_STAR: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: CHART_STAR_PATHS,
text_rect: None,
};
static CHART_X_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "10", y: "10" },
PathCommandDef::MoveTo { x: "0", y: "10" },
PathCommandDef::LineTo { x: "10", y: "0" },
];
static CHART_X_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "0", y: "10" },
PathCommandDef::LineTo { x: "10", y: "10" },
PathCommandDef::LineTo { x: "10", y: "0" },
PathCommandDef::Close,
];
static CHART_X_PATHS: &[PathDef] = &[
PathDef {
commands: CHART_X_P0_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: CHART_X_P1_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::Norm,
stroke: false,
},
];
static CHART_X: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: CHART_X_PATHS,
text_rect: None,
};
static CHEVRON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "vc" },
PathCommandDef::Close,
];
static CHEVRON_PATHS: &[PathDef] = &[PathDef {
commands: CHEVRON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static CHEVRON_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "100000", "w", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("x3", MulDiv, "x2", "1", "2"),
gd!("dx", AddSub, "x2", "0", "x1"),
gd!("il", IfElse, "dx", "x1", "l"),
gd!("ir", IfElse, "dx", "x2", "r"),
];
static CHEVRON: PresetDef = PresetDef {
adjust_defaults: &[("adj", 50000)],
guides: CHEVRON_GUIDES,
paths: CHEVRON_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "t",
r: "ir",
b: "b",
}),
};
static CHORD_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::Close,
];
static CHORD_PATHS: &[PathDef] = &[PathDef {
commands: CHORD_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static CHORD_GUIDES: &[GuideDef] = &[
gd!("stAng", Pin, "0", "adj1", "21599999"),
gd!("enAng", Pin, "0", "adj2", "21599999"),
gd!("sw1", AddSub, "enAng", "0", "stAng"),
gd!("sw2", AddSub, "sw1", "21600000", "0"),
gd!("swAng", IfElse, "sw1", "sw1", "sw2"),
gd!("wt1", Sin, "wd2", "stAng", ""),
gd!("ht1", Cos, "hd2", "stAng", ""),
gd!("dx1", CosAtan2, "wd2", "ht1", "wt1"),
gd!("dy1", SinAtan2, "hd2", "ht1", "wt1"),
gd!("wt2", Sin, "wd2", "enAng", ""),
gd!("ht2", Cos, "hd2", "enAng", ""),
gd!("dx2", CosAtan2, "wd2", "ht2", "wt2"),
gd!("dy2", SinAtan2, "hd2", "ht2", "wt2"),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "dy1", "0"),
gd!("x2", AddSub, "hc", "dx2", "0"),
gd!("y2", AddSub, "vc", "dy2", "0"),
gd!("x3", AddDiv, "x1", "x2", "2"),
gd!("y3", AddDiv, "y1", "y2", "2"),
gd!("midAng0", MulDiv, "swAng", "1", "2"),
gd!("midAng", AddSub, "stAng", "midAng0", "cd2"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static CHORD: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 2700000), ("adj2", 16200000)],
guides: CHORD_GUIDES,
paths: CHORD_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static CIRCULAR_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "xE", y: "yE" },
PathCommandDef::ArcTo {
wr: "rw1",
hr: "rh1",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "xGp", y: "yGp" },
PathCommandDef::LineTo { x: "xA", y: "yA" },
PathCommandDef::LineTo { x: "xBp", y: "yBp" },
PathCommandDef::LineTo { x: "xC", y: "yC" },
PathCommandDef::ArcTo {
wr: "rw2",
hr: "rh2",
st_ang: "istAng",
sw_ang: "iswAng",
},
PathCommandDef::Close,
];
static CIRCULAR_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: CIRCULAR_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static CIRCULAR_ARROW_GUIDES: &[GuideDef] = &[
gd!("a5", Pin, "0", "adj5", "25000"),
gd!("maxAdj1", MulDiv, "a5", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("enAng", Pin, "1", "adj3", "21599999"),
gd!("stAng", Pin, "0", "adj4", "21599999"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("thh", MulDiv, "ss", "a5", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("rw1", AddSub, "wd2", "th2", "thh"),
gd!("rh1", AddSub, "hd2", "th2", "thh"),
gd!("rw2", AddSub, "rw1", "0", "th"),
gd!("rh2", AddSub, "rh1", "0", "th"),
gd!("rw3", AddSub, "rw2", "th2", "0"),
gd!("rh3", AddSub, "rh2", "th2", "0"),
gd!("wtH", Sin, "rw3", "enAng", ""),
gd!("htH", Cos, "rh3", "enAng", ""),
gd!("dxH", CosAtan2, "rw3", "htH", "wtH"),
gd!("dyH", SinAtan2, "rh3", "htH", "wtH"),
gd!("xH", AddSub, "hc", "dxH", "0"),
gd!("yH", AddSub, "vc", "dyH", "0"),
gd!("rI", Min, "rw2", "rh2", ""),
gd!("u1", MulDiv, "dxH", "dxH", "1"),
gd!("u2", MulDiv, "dyH", "dyH", "1"),
gd!("u3", MulDiv, "rI", "rI", "1"),
gd!("u4", AddSub, "u1", "0", "u3"),
gd!("u5", AddSub, "u2", "0", "u3"),
gd!("u6", MulDiv, "u4", "u5", "u1"),
gd!("u7", MulDiv, "u6", "1", "u2"),
gd!("u8", AddSub, "1", "0", "u7"),
gd!("u9", Sqrt, "u8", "", ""),
gd!("u10", MulDiv, "u4", "1", "dxH"),
gd!("u11", MulDiv, "u10", "1", "dyH"),
gd!("u12", AddDiv, "1", "u9", "u11"),
gd!("u13", Atan2, "1", "u12", ""),
gd!("u14", AddSub, "u13", "21600000", "0"),
gd!("u15", IfElse, "u13", "u13", "u14"),
gd!("u16", AddSub, "u15", "0", "enAng"),
gd!("u17", AddSub, "u16", "21600000", "0"),
gd!("u18", IfElse, "u16", "u16", "u17"),
gd!("u19", AddSub, "u18", "0", "cd2"),
gd!("u20", AddSub, "u18", "0", "21600000"),
gd!("u21", IfElse, "u19", "u20", "u18"),
gd!("maxAng", Abs, "u21", "", ""),
gd!("aAng", Pin, "0", "adj2", "maxAng"),
gd!("ptAng", AddSub, "enAng", "aAng", "0"),
gd!("wtA", Sin, "rw3", "ptAng", ""),
gd!("htA", Cos, "rh3", "ptAng", ""),
gd!("dxA", CosAtan2, "rw3", "htA", "wtA"),
gd!("dyA", SinAtan2, "rh3", "htA", "wtA"),
gd!("xA", AddSub, "hc", "dxA", "0"),
gd!("yA", AddSub, "vc", "dyA", "0"),
gd!("wtE", Sin, "rw1", "stAng", ""),
gd!("htE", Cos, "rh1", "stAng", ""),
gd!("dxE", CosAtan2, "rw1", "htE", "wtE"),
gd!("dyE", SinAtan2, "rh1", "htE", "wtE"),
gd!("xE", AddSub, "hc", "dxE", "0"),
gd!("yE", AddSub, "vc", "dyE", "0"),
gd!("dxG", Cos, "thh", "ptAng", ""),
gd!("dyG", Sin, "thh", "ptAng", ""),
gd!("xG", AddSub, "xH", "dxG", "0"),
gd!("yG", AddSub, "yH", "dyG", "0"),
gd!("dxB", Cos, "thh", "ptAng", ""),
gd!("dyB", Sin, "thh", "ptAng", ""),
gd!("xB", AddSub, "xH", "0", "dxB"),
gd!("yB", AddSub, "yH", "0", "dyB"),
gd!("sx1", AddSub, "xB", "0", "hc"),
gd!("sy1", AddSub, "yB", "0", "vc"),
gd!("sx2", AddSub, "xG", "0", "hc"),
gd!("sy2", AddSub, "yG", "0", "vc"),
gd!("rO", Min, "rw1", "rh1", ""),
gd!("x1O", MulDiv, "sx1", "rO", "rw1"),
gd!("y1O", MulDiv, "sy1", "rO", "rh1"),
gd!("x2O", MulDiv, "sx2", "rO", "rw1"),
gd!("y2O", MulDiv, "sy2", "rO", "rh1"),
gd!("dxO", AddSub, "x2O", "0", "x1O"),
gd!("dyO", AddSub, "y2O", "0", "y1O"),
gd!("dO", Mod, "dxO", "dyO", "0"),
gd!("q1", MulDiv, "x1O", "y2O", "1"),
gd!("q2", MulDiv, "x2O", "y1O", "1"),
gd!("DO", AddSub, "q1", "0", "q2"),
gd!("q3", MulDiv, "rO", "rO", "1"),
gd!("q4", MulDiv, "dO", "dO", "1"),
gd!("q5", MulDiv, "q3", "q4", "1"),
gd!("q6", MulDiv, "DO", "DO", "1"),
gd!("q7", AddSub, "q5", "0", "q6"),
gd!("q8", Max, "q7", "0", ""),
gd!("sdelO", Sqrt, "q8", "", ""),
gd!("ndyO", MulDiv, "dyO", "-1", "1"),
gd!("sdyO", IfElse, "ndyO", "-1", "1"),
gd!("q9", MulDiv, "sdyO", "dxO", "1"),
gd!("q10", MulDiv, "q9", "sdelO", "1"),
gd!("q11", MulDiv, "DO", "dyO", "1"),
gd!("dxF1", AddDiv, "q11", "q10", "q4"),
gd!("q12", AddSub, "q11", "0", "q10"),
gd!("dxF2", MulDiv, "q12", "1", "q4"),
gd!("adyO", Abs, "dyO", "", ""),
gd!("q13", MulDiv, "adyO", "sdelO", "1"),
gd!("q14", MulDiv, "DO", "dxO", "-1"),
gd!("dyF1", AddDiv, "q14", "q13", "q4"),
gd!("q15", AddSub, "q14", "0", "q13"),
gd!("dyF2", MulDiv, "q15", "1", "q4"),
gd!("q16", AddSub, "x2O", "0", "dxF1"),
gd!("q17", AddSub, "x2O", "0", "dxF2"),
gd!("q18", AddSub, "y2O", "0", "dyF1"),
gd!("q19", AddSub, "y2O", "0", "dyF2"),
gd!("q20", Mod, "q16", "q18", "0"),
gd!("q21", Mod, "q17", "q19", "0"),
gd!("q22", AddSub, "q21", "0", "q20"),
gd!("dxF", IfElse, "q22", "dxF1", "dxF2"),
gd!("dyF", IfElse, "q22", "dyF1", "dyF2"),
gd!("sdxF", MulDiv, "dxF", "rw1", "rO"),
gd!("sdyF", MulDiv, "dyF", "rh1", "rO"),
gd!("xF", AddSub, "hc", "sdxF", "0"),
gd!("yF", AddSub, "vc", "sdyF", "0"),
gd!("x1I", MulDiv, "sx1", "rI", "rw2"),
gd!("y1I", MulDiv, "sy1", "rI", "rh2"),
gd!("x2I", MulDiv, "sx2", "rI", "rw2"),
gd!("y2I", MulDiv, "sy2", "rI", "rh2"),
gd!("dxI", AddSub, "x2I", "0", "x1I"),
gd!("dyI", AddSub, "y2I", "0", "y1I"),
gd!("dI", Mod, "dxI", "dyI", "0"),
gd!("v1", MulDiv, "x1I", "y2I", "1"),
gd!("v2", MulDiv, "x2I", "y1I", "1"),
gd!("DI", AddSub, "v1", "0", "v2"),
gd!("v3", MulDiv, "rI", "rI", "1"),
gd!("v4", MulDiv, "dI", "dI", "1"),
gd!("v5", MulDiv, "v3", "v4", "1"),
gd!("v6", MulDiv, "DI", "DI", "1"),
gd!("v7", AddSub, "v5", "0", "v6"),
gd!("v8", Max, "v7", "0", ""),
gd!("sdelI", Sqrt, "v8", "", ""),
gd!("v9", MulDiv, "sdyO", "dxI", "1"),
gd!("v10", MulDiv, "v9", "sdelI", "1"),
gd!("v11", MulDiv, "DI", "dyI", "1"),
gd!("dxC1", AddDiv, "v11", "v10", "v4"),
gd!("v12", AddSub, "v11", "0", "v10"),
gd!("dxC2", MulDiv, "v12", "1", "v4"),
gd!("adyI", Abs, "dyI", "", ""),
gd!("v13", MulDiv, "adyI", "sdelI", "1"),
gd!("v14", MulDiv, "DI", "dxI", "-1"),
gd!("dyC1", AddDiv, "v14", "v13", "v4"),
gd!("v15", AddSub, "v14", "0", "v13"),
gd!("dyC2", MulDiv, "v15", "1", "v4"),
gd!("v16", AddSub, "x1I", "0", "dxC1"),
gd!("v17", AddSub, "x1I", "0", "dxC2"),
gd!("v18", AddSub, "y1I", "0", "dyC1"),
gd!("v19", AddSub, "y1I", "0", "dyC2"),
gd!("v20", Mod, "v16", "v18", "0"),
gd!("v21", Mod, "v17", "v19", "0"),
gd!("v22", AddSub, "v21", "0", "v20"),
gd!("dxC", IfElse, "v22", "dxC1", "dxC2"),
gd!("dyC", IfElse, "v22", "dyC1", "dyC2"),
gd!("sdxC", MulDiv, "dxC", "rw2", "rI"),
gd!("sdyC", MulDiv, "dyC", "rh2", "rI"),
gd!("xC", AddSub, "hc", "sdxC", "0"),
gd!("yC", AddSub, "vc", "sdyC", "0"),
gd!("ist0", Atan2, "sdxC", "sdyC", ""),
gd!("ist1", AddSub, "ist0", "21600000", "0"),
gd!("istAng", IfElse, "ist0", "ist0", "ist1"),
gd!("isw1", AddSub, "stAng", "0", "istAng"),
gd!("isw2", AddSub, "isw1", "0", "21600000"),
gd!("iswAng", IfElse, "isw1", "isw2", "isw1"),
gd!("p1", AddSub, "xF", "0", "xC"),
gd!("p2", AddSub, "yF", "0", "yC"),
gd!("p3", Mod, "p1", "p2", "0"),
gd!("p4", MulDiv, "p3", "1", "2"),
gd!("p5", AddSub, "p4", "0", "thh"),
gd!("xGp", IfElse, "p5", "xF", "xG"),
gd!("yGp", IfElse, "p5", "yF", "yG"),
gd!("xBp", IfElse, "p5", "xC", "xB"),
gd!("yBp", IfElse, "p5", "yC", "yB"),
gd!("en0", Atan2, "sdxF", "sdyF", ""),
gd!("en1", AddSub, "en0", "21600000", "0"),
gd!("en2", IfElse, "en0", "en0", "en1"),
gd!("sw0", AddSub, "en2", "0", "stAng"),
gd!("sw1", AddSub, "sw0", "21600000", "0"),
gd!("swAng", IfElse, "sw0", "sw0", "sw1"),
gd!("wtI", Sin, "rw3", "stAng", ""),
gd!("htI", Cos, "rh3", "stAng", ""),
gd!("dxI", CosAtan2, "rw3", "htI", "wtI"),
gd!("dyI", SinAtan2, "rh3", "htI", "wtI"),
gd!("xI", AddSub, "hc", "dxI", "0"),
gd!("yI", AddSub, "vc", "dyI", "0"),
gd!("aI", AddSub, "stAng", "0", "cd4"),
gd!("aA", AddSub, "ptAng", "cd4", "0"),
gd!("aB", AddSub, "ptAng", "cd2", "0"),
gd!("idx", Cos, "rw1", "2700000", ""),
gd!("idy", Sin, "rh1", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static CIRCULAR_ARROW: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 12500),
("adj2", 1142319),
("adj3", 20457681),
("adj4", 10800000),
("adj5", 12500),
],
guides: CIRCULAR_ARROW_GUIDES,
paths: CIRCULAR_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static CLOUD_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "3900",
y: "14370",
},
PathCommandDef::ArcTo {
wr: "6753",
hr: "9190",
st_ang: "-11429249",
sw_ang: "7426832",
},
PathCommandDef::ArcTo {
wr: "5333",
hr: "7267",
st_ang: "-8646143",
sw_ang: "5396714",
},
PathCommandDef::ArcTo {
wr: "4365",
hr: "5945",
st_ang: "-8748475",
sw_ang: "5983381",
},
PathCommandDef::ArcTo {
wr: "4857",
hr: "6595",
st_ang: "-7859164",
sw_ang: "7034504",
},
PathCommandDef::ArcTo {
wr: "5333",
hr: "7273",
st_ang: "-4722533",
sw_ang: "6541615",
},
PathCommandDef::ArcTo {
wr: "6775",
hr: "9220",
st_ang: "-2776035",
sw_ang: "7816140",
},
PathCommandDef::ArcTo {
wr: "5785",
hr: "7867",
st_ang: "37501",
sw_ang: "6842000",
},
PathCommandDef::ArcTo {
wr: "6752",
hr: "9215",
st_ang: "1347096",
sw_ang: "6910353",
},
PathCommandDef::ArcTo {
wr: "7720",
hr: "10543",
st_ang: "3974558",
sw_ang: "4542661",
},
PathCommandDef::ArcTo {
wr: "4360",
hr: "5918",
st_ang: "-16496525",
sw_ang: "8804134",
},
PathCommandDef::ArcTo {
wr: "4345",
hr: "5945",
st_ang: "-14809710",
sw_ang: "9151131",
},
PathCommandDef::Close,
];
static CLOUD_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "4693",
y: "26177",
},
PathCommandDef::ArcTo {
wr: "4345",
hr: "5945",
st_ang: "5204520",
sw_ang: "1585770",
},
PathCommandDef::MoveTo {
x: "6928",
y: "34899",
},
PathCommandDef::ArcTo {
wr: "4360",
hr: "5918",
st_ang: "4416628",
sw_ang: "686848",
},
PathCommandDef::MoveTo {
x: "16478",
y: "39090",
},
PathCommandDef::ArcTo {
wr: "6752",
hr: "9215",
st_ang: "8257449",
sw_ang: "844866",
},
PathCommandDef::MoveTo {
x: "28827",
y: "34751",
},
PathCommandDef::ArcTo {
wr: "6752",
hr: "9215",
st_ang: "387196",
sw_ang: "959901",
},
PathCommandDef::MoveTo {
x: "34129",
y: "22954",
},
PathCommandDef::ArcTo {
wr: "5785",
hr: "7867",
st_ang: "-4217541",
sw_ang: "4255042",
},
PathCommandDef::MoveTo {
x: "41798",
y: "15354",
},
PathCommandDef::ArcTo {
wr: "5333",
hr: "7273",
st_ang: "1819082",
sw_ang: "1665090",
},
PathCommandDef::MoveTo {
x: "38324",
y: "5426",
},
PathCommandDef::ArcTo {
wr: "4857",
hr: "6595",
st_ang: "-824660",
sw_ang: "891534",
},
PathCommandDef::MoveTo {
x: "29078",
y: "3952",
},
PathCommandDef::ArcTo {
wr: "4857",
hr: "6595",
st_ang: "-8950887",
sw_ang: "1091722",
},
PathCommandDef::MoveTo {
x: "22141",
y: "4720",
},
PathCommandDef::ArcTo {
wr: "4365",
hr: "5945",
st_ang: "-9809656",
sw_ang: "1061181",
},
PathCommandDef::MoveTo {
x: "14000",
y: "5192",
},
PathCommandDef::ArcTo {
wr: "6753",
hr: "9190",
st_ang: "-4002417",
sw_ang: "739161",
},
PathCommandDef::MoveTo {
x: "4127",
y: "15789",
},
PathCommandDef::ArcTo {
wr: "6753",
hr: "9190",
st_ang: "9459261",
sw_ang: "711490",
},
];
static CLOUD_PATHS: &[PathDef] = &[
PathDef {
commands: CLOUD_P0_CMDS,
w: Some(43200),
h: Some(43200),
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CLOUD_P1_CMDS,
w: Some(43200),
h: Some(43200),
fill: PathFill::None,
stroke: true,
},
];
static CLOUD_GUIDES: &[GuideDef] = &[
gd!("il", MulDiv, "w", "2977", "21600"),
gd!("it", MulDiv, "h", "3262", "21600"),
gd!("ir", MulDiv, "w", "17087", "21600"),
gd!("ib", MulDiv, "h", "17337", "21600"),
gd!("g27", MulDiv, "w", "67", "21600"),
gd!("g28", MulDiv, "h", "21577", "21600"),
gd!("g29", MulDiv, "w", "21582", "21600"),
gd!("g30", MulDiv, "h", "1235", "21600"),
];
static CLOUD: PresetDef = PresetDef {
adjust_defaults: &[],
guides: CLOUD_GUIDES,
paths: CLOUD_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static CLOUD_CALLOUT_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "3900",
y: "14370",
},
PathCommandDef::ArcTo {
wr: "6753",
hr: "9190",
st_ang: "-11429249",
sw_ang: "7426832",
},
PathCommandDef::ArcTo {
wr: "5333",
hr: "7267",
st_ang: "-8646143",
sw_ang: "5396714",
},
PathCommandDef::ArcTo {
wr: "4365",
hr: "5945",
st_ang: "-8748475",
sw_ang: "5983381",
},
PathCommandDef::ArcTo {
wr: "4857",
hr: "6595",
st_ang: "-7859164",
sw_ang: "7034504",
},
PathCommandDef::ArcTo {
wr: "5333",
hr: "7273",
st_ang: "-4722533",
sw_ang: "6541615",
},
PathCommandDef::ArcTo {
wr: "6775",
hr: "9220",
st_ang: "-2776035",
sw_ang: "7816140",
},
PathCommandDef::ArcTo {
wr: "5785",
hr: "7867",
st_ang: "37501",
sw_ang: "6842000",
},
PathCommandDef::ArcTo {
wr: "6752",
hr: "9215",
st_ang: "1347096",
sw_ang: "6910353",
},
PathCommandDef::ArcTo {
wr: "7720",
hr: "10543",
st_ang: "3974558",
sw_ang: "4542661",
},
PathCommandDef::ArcTo {
wr: "4360",
hr: "5918",
st_ang: "-16496525",
sw_ang: "8804134",
},
PathCommandDef::ArcTo {
wr: "4345",
hr: "5945",
st_ang: "-14809710",
sw_ang: "9151131",
},
PathCommandDef::Close,
];
static CLOUD_CALLOUT_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "x23",
y: "yPos",
},
PathCommandDef::ArcTo {
wr: "g26",
hr: "g26",
st_ang: "0",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static CLOUD_CALLOUT_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x24", y: "g17" },
PathCommandDef::ArcTo {
wr: "g25",
hr: "g25",
st_ang: "0",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static CLOUD_CALLOUT_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x25", y: "g24" },
PathCommandDef::ArcTo {
wr: "g12",
hr: "g12",
st_ang: "0",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static CLOUD_CALLOUT_P4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "4693",
y: "26177",
},
PathCommandDef::ArcTo {
wr: "4345",
hr: "5945",
st_ang: "5204520",
sw_ang: "1585770",
},
PathCommandDef::MoveTo {
x: "6928",
y: "34899",
},
PathCommandDef::ArcTo {
wr: "4360",
hr: "5918",
st_ang: "4416628",
sw_ang: "686848",
},
PathCommandDef::MoveTo {
x: "16478",
y: "39090",
},
PathCommandDef::ArcTo {
wr: "6752",
hr: "9215",
st_ang: "8257449",
sw_ang: "844866",
},
PathCommandDef::MoveTo {
x: "28827",
y: "34751",
},
PathCommandDef::ArcTo {
wr: "6752",
hr: "9215",
st_ang: "387196",
sw_ang: "959901",
},
PathCommandDef::MoveTo {
x: "34129",
y: "22954",
},
PathCommandDef::ArcTo {
wr: "5785",
hr: "7867",
st_ang: "-4217541",
sw_ang: "4255042",
},
PathCommandDef::MoveTo {
x: "41798",
y: "15354",
},
PathCommandDef::ArcTo {
wr: "5333",
hr: "7273",
st_ang: "1819082",
sw_ang: "1665090",
},
PathCommandDef::MoveTo {
x: "38324",
y: "5426",
},
PathCommandDef::ArcTo {
wr: "4857",
hr: "6595",
st_ang: "-824660",
sw_ang: "891534",
},
PathCommandDef::MoveTo {
x: "29078",
y: "3952",
},
PathCommandDef::ArcTo {
wr: "4857",
hr: "6595",
st_ang: "-8950887",
sw_ang: "1091722",
},
PathCommandDef::MoveTo {
x: "22141",
y: "4720",
},
PathCommandDef::ArcTo {
wr: "4365",
hr: "5945",
st_ang: "-9809656",
sw_ang: "1061181",
},
PathCommandDef::MoveTo {
x: "14000",
y: "5192",
},
PathCommandDef::ArcTo {
wr: "6753",
hr: "9190",
st_ang: "-4002417",
sw_ang: "739161",
},
PathCommandDef::MoveTo {
x: "4127",
y: "15789",
},
PathCommandDef::ArcTo {
wr: "6753",
hr: "9190",
st_ang: "9459261",
sw_ang: "711490",
},
];
static CLOUD_CALLOUT_PATHS: &[PathDef] = &[
PathDef {
commands: CLOUD_CALLOUT_P0_CMDS,
w: Some(43200),
h: Some(43200),
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CLOUD_CALLOUT_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CLOUD_CALLOUT_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CLOUD_CALLOUT_P3_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CLOUD_CALLOUT_P4_CMDS,
w: Some(43200),
h: Some(43200),
fill: PathFill::None,
stroke: true,
},
];
static CLOUD_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("dxPos", MulDiv, "w", "adj1", "100000"),
gd!("dyPos", MulDiv, "h", "adj2", "100000"),
gd!("xPos", AddSub, "hc", "dxPos", "0"),
gd!("yPos", AddSub, "vc", "dyPos", "0"),
gd!("ht", CosAtan2, "hd2", "dxPos", "dyPos"),
gd!("wt", SinAtan2, "wd2", "dxPos", "dyPos"),
gd!("g2", CosAtan2, "wd2", "ht", "wt"),
gd!("g3", SinAtan2, "hd2", "ht", "wt"),
gd!("g4", AddSub, "hc", "g2", "0"),
gd!("g5", AddSub, "vc", "g3", "0"),
gd!("g6", AddSub, "g4", "0", "xPos"),
gd!("g7", AddSub, "g5", "0", "yPos"),
gd!("g8", Mod, "g6", "g7", "0"),
gd!("g9", MulDiv, "ss", "6600", "21600"),
gd!("g10", AddSub, "g8", "0", "g9"),
gd!("g11", MulDiv, "g10", "1", "3"),
gd!("g12", MulDiv, "ss", "1800", "21600"),
gd!("g13", AddSub, "g11", "g12", "0"),
gd!("g14", MulDiv, "g13", "g6", "g8"),
gd!("g15", MulDiv, "g13", "g7", "g8"),
gd!("g16", AddSub, "g14", "xPos", "0"),
gd!("g17", AddSub, "g15", "yPos", "0"),
gd!("g18", MulDiv, "ss", "4800", "21600"),
gd!("g19", MulDiv, "g11", "2", "1"),
gd!("g20", AddSub, "g18", "g19", "0"),
gd!("g21", MulDiv, "g20", "g6", "g8"),
gd!("g22", MulDiv, "g20", "g7", "g8"),
gd!("g23", AddSub, "g21", "xPos", "0"),
gd!("g24", AddSub, "g22", "yPos", "0"),
gd!("g25", MulDiv, "ss", "1200", "21600"),
gd!("g26", MulDiv, "ss", "600", "21600"),
gd!("x23", AddSub, "xPos", "g26", "0"),
gd!("x24", AddSub, "g16", "g25", "0"),
gd!("x25", AddSub, "g23", "g12", "0"),
gd!("il", MulDiv, "w", "2977", "21600"),
gd!("it", MulDiv, "h", "3262", "21600"),
gd!("ir", MulDiv, "w", "17087", "21600"),
gd!("ib", MulDiv, "h", "17337", "21600"),
gd!("g27", MulDiv, "w", "67", "21600"),
gd!("g28", MulDiv, "h", "21577", "21600"),
gd!("g29", MulDiv, "w", "21582", "21600"),
gd!("g30", MulDiv, "h", "1235", "21600"),
gd!("pang", Atan2, "dxPos", "dyPos", ""),
];
static CLOUD_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", -20833), ("adj2", 62500)],
guides: CLOUD_CALLOUT_GUIDES,
paths: CLOUD_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static CORNER_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static CORNER_PATHS: &[PathDef] = &[PathDef {
commands: CORNER_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static CORNER_GUIDES: &[GuideDef] = &[
gd!("maxAdj1", MulDiv, "100000", "h", "ss"),
gd!("maxAdj2", MulDiv, "100000", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("x1", MulDiv, "ss", "a2", "100000"),
gd!("dy1", MulDiv, "ss", "a1", "100000"),
gd!("y1", AddSub, "b", "0", "dy1"),
gd!("cx1", MulDiv, "x1", "1", "2"),
gd!("cy1", AddDiv, "y1", "b", "2"),
gd!("d", AddSub, "w", "0", "h"),
gd!("it", IfElse, "d", "y1", "t"),
gd!("ir", IfElse, "d", "r", "x1"),
];
static CORNER: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: CORNER_GUIDES,
paths: CORNER_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "it",
r: "ir",
b: "b",
}),
};
static CORNER_TABS_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "dx", y: "t" },
PathCommandDef::LineTo { x: "l", y: "dx" },
PathCommandDef::Close,
];
static CORNER_TABS_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "dx", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static CORNER_TABS_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "dx" },
PathCommandDef::Close,
];
static CORNER_TABS_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::Close,
];
static CORNER_TABS_PATHS: &[PathDef] = &[
PathDef {
commands: CORNER_TABS_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CORNER_TABS_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CORNER_TABS_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: CORNER_TABS_P3_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
];
static CORNER_TABS_GUIDES: &[GuideDef] = &[
gd!("md", Mod, "w", "h", "0"),
gd!("dx", MulDiv, "1", "md", "20"),
gd!("y1", AddSub, "0", "b", "dx"),
gd!("x1", AddSub, "0", "r", "dx"),
];
static CORNER_TABS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: CORNER_TABS_GUIDES,
paths: CORNER_TABS_PATHS,
text_rect: Some(TextRectDef {
l: "dx",
t: "dx",
r: "x1",
b: "y1",
}),
};
static CUBE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static CUBE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::Close,
];
static CUBE_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "y1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::Close,
];
static CUBE_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "y1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::MoveTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "b" },
];
static CUBE_PATHS: &[PathDef] = &[
PathDef {
commands: CUBE_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CUBE_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CUBE_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CUBE_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CUBE_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "100000"),
gd!("y1", MulDiv, "ss", "a", "100000"),
gd!("y4", AddSub, "b", "0", "y1"),
gd!("y2", MulDiv, "y4", "1", "2"),
gd!("y3", AddDiv, "y1", "b", "2"),
gd!("x4", AddSub, "r", "0", "y1"),
gd!("x2", MulDiv, "x4", "1", "2"),
gd!("x3", AddDiv, "y1", "r", "2"),
];
static CUBE: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: CUBE_GUIDES,
paths: CUBE_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y1",
r: "x4",
b: "b",
}),
};
static CURVED_CONNECTOR2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::CubicBezTo {
x1: "wd2",
y1: "t",
x2: "r",
y2: "hd2",
x3: "r",
y3: "b",
},
];
static CURVED_CONNECTOR2_PATHS: &[PathDef] = &[PathDef {
commands: CURVED_CONNECTOR2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static CURVED_CONNECTOR2: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: CURVED_CONNECTOR2_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_CONNECTOR3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::CubicBezTo {
x1: "x1",
y1: "t",
x2: "x2",
y2: "hd4",
x3: "x2",
y3: "vc",
},
PathCommandDef::CubicBezTo {
x1: "x2",
y1: "y3",
x2: "x3",
y2: "b",
x3: "r",
y3: "b",
},
];
static CURVED_CONNECTOR3_PATHS: &[PathDef] = &[PathDef {
commands: CURVED_CONNECTOR3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static CURVED_CONNECTOR3_GUIDES: &[GuideDef] = &[
gd!("x2", MulDiv, "w", "adj1", "100000"),
gd!("x1", AddDiv, "l", "x2", "2"),
gd!("x3", AddDiv, "r", "x2", "2"),
gd!("y3", MulDiv, "h", "3", "4"),
];
static CURVED_CONNECTOR3: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000)],
guides: CURVED_CONNECTOR3_GUIDES,
paths: CURVED_CONNECTOR3_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_CONNECTOR4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::CubicBezTo {
x1: "x1",
y1: "t",
x2: "x2",
y2: "y2",
x3: "x2",
y3: "y1",
},
PathCommandDef::CubicBezTo {
x1: "x2",
y1: "y3",
x2: "x4",
y2: "y4",
x3: "x3",
y3: "y4",
},
PathCommandDef::CubicBezTo {
x1: "x5",
y1: "y4",
x2: "r",
y2: "y5",
x3: "r",
y3: "b",
},
];
static CURVED_CONNECTOR4_PATHS: &[PathDef] = &[PathDef {
commands: CURVED_CONNECTOR4_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static CURVED_CONNECTOR4_GUIDES: &[GuideDef] = &[
gd!("x2", MulDiv, "w", "adj1", "100000"),
gd!("x1", AddDiv, "l", "x2", "2"),
gd!("x3", AddDiv, "r", "x2", "2"),
gd!("x4", AddDiv, "x2", "x3", "2"),
gd!("x5", AddDiv, "x3", "r", "2"),
gd!("y4", MulDiv, "h", "adj2", "100000"),
gd!("y1", AddDiv, "t", "y4", "2"),
gd!("y2", AddDiv, "t", "y1", "2"),
gd!("y3", AddDiv, "y1", "y4", "2"),
gd!("y5", AddDiv, "b", "y4", "2"),
];
static CURVED_CONNECTOR4: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: CURVED_CONNECTOR4_GUIDES,
paths: CURVED_CONNECTOR4_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_CONNECTOR5_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::CubicBezTo {
x1: "x2",
y1: "t",
x2: "x3",
y2: "y2",
x3: "x3",
y3: "y1",
},
PathCommandDef::CubicBezTo {
x1: "x3",
y1: "y3",
x2: "x4",
y2: "y4",
x3: "x1",
y3: "y4",
},
PathCommandDef::CubicBezTo {
x1: "x5",
y1: "y4",
x2: "x6",
y2: "y6",
x3: "x6",
y3: "y5",
},
PathCommandDef::CubicBezTo {
x1: "x6",
y1: "y7",
x2: "x7",
y2: "b",
x3: "r",
y3: "b",
},
];
static CURVED_CONNECTOR5_PATHS: &[PathDef] = &[PathDef {
commands: CURVED_CONNECTOR5_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static CURVED_CONNECTOR5_GUIDES: &[GuideDef] = &[
gd!("x3", MulDiv, "w", "adj1", "100000"),
gd!("x6", MulDiv, "w", "adj3", "100000"),
gd!("x1", AddDiv, "x3", "x6", "2"),
gd!("x2", AddDiv, "l", "x3", "2"),
gd!("x4", AddDiv, "x3", "x1", "2"),
gd!("x5", AddDiv, "x6", "x1", "2"),
gd!("x7", AddDiv, "x6", "r", "2"),
gd!("y4", MulDiv, "h", "adj2", "100000"),
gd!("y1", AddDiv, "t", "y4", "2"),
gd!("y2", AddDiv, "t", "y1", "2"),
gd!("y3", AddDiv, "y1", "y4", "2"),
gd!("y5", AddDiv, "b", "y4", "2"),
gd!("y6", AddDiv, "y5", "y4", "2"),
gd!("y7", AddDiv, "y5", "b", "2"),
];
static CURVED_CONNECTOR5: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000), ("adj3", 50000)],
guides: CURVED_CONNECTOR5_GUIDES,
paths: CURVED_CONNECTOR5_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_DOWN_ARROW_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x6", y: "b" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x5", y: "y1" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng",
sw_ang: "mswAng",
},
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "3cd4",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::Close,
];
static CURVED_DOWN_ARROW_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "ix", y: "iy" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng2",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "cd2",
sw_ang: "swAng3",
},
PathCommandDef::Close,
];
static CURVED_DOWN_ARROW_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "ix", y: "iy" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng2",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "3cd4",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::LineTo { x: "x6", y: "b" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x5", y: "y1" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng",
sw_ang: "mswAng",
},
];
static CURVED_DOWN_ARROW_PATHS: &[PathDef] = &[
PathDef {
commands: CURVED_DOWN_ARROW_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_DOWN_ARROW_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_DOWN_ARROW_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CURVED_DOWN_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("aw", MulDiv, "ss", "a2", "100000"),
gd!("q1", AddDiv, "th", "aw", "4"),
gd!("wR", AddSub, "wd2", "0", "q1"),
gd!("q7", MulDiv, "wR", "2", "1"),
gd!("q8", MulDiv, "q7", "q7", "1"),
gd!("q9", MulDiv, "th", "th", "1"),
gd!("q10", AddSub, "q8", "0", "q9"),
gd!("q11", Sqrt, "q10", "", ""),
gd!("idy", MulDiv, "q11", "h", "q7"),
gd!("maxAdj3", MulDiv, "100000", "idy", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("ah", MulDiv, "ss", "adj3", "100000"),
gd!("x3", AddSub, "wR", "th", "0"),
gd!("q2", MulDiv, "h", "h", "1"),
gd!("q3", MulDiv, "ah", "ah", "1"),
gd!("q4", AddSub, "q2", "0", "q3"),
gd!("q5", Sqrt, "q4", "", ""),
gd!("dx", MulDiv, "q5", "wR", "h"),
gd!("x5", AddSub, "wR", "dx", "0"),
gd!("x7", AddSub, "x3", "dx", "0"),
gd!("q6", AddSub, "aw", "0", "th"),
gd!("dh", MulDiv, "q6", "1", "2"),
gd!("x4", AddSub, "x5", "0", "dh"),
gd!("x8", AddSub, "x7", "dh", "0"),
gd!("aw2", MulDiv, "aw", "1", "2"),
gd!("x6", AddSub, "r", "0", "aw2"),
gd!("y1", AddSub, "b", "0", "ah"),
gd!("swAng", Atan2, "ah", "dx", ""),
gd!("mswAng", AddSub, "0", "0", "swAng"),
gd!("iy", AddSub, "b", "0", "idy"),
gd!("ix", AddDiv, "wR", "x3", "2"),
gd!("q12", MulDiv, "th", "1", "2"),
gd!("dang2", Atan2, "idy", "q12", ""),
gd!("stAng", AddSub, "3cd4", "swAng", "0"),
gd!("stAng2", AddSub, "3cd4", "0", "dang2"),
gd!("swAng2", AddSub, "dang2", "0", "cd4"),
gd!("swAng3", AddSub, "cd4", "dang2", "0"),
];
static CURVED_DOWN_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 50000), ("adj3", 25000)],
guides: CURVED_DOWN_ARROW_GUIDES,
paths: CURVED_DOWN_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_LEFT_ARROW_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y6" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y5" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "swAng",
sw_ang: "swAng2",
},
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "stAng3",
sw_ang: "swAng3",
},
PathCommandDef::LineTo { x: "x1", y: "y8" },
PathCommandDef::Close,
];
static CURVED_LEFT_ARROW_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "y3" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "l", y: "t" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static CURVED_LEFT_ARROW_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "y3" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "l", y: "t" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y3" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "0",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "x1", y: "y8" },
PathCommandDef::LineTo { x: "l", y: "y6" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y5" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "swAng",
sw_ang: "swAng2",
},
];
static CURVED_LEFT_ARROW_PATHS: &[PathDef] = &[
PathDef {
commands: CURVED_LEFT_ARROW_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_LEFT_ARROW_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_LEFT_ARROW_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CURVED_LEFT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "h", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("a1", Pin, "0", "adj1", "a2"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("aw", MulDiv, "ss", "a2", "100000"),
gd!("q1", AddDiv, "th", "aw", "4"),
gd!("hR", AddSub, "hd2", "0", "q1"),
gd!("q7", MulDiv, "hR", "2", "1"),
gd!("q8", MulDiv, "q7", "q7", "1"),
gd!("q9", MulDiv, "th", "th", "1"),
gd!("q10", AddSub, "q8", "0", "q9"),
gd!("q11", Sqrt, "q10", "", ""),
gd!("idx", MulDiv, "q11", "w", "q7"),
gd!("maxAdj3", MulDiv, "100000", "idx", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("ah", MulDiv, "ss", "a3", "100000"),
gd!("y3", AddSub, "hR", "th", "0"),
gd!("q2", MulDiv, "w", "w", "1"),
gd!("q3", MulDiv, "ah", "ah", "1"),
gd!("q4", AddSub, "q2", "0", "q3"),
gd!("q5", Sqrt, "q4", "", ""),
gd!("dy", MulDiv, "q5", "hR", "w"),
gd!("y5", AddSub, "hR", "dy", "0"),
gd!("y7", AddSub, "y3", "dy", "0"),
gd!("q6", AddSub, "aw", "0", "th"),
gd!("dh", MulDiv, "q6", "1", "2"),
gd!("y4", AddSub, "y5", "0", "dh"),
gd!("y8", AddSub, "y7", "dh", "0"),
gd!("aw2", MulDiv, "aw", "1", "2"),
gd!("y6", AddSub, "b", "0", "aw2"),
gd!("x1", AddSub, "l", "ah", "0"),
gd!("swAng", Atan2, "ah", "dy", ""),
gd!("mswAng", AddSub, "0", "0", "swAng"),
gd!("ix", AddSub, "l", "idx", "0"),
gd!("iy", AddDiv, "hR", "y3", "2"),
gd!("q12", MulDiv, "th", "1", "2"),
gd!("dang2", Atan2, "idx", "q12", ""),
gd!("swAng2", AddSub, "dang2", "0", "swAng"),
gd!("swAng3", AddSub, "swAng", "dang2", "0"),
gd!("stAng3", AddSub, "0", "0", "dang2"),
];
static CURVED_LEFT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 50000), ("adj3", 25000)],
guides: CURVED_LEFT_ARROW_GUIDES,
paths: CURVED_LEFT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_RIGHT_ARROW_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "hR" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "cd2",
sw_ang: "mswAng",
},
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "r", y: "y6" },
PathCommandDef::LineTo { x: "x1", y: "y8" },
PathCommandDef::LineTo { x: "x1", y: "y7" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::Close,
];
static CURVED_RIGHT_ARROW_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "th" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "3cd4",
sw_ang: "swAng2",
},
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "stAng3",
sw_ang: "swAng3",
},
PathCommandDef::Close,
];
static CURVED_RIGHT_ARROW_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "hR" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "cd2",
sw_ang: "mswAng",
},
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "r", y: "y6" },
PathCommandDef::LineTo { x: "x1", y: "y8" },
PathCommandDef::LineTo { x: "x1", y: "y7" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "l", y: "hR" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "th" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hR",
st_ang: "3cd4",
sw_ang: "swAng2",
},
];
static CURVED_RIGHT_ARROW_PATHS: &[PathDef] = &[
PathDef {
commands: CURVED_RIGHT_ARROW_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_RIGHT_ARROW_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_RIGHT_ARROW_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CURVED_RIGHT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "h", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("a1", Pin, "0", "adj1", "a2"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("aw", MulDiv, "ss", "a2", "100000"),
gd!("q1", AddDiv, "th", "aw", "4"),
gd!("hR", AddSub, "hd2", "0", "q1"),
gd!("q7", MulDiv, "hR", "2", "1"),
gd!("q8", MulDiv, "q7", "q7", "1"),
gd!("q9", MulDiv, "th", "th", "1"),
gd!("q10", AddSub, "q8", "0", "q9"),
gd!("q11", Sqrt, "q10", "", ""),
gd!("idx", MulDiv, "q11", "w", "q7"),
gd!("maxAdj3", MulDiv, "100000", "idx", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("ah", MulDiv, "ss", "a3", "100000"),
gd!("y3", AddSub, "hR", "th", "0"),
gd!("q2", MulDiv, "w", "w", "1"),
gd!("q3", MulDiv, "ah", "ah", "1"),
gd!("q4", AddSub, "q2", "0", "q3"),
gd!("q5", Sqrt, "q4", "", ""),
gd!("dy", MulDiv, "q5", "hR", "w"),
gd!("y5", AddSub, "hR", "dy", "0"),
gd!("y7", AddSub, "y3", "dy", "0"),
gd!("q6", AddSub, "aw", "0", "th"),
gd!("dh", MulDiv, "q6", "1", "2"),
gd!("y4", AddSub, "y5", "0", "dh"),
gd!("y8", AddSub, "y7", "dh", "0"),
gd!("aw2", MulDiv, "aw", "1", "2"),
gd!("y6", AddSub, "b", "0", "aw2"),
gd!("x1", AddSub, "r", "0", "ah"),
gd!("swAng", Atan2, "ah", "dy", ""),
gd!("stAng", AddSub, "cd2", "0", "swAng"),
gd!("mswAng", AddSub, "0", "0", "swAng"),
gd!("ix", AddSub, "r", "0", "idx"),
gd!("iy", AddDiv, "hR", "y3", "2"),
gd!("q12", MulDiv, "th", "1", "2"),
gd!("dang2", Atan2, "idx", "q12", ""),
gd!("swAng2", AddSub, "dang2", "0", "cd4"),
gd!("swAng3", AddSub, "cd4", "dang2", "0"),
gd!("stAng3", AddSub, "cd2", "0", "dang2"),
];
static CURVED_RIGHT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 50000), ("adj3", 25000)],
guides: CURVED_RIGHT_ARROW_GUIDES,
paths: CURVED_RIGHT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static CURVED_UP_ARROW_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x6", y: "t" },
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::LineTo { x: "x7", y: "y1" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng3",
sw_ang: "swAng3",
},
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng2",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::Close,
];
static CURVED_UP_ARROW_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "wR", y: "b" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "th", y: "t" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::Close,
];
static CURVED_UP_ARROW_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "ix", y: "iy" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng2",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x6", y: "t" },
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::LineTo { x: "x7", y: "y1" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "stAng3",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "wR", y: "b" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "th", y: "t" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "h",
st_ang: "cd2",
sw_ang: "-5400000",
},
];
static CURVED_UP_ARROW_PATHS: &[PathDef] = &[
PathDef {
commands: CURVED_UP_ARROW_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_UP_ARROW_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: CURVED_UP_ARROW_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static CURVED_UP_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("aw", MulDiv, "ss", "a2", "100000"),
gd!("q1", AddDiv, "th", "aw", "4"),
gd!("wR", AddSub, "wd2", "0", "q1"),
gd!("q7", MulDiv, "wR", "2", "1"),
gd!("q8", MulDiv, "q7", "q7", "1"),
gd!("q9", MulDiv, "th", "th", "1"),
gd!("q10", AddSub, "q8", "0", "q9"),
gd!("q11", Sqrt, "q10", "", ""),
gd!("idy", MulDiv, "q11", "h", "q7"),
gd!("maxAdj3", MulDiv, "100000", "idy", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("ah", MulDiv, "ss", "adj3", "100000"),
gd!("x3", AddSub, "wR", "th", "0"),
gd!("q2", MulDiv, "h", "h", "1"),
gd!("q3", MulDiv, "ah", "ah", "1"),
gd!("q4", AddSub, "q2", "0", "q3"),
gd!("q5", Sqrt, "q4", "", ""),
gd!("dx", MulDiv, "q5", "wR", "h"),
gd!("x5", AddSub, "wR", "dx", "0"),
gd!("x7", AddSub, "x3", "dx", "0"),
gd!("q6", AddSub, "aw", "0", "th"),
gd!("dh", MulDiv, "q6", "1", "2"),
gd!("x4", AddSub, "x5", "0", "dh"),
gd!("x8", AddSub, "x7", "dh", "0"),
gd!("aw2", MulDiv, "aw", "1", "2"),
gd!("x6", AddSub, "r", "0", "aw2"),
gd!("y1", AddSub, "t", "ah", "0"),
gd!("swAng", Atan2, "ah", "dx", ""),
gd!("mswAng", AddSub, "0", "0", "swAng"),
gd!("iy", AddSub, "t", "idy", "0"),
gd!("ix", AddDiv, "wR", "x3", "2"),
gd!("q12", MulDiv, "th", "1", "2"),
gd!("dang2", Atan2, "idy", "q12", ""),
gd!("swAng2", AddSub, "dang2", "0", "swAng"),
gd!("mswAng2", AddSub, "0", "0", "swAng2"),
gd!("stAng3", AddSub, "cd4", "0", "swAng"),
gd!("swAng3", AddSub, "swAng", "dang2", "0"),
gd!("stAng2", AddSub, "cd4", "0", "dang2"),
];
static CURVED_UP_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 50000), ("adj3", 25000)],
guides: CURVED_UP_ARROW_GUIDES,
paths: CURVED_UP_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static DECAGON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::Close,
];
static DECAGON_PATHS: &[PathDef] = &[PathDef {
commands: DECAGON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DECAGON_GUIDES: &[GuideDef] = &[
gd!("shd2", MulDiv, "hd2", "vf", "100000"),
gd!("dx1", Cos, "wd2", "2160000", ""),
gd!("dx2", Cos, "wd2", "4320000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("dy1", Sin, "shd2", "4320000", ""),
gd!("dy2", Sin, "shd2", "2160000", ""),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y4", AddSub, "vc", "dy1", "0"),
];
static DECAGON: PresetDef = PresetDef {
adjust_defaults: &[("vf", 105146)],
guides: DECAGON_GUIDES,
paths: DECAGON_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y2",
r: "x4",
b: "y3",
}),
};
static DIAG_STRIPE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static DIAG_STRIPE_PATHS: &[PathDef] = &[PathDef {
commands: DIAG_STRIPE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DIAG_STRIPE_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "100000"),
gd!("x2", MulDiv, "w", "a", "100000"),
gd!("x1", MulDiv, "x2", "1", "2"),
gd!("x3", AddDiv, "x2", "r", "2"),
gd!("y2", MulDiv, "h", "a", "100000"),
gd!("y1", MulDiv, "y2", "1", "2"),
gd!("y3", AddDiv, "y2", "b", "2"),
];
static DIAG_STRIPE: PresetDef = PresetDef {
adjust_defaults: &[("adj", 50000)],
guides: DIAG_STRIPE_GUIDES,
paths: DIAG_STRIPE_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "x3",
b: "y3",
}),
};
static DIAMOND_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::Close,
];
static DIAMOND_PATHS: &[PathDef] = &[PathDef {
commands: DIAMOND_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DIAMOND_GUIDES: &[GuideDef] = &[
gd!("ir", MulDiv, "w", "3", "4"),
gd!("ib", MulDiv, "h", "3", "4"),
];
static DIAMOND: PresetDef = PresetDef {
adjust_defaults: &[],
guides: DIAMOND_GUIDES,
paths: DIAMOND_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "hd4",
r: "ir",
b: "ib",
}),
};
static DODECAGON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "x3", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "l", y: "y3" },
PathCommandDef::Close,
];
static DODECAGON_PATHS: &[PathDef] = &[PathDef {
commands: DODECAGON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DODECAGON_GUIDES: &[GuideDef] = &[
gd!("x1", MulDiv, "w", "2894", "21600"),
gd!("x2", MulDiv, "w", "7906", "21600"),
gd!("x3", MulDiv, "w", "13694", "21600"),
gd!("x4", MulDiv, "w", "18706", "21600"),
gd!("y1", MulDiv, "h", "2894", "21600"),
gd!("y2", MulDiv, "h", "7906", "21600"),
gd!("y3", MulDiv, "h", "13694", "21600"),
gd!("y4", MulDiv, "h", "18706", "21600"),
];
static DODECAGON: PresetDef = PresetDef {
adjust_defaults: &[],
guides: DODECAGON_GUIDES,
paths: DODECAGON_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x4",
b: "y4",
}),
};
static DONUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "dr", y: "vc" },
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::Close,
];
static DONUT_PATHS: &[PathDef] = &[PathDef {
commands: DONUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DONUT_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dr", MulDiv, "ss", "a", "100000"),
gd!("iwd2", AddSub, "wd2", "0", "dr"),
gd!("ihd2", AddSub, "hd2", "0", "dr"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static DONUT: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: DONUT_GUIDES,
paths: DONUT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static DOUBLE_WAVE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x2", y: "y1" },
PathCommandDef::CubicBezTo {
x1: "x3",
y1: "y2",
x2: "x4",
y2: "y3",
x3: "x5",
y3: "y1",
},
PathCommandDef::CubicBezTo {
x1: "x6",
y1: "y2",
x2: "x7",
y2: "y3",
x3: "x8",
y3: "y1",
},
PathCommandDef::LineTo { x: "x15", y: "y4" },
PathCommandDef::CubicBezTo {
x1: "x14",
y1: "y6",
x2: "x13",
y2: "y5",
x3: "x12",
y3: "y4",
},
PathCommandDef::CubicBezTo {
x1: "x11",
y1: "y6",
x2: "x10",
y2: "y5",
x3: "x9",
y3: "y4",
},
PathCommandDef::Close,
];
static DOUBLE_WAVE_PATHS: &[PathDef] = &[PathDef {
commands: DOUBLE_WAVE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DOUBLE_WAVE_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "12500"),
gd!("a2", Pin, "-10000", "adj2", "10000"),
gd!("y1", MulDiv, "h", "a1", "100000"),
gd!("dy2", MulDiv, "y1", "10", "3"),
gd!("y2", AddSub, "y1", "0", "dy2"),
gd!("y3", AddSub, "y1", "dy2", "0"),
gd!("y4", AddSub, "b", "0", "y1"),
gd!("y5", AddSub, "y4", "0", "dy2"),
gd!("y6", AddSub, "y4", "dy2", "0"),
gd!("dx1", MulDiv, "w", "a2", "100000"),
gd!("of2", MulDiv, "w", "a2", "50000"),
gd!("x1", Abs, "dx1", "", ""),
gd!("dx2", IfElse, "of2", "0", "of2"),
gd!("x2", AddSub, "l", "0", "dx2"),
gd!("dx8", IfElse, "of2", "of2", "0"),
gd!("x8", AddSub, "r", "0", "dx8"),
gd!("dx3", AddDiv, "dx2", "x8", "6"),
gd!("x3", AddSub, "x2", "dx3", "0"),
gd!("dx4", AddDiv, "dx2", "x8", "3"),
gd!("x4", AddSub, "x2", "dx4", "0"),
gd!("x5", AddDiv, "x2", "x8", "2"),
gd!("x6", AddSub, "x5", "dx3", "0"),
gd!("x7", AddDiv, "x6", "x8", "2"),
gd!("x9", AddSub, "l", "dx8", "0"),
gd!("x15", AddSub, "r", "dx2", "0"),
gd!("x10", AddSub, "x9", "dx3", "0"),
gd!("x11", AddSub, "x9", "dx4", "0"),
gd!("x12", AddDiv, "x9", "x15", "2"),
gd!("x13", AddSub, "x12", "dx3", "0"),
gd!("x14", AddDiv, "x13", "x15", "2"),
gd!("x16", AddSub, "r", "0", "x1"),
gd!("xAdj", AddSub, "hc", "dx1", "0"),
gd!("il", Max, "x2", "x9", ""),
gd!("ir", Min, "x8", "x15", ""),
gd!("it", MulDiv, "h", "a1", "50000"),
gd!("ib", AddSub, "b", "0", "it"),
];
static DOUBLE_WAVE: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 6250), ("adj2", 0)],
guides: DOUBLE_WAVE_GUIDES,
paths: DOUBLE_WAVE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static DOWN_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::Close,
];
static DOWN_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: DOWN_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DOWN_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "100000", "h", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("dy1", MulDiv, "ss", "a2", "100000"),
gd!("y1", AddSub, "b", "0", "dy1"),
gd!("dx1", MulDiv, "w", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
gd!("dy2", MulDiv, "x1", "dy1", "wd2"),
gd!("y2", AddSub, "y1", "dy2", "0"),
];
static DOWN_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: DOWN_ARROW_GUIDES,
paths: DOWN_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "t",
r: "x2",
b: "y2",
}),
};
static DOWN_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::Close,
];
static DOWN_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: DOWN_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static DOWN_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", MulDiv, "100000", "h", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "ss", "h"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("dx1", MulDiv, "ss", "a2", "100000"),
gd!("dx2", MulDiv, "ss", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("dy3", MulDiv, "ss", "a3", "100000"),
gd!("y3", AddSub, "b", "0", "dy3"),
gd!("y2", MulDiv, "h", "a4", "100000"),
gd!("y1", MulDiv, "y2", "1", "2"),
];
static DOWN_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 64977),
],
guides: DOWN_ARROW_CALLOUT_GUIDES,
paths: DOWN_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "y2",
}),
};
static ELLIPSE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static ELLIPSE_PATHS: &[PathDef] = &[PathDef {
commands: ELLIPSE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static ELLIPSE_GUIDES: &[GuideDef] = &[
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static ELLIPSE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: ELLIPSE_GUIDES,
paths: ELLIPSE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static ELLIPSE_RIBBON_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::QuadBezTo {
x1: "cx1",
y1: "cy1",
x2: "x3",
y2: "y1",
},
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy3",
x2: "x5",
y2: "y3",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::QuadBezTo {
x1: "cx2",
y1: "cy1",
x2: "r",
y2: "t",
},
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "rh" },
PathCommandDef::QuadBezTo {
x1: "cx5",
y1: "cy4",
x2: "x5",
y2: "y5",
},
PathCommandDef::LineTo { x: "x5", y: "y6" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy6",
x2: "x2",
y2: "y6",
},
PathCommandDef::LineTo { x: "x2", y: "y5" },
PathCommandDef::QuadBezTo {
x1: "cx4",
y1: "cy4",
x2: "l",
y2: "rh",
},
PathCommandDef::LineTo { x: "wd8", y: "y2" },
PathCommandDef::Close,
];
static ELLIPSE_RIBBON_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x3", y: "y7" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy3",
x2: "x5",
y2: "y3",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y7" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy7",
x2: "x3",
y2: "y7",
},
PathCommandDef::Close,
];
static ELLIPSE_RIBBON_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::QuadBezTo {
x1: "cx1",
y1: "cy1",
x2: "x3",
y2: "y1",
},
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy3",
x2: "x5",
y2: "y3",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::QuadBezTo {
x1: "cx2",
y1: "cy1",
x2: "r",
y2: "t",
},
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "rh" },
PathCommandDef::QuadBezTo {
x1: "cx5",
y1: "cy4",
x2: "x5",
y2: "y5",
},
PathCommandDef::LineTo { x: "x5", y: "y6" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy6",
x2: "x2",
y2: "y6",
},
PathCommandDef::LineTo { x: "x2", y: "y5" },
PathCommandDef::QuadBezTo {
x1: "cx4",
y1: "cy4",
x2: "l",
y2: "rh",
},
PathCommandDef::LineTo { x: "wd8", y: "y2" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x2", y: "y5" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::MoveTo { x: "x5", y: "y3" },
PathCommandDef::LineTo { x: "x5", y: "y5" },
PathCommandDef::MoveTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y7" },
PathCommandDef::MoveTo { x: "x4", y: "y7" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
];
static ELLIPSE_RIBBON_PATHS: &[PathDef] = &[
PathDef {
commands: ELLIPSE_RIBBON_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ELLIPSE_RIBBON_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ELLIPSE_RIBBON_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ELLIPSE_RIBBON_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "25000", "adj2", "75000"),
gd!("q10", AddSub, "100000", "0", "a1"),
gd!("q11", MulDiv, "q10", "1", "2"),
gd!("q12", AddSub, "a1", "0", "q11"),
gd!("minAdj3", Max, "0", "q12", ""),
gd!("a3", Pin, "minAdj3", "adj3", "a1"),
gd!("dx2", MulDiv, "w", "a2", "200000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "x2", "wd8", "0"),
gd!("x4", AddSub, "r", "0", "x3"),
gd!("x5", AddSub, "r", "0", "x2"),
gd!("x6", AddSub, "r", "0", "wd8"),
gd!("dy1", MulDiv, "h", "a3", "100000"),
gd!("f1", MulDiv, "4", "dy1", "w"),
gd!("q1", MulDiv, "x3", "x3", "w"),
gd!("q2", AddSub, "x3", "0", "q1"),
gd!("y1", MulDiv, "f1", "q2", "1"),
gd!("cx1", MulDiv, "x3", "1", "2"),
gd!("cy1", MulDiv, "f1", "cx1", "1"),
gd!("cx2", AddSub, "r", "0", "cx1"),
gd!("q1", MulDiv, "h", "a1", "100000"),
gd!("dy3", AddSub, "q1", "0", "dy1"),
gd!("q3", MulDiv, "x2", "x2", "w"),
gd!("q4", AddSub, "x2", "0", "q3"),
gd!("q5", MulDiv, "f1", "q4", "1"),
gd!("y3", AddSub, "q5", "dy3", "0"),
gd!("q6", AddSub, "dy1", "dy3", "y3"),
gd!("q7", AddSub, "q6", "dy1", "0"),
gd!("cy3", AddSub, "q7", "dy3", "0"),
gd!("rh", AddSub, "b", "0", "q1"),
gd!("q8", MulDiv, "dy1", "14", "16"),
gd!("y2", AddDiv, "q8", "rh", "2"),
gd!("y5", AddSub, "q5", "rh", "0"),
gd!("y6", AddSub, "y3", "rh", "0"),
gd!("cx4", MulDiv, "x2", "1", "2"),
gd!("q9", MulDiv, "f1", "cx4", "1"),
gd!("cy4", AddSub, "q9", "rh", "0"),
gd!("cx5", AddSub, "r", "0", "cx4"),
gd!("cy6", AddSub, "cy3", "rh", "0"),
gd!("y7", AddSub, "y1", "dy3", "0"),
gd!("cy7", AddSub, "q1", "q1", "y7"),
gd!("y8", AddSub, "b", "0", "dy1"),
];
static ELLIPSE_RIBBON: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 50000), ("adj3", 12500)],
guides: ELLIPSE_RIBBON_GUIDES,
paths: ELLIPSE_RIBBON_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "q1",
r: "x5",
b: "y6",
}),
};
static ELLIPSE_RIBBON2_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::QuadBezTo {
x1: "cx1",
y1: "cy1",
x2: "x3",
y2: "y1",
},
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy3",
x2: "x5",
y2: "y3",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::QuadBezTo {
x1: "cx2",
y1: "cy1",
x2: "r",
y2: "b",
},
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "q1" },
PathCommandDef::QuadBezTo {
x1: "cx5",
y1: "cy4",
x2: "x5",
y2: "y5",
},
PathCommandDef::LineTo { x: "x5", y: "y6" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy6",
x2: "x2",
y2: "y6",
},
PathCommandDef::LineTo { x: "x2", y: "y5" },
PathCommandDef::QuadBezTo {
x1: "cx4",
y1: "cy4",
x2: "l",
y2: "q1",
},
PathCommandDef::LineTo { x: "wd8", y: "y2" },
PathCommandDef::Close,
];
static ELLIPSE_RIBBON2_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x3", y: "y7" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy3",
x2: "x5",
y2: "y3",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y7" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy7",
x2: "x3",
y2: "y7",
},
PathCommandDef::Close,
];
static ELLIPSE_RIBBON2_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "wd8", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "q1" },
PathCommandDef::QuadBezTo {
x1: "cx4",
y1: "cy4",
x2: "x2",
y2: "y5",
},
PathCommandDef::LineTo { x: "x2", y: "y6" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy6",
x2: "x5",
y2: "y6",
},
PathCommandDef::LineTo { x: "x5", y: "y5" },
PathCommandDef::QuadBezTo {
x1: "cx5",
y1: "cy4",
x2: "r",
y2: "q1",
},
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::QuadBezTo {
x1: "cx2",
y1: "cy1",
x2: "x4",
y2: "y1",
},
PathCommandDef::LineTo { x: "x5", y: "y3" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "cy3",
x2: "x2",
y2: "y3",
},
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::QuadBezTo {
x1: "cx1",
y1: "cy1",
x2: "l",
y2: "b",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "y5" },
PathCommandDef::MoveTo { x: "x5", y: "y5" },
PathCommandDef::LineTo { x: "x5", y: "y3" },
PathCommandDef::MoveTo { x: "x3", y: "y7" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::MoveTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x4", y: "y7" },
];
static ELLIPSE_RIBBON2_PATHS: &[PathDef] = &[
PathDef {
commands: ELLIPSE_RIBBON2_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ELLIPSE_RIBBON2_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: ELLIPSE_RIBBON2_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static ELLIPSE_RIBBON2_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "25000", "adj2", "75000"),
gd!("q10", AddSub, "100000", "0", "a1"),
gd!("q11", MulDiv, "q10", "1", "2"),
gd!("q12", AddSub, "a1", "0", "q11"),
gd!("minAdj3", Max, "0", "q12", ""),
gd!("a3", Pin, "minAdj3", "adj3", "a1"),
gd!("dx2", MulDiv, "w", "a2", "200000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "x2", "wd8", "0"),
gd!("x4", AddSub, "r", "0", "x3"),
gd!("x5", AddSub, "r", "0", "x2"),
gd!("x6", AddSub, "r", "0", "wd8"),
gd!("dy1", MulDiv, "h", "a3", "100000"),
gd!("f1", MulDiv, "4", "dy1", "w"),
gd!("q1", MulDiv, "x3", "x3", "w"),
gd!("q2", AddSub, "x3", "0", "q1"),
gd!("u1", MulDiv, "f1", "q2", "1"),
gd!("y1", AddSub, "b", "0", "u1"),
gd!("cx1", MulDiv, "x3", "1", "2"),
gd!("cu1", MulDiv, "f1", "cx1", "1"),
gd!("cy1", AddSub, "b", "0", "cu1"),
gd!("cx2", AddSub, "r", "0", "cx1"),
gd!("q1", MulDiv, "h", "a1", "100000"),
gd!("dy3", AddSub, "q1", "0", "dy1"),
gd!("q3", MulDiv, "x2", "x2", "w"),
gd!("q4", AddSub, "x2", "0", "q3"),
gd!("q5", MulDiv, "f1", "q4", "1"),
gd!("u3", AddSub, "q5", "dy3", "0"),
gd!("y3", AddSub, "b", "0", "u3"),
gd!("q6", AddSub, "dy1", "dy3", "u3"),
gd!("q7", AddSub, "q6", "dy1", "0"),
gd!("cu3", AddSub, "q7", "dy3", "0"),
gd!("cy3", AddSub, "b", "0", "cu3"),
gd!("rh", AddSub, "b", "0", "q1"),
gd!("q8", MulDiv, "dy1", "14", "16"),
gd!("u2", AddDiv, "q8", "rh", "2"),
gd!("y2", AddSub, "b", "0", "u2"),
gd!("u5", AddSub, "q5", "rh", "0"),
gd!("y5", AddSub, "b", "0", "u5"),
gd!("u6", AddSub, "u3", "rh", "0"),
gd!("y6", AddSub, "b", "0", "u6"),
gd!("cx4", MulDiv, "x2", "1", "2"),
gd!("q9", MulDiv, "f1", "cx4", "1"),
gd!("cu4", AddSub, "q9", "rh", "0"),
gd!("cy4", AddSub, "b", "0", "cu4"),
gd!("cx5", AddSub, "r", "0", "cx4"),
gd!("cu6", AddSub, "cu3", "rh", "0"),
gd!("cy6", AddSub, "b", "0", "cu6"),
gd!("u7", AddSub, "u1", "dy3", "0"),
gd!("y7", AddSub, "b", "0", "u7"),
gd!("cu7", AddSub, "q1", "q1", "u7"),
gd!("cy7", AddSub, "b", "0", "cu7"),
];
static ELLIPSE_RIBBON2: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 50000), ("adj3", 12500)],
guides: ELLIPSE_RIBBON2_GUIDES,
paths: ELLIPSE_RIBBON2_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "y6",
r: "x5",
b: "rh",
}),
};
static FLOW_CHART_ALTERNATE_PROCESS_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "ssd6" },
PathCommandDef::ArcTo {
wr: "ssd6",
hr: "ssd6",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::ArcTo {
wr: "ssd6",
hr: "ssd6",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "ssd6",
hr: "ssd6",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "ssd6", y: "b" },
PathCommandDef::ArcTo {
wr: "ssd6",
hr: "ssd6",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static FLOW_CHART_ALTERNATE_PROCESS_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_ALTERNATE_PROCESS_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_ALTERNATE_PROCESS_GUIDES: &[GuideDef] = &[
gd!("x2", AddSub, "r", "0", "ssd6"),
gd!("y2", AddSub, "b", "0", "ssd6"),
gd!("il", MulDiv, "ssd6", "29289", "100000"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static FLOW_CHART_ALTERNATE_PROCESS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_ALTERNATE_PROCESS_GUIDES,
paths: FLOW_CHART_ALTERNATE_PROCESS_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_COLLATE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "2", y: "0" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::LineTo { x: "2", y: "2" },
PathCommandDef::LineTo { x: "0", y: "2" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::Close,
];
static FLOW_CHART_COLLATE_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_COLLATE_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_COLLATE_GUIDES: &[GuideDef] = &[
gd!("ir", MulDiv, "w", "3", "4"),
gd!("ib", MulDiv, "h", "3", "4"),
];
static FLOW_CHART_COLLATE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_COLLATE_GUIDES,
paths: FLOW_CHART_COLLATE_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "hd4",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_CONNECTOR_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static FLOW_CHART_CONNECTOR_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_CONNECTOR_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_CONNECTOR_GUIDES: &[GuideDef] = &[
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static FLOW_CHART_CONNECTOR: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_CONNECTOR_GUIDES,
paths: FLOW_CHART_CONNECTOR_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_DECISION_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "2", y: "1" },
PathCommandDef::LineTo { x: "1", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_DECISION_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_DECISION_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_DECISION_GUIDES: &[GuideDef] = &[
gd!("ir", MulDiv, "w", "3", "4"),
gd!("ib", MulDiv, "h", "3", "4"),
];
static FLOW_CHART_DECISION: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_DECISION_GUIDES,
paths: FLOW_CHART_DECISION_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "hd4",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_DELAY_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static FLOW_CHART_DELAY_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_DELAY_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_DELAY_GUIDES: &[GuideDef] = &[
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static FLOW_CHART_DELAY: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_DELAY_GUIDES,
paths: FLOW_CHART_DELAY_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "it",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_DISPLAY_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "3" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "1", y: "6" },
PathCommandDef::Close,
];
static FLOW_CHART_DISPLAY_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_DISPLAY_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_DISPLAY_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "5", "6")];
static FLOW_CHART_DISPLAY: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_DISPLAY_GUIDES,
paths: FLOW_CHART_DISPLAY_PATHS,
text_rect: Some(TextRectDef {
l: "wd6",
t: "t",
r: "x2",
b: "b",
}),
};
static FLOW_CHART_DOCUMENT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "21600", y: "0" },
PathCommandDef::LineTo {
x: "21600",
y: "17322",
},
PathCommandDef::CubicBezTo {
x1: "10800",
y1: "17322",
x2: "10800",
y2: "23922",
x3: "0",
y3: "20172",
},
PathCommandDef::Close,
];
static FLOW_CHART_DOCUMENT_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_DOCUMENT_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_DOCUMENT_GUIDES: &[GuideDef] = &[
gd!("y1", MulDiv, "h", "17322", "21600"),
gd!("y2", MulDiv, "h", "20172", "21600"),
];
static FLOW_CHART_DOCUMENT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_DOCUMENT_GUIDES,
paths: FLOW_CHART_DOCUMENT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "y1",
}),
};
static FLOW_CHART_EXTRACT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "2" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "2", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_EXTRACT_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_EXTRACT_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_EXTRACT_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "3", "4")];
static FLOW_CHART_EXTRACT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_EXTRACT_GUIDES,
paths: FLOW_CHART_EXTRACT_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "vc",
r: "x2",
b: "b",
}),
};
static FLOW_CHART_INPUT_OUTPUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "5" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::LineTo { x: "4", y: "5" },
PathCommandDef::Close,
];
static FLOW_CHART_INPUT_OUTPUT_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_INPUT_OUTPUT_CMDS,
w: Some(5),
h: Some(5),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_INPUT_OUTPUT_GUIDES: &[GuideDef] = &[
gd!("x3", MulDiv, "w", "2", "5"),
gd!("x4", MulDiv, "w", "3", "5"),
gd!("x5", MulDiv, "w", "4", "5"),
gd!("x6", MulDiv, "w", "9", "10"),
];
static FLOW_CHART_INPUT_OUTPUT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_INPUT_OUTPUT_GUIDES,
paths: FLOW_CHART_INPUT_OUTPUT_PATHS,
text_rect: Some(TextRectDef {
l: "wd5",
t: "t",
r: "x5",
b: "b",
}),
};
static FLOW_CHART_INTERNAL_STORAGE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::LineTo { x: "0", y: "1" },
PathCommandDef::Close,
];
static FLOW_CHART_INTERNAL_STORAGE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "8" },
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "8", y: "1" },
];
static FLOW_CHART_INTERNAL_STORAGE_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::LineTo { x: "0", y: "1" },
PathCommandDef::Close,
];
static FLOW_CHART_INTERNAL_STORAGE_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_INTERNAL_STORAGE_P0_CMDS,
w: Some(1),
h: Some(1),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_INTERNAL_STORAGE_P1_CMDS,
w: Some(8),
h: Some(8),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_INTERNAL_STORAGE_P2_CMDS,
w: Some(1),
h: Some(1),
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_INTERNAL_STORAGE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: FLOW_CHART_INTERNAL_STORAGE_PATHS,
text_rect: Some(TextRectDef {
l: "wd8",
t: "hd8",
r: "r",
b: "b",
}),
};
static FLOW_CHART_MAGNETIC_DISK_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::ArcTo {
wr: "3",
hr: "1",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "6", y: "5" },
PathCommandDef::ArcTo {
wr: "3",
hr: "1",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_MAGNETIC_DISK_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "6", y: "1" },
PathCommandDef::ArcTo {
wr: "3",
hr: "1",
st_ang: "0",
sw_ang: "cd2",
},
];
static FLOW_CHART_MAGNETIC_DISK_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::ArcTo {
wr: "3",
hr: "1",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "6", y: "5" },
PathCommandDef::ArcTo {
wr: "3",
hr: "1",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_MAGNETIC_DISK_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_MAGNETIC_DISK_P0_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_MAGNETIC_DISK_P1_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_MAGNETIC_DISK_P2_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_MAGNETIC_DISK_GUIDES: &[GuideDef] = &[gd!("y3", MulDiv, "h", "5", "6")];
static FLOW_CHART_MAGNETIC_DISK: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_MAGNETIC_DISK_GUIDES,
paths: FLOW_CHART_MAGNETIC_DISK_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "hd3",
r: "r",
b: "y3",
}),
};
static FLOW_CHART_MAGNETIC_DRUM_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "1", y: "6" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_MAGNETIC_DRUM_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "5", y: "6" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "cd4",
sw_ang: "cd2",
},
];
static FLOW_CHART_MAGNETIC_DRUM_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "1", y: "6" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_MAGNETIC_DRUM_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_MAGNETIC_DRUM_P0_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_MAGNETIC_DRUM_P1_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_MAGNETIC_DRUM_P2_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_MAGNETIC_DRUM_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "2", "3")];
static FLOW_CHART_MAGNETIC_DRUM: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_MAGNETIC_DRUM_GUIDES,
paths: FLOW_CHART_MAGNETIC_DRUM_PATHS,
text_rect: Some(TextRectDef {
l: "wd6",
t: "t",
r: "x2",
b: "b",
}),
};
static FLOW_CHART_MAGNETIC_TAPE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "b" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "ang1",
},
PathCommandDef::LineTo { x: "r", y: "ib" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static FLOW_CHART_MAGNETIC_TAPE_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_MAGNETIC_TAPE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_MAGNETIC_TAPE_GUIDES: &[GuideDef] = &[
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
gd!("ang1", Atan2, "w", "h", ""),
];
static FLOW_CHART_MAGNETIC_TAPE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_MAGNETIC_TAPE_GUIDES,
paths: FLOW_CHART_MAGNETIC_TAPE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_MANUAL_INPUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::LineTo { x: "5", y: "5" },
PathCommandDef::LineTo { x: "0", y: "5" },
PathCommandDef::Close,
];
static FLOW_CHART_MANUAL_INPUT_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_MANUAL_INPUT_CMDS,
w: Some(5),
h: Some(5),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_MANUAL_INPUT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: FLOW_CHART_MANUAL_INPUT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "hd5",
r: "r",
b: "b",
}),
};
static FLOW_CHART_MANUAL_OPERATION_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::LineTo { x: "4", y: "5" },
PathCommandDef::LineTo { x: "1", y: "5" },
PathCommandDef::Close,
];
static FLOW_CHART_MANUAL_OPERATION_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_MANUAL_OPERATION_CMDS,
w: Some(5),
h: Some(5),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_MANUAL_OPERATION_GUIDES: &[GuideDef] = &[
gd!("x3", MulDiv, "w", "4", "5"),
gd!("x4", MulDiv, "w", "9", "10"),
];
static FLOW_CHART_MANUAL_OPERATION: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_MANUAL_OPERATION_GUIDES,
paths: FLOW_CHART_MANUAL_OPERATION_PATHS,
text_rect: Some(TextRectDef {
l: "wd5",
t: "t",
r: "x3",
b: "b",
}),
};
static FLOW_CHART_MERGE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "2", y: "0" },
PathCommandDef::LineTo { x: "1", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_MERGE_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_MERGE_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_MERGE_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "3", "4")];
static FLOW_CHART_MERGE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_MERGE_GUIDES,
paths: FLOW_CHART_MERGE_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "t",
r: "x2",
b: "vc",
}),
};
static FLOW_CHART_MULTIDOCUMENT_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "20782" },
PathCommandDef::CubicBezTo {
x1: "9298",
y1: "23542",
x2: "9298",
y2: "18022",
x3: "18595",
y3: "18022",
},
PathCommandDef::LineTo {
x: "18595",
y: "3675",
},
PathCommandDef::LineTo { x: "0", y: "3675" },
PathCommandDef::Close,
PathCommandDef::MoveTo {
x: "1532",
y: "3675",
},
PathCommandDef::LineTo {
x: "1532",
y: "1815",
},
PathCommandDef::LineTo {
x: "20000",
y: "1815",
},
PathCommandDef::LineTo {
x: "20000",
y: "16252",
},
PathCommandDef::CubicBezTo {
x1: "19298",
y1: "16252",
x2: "18595",
y2: "16352",
x3: "18595",
y3: "16352",
},
PathCommandDef::LineTo {
x: "18595",
y: "3675",
},
PathCommandDef::Close,
PathCommandDef::MoveTo {
x: "2972",
y: "1815",
},
PathCommandDef::LineTo { x: "2972", y: "0" },
PathCommandDef::LineTo { x: "21600", y: "0" },
PathCommandDef::LineTo {
x: "21600",
y: "14392",
},
PathCommandDef::CubicBezTo {
x1: "20800",
y1: "14392",
x2: "20000",
y2: "14467",
x3: "20000",
y3: "14467",
},
PathCommandDef::LineTo {
x: "20000",
y: "1815",
},
PathCommandDef::Close,
];
static FLOW_CHART_MULTIDOCUMENT_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "3675" },
PathCommandDef::LineTo {
x: "18595",
y: "3675",
},
PathCommandDef::LineTo {
x: "18595",
y: "18022",
},
PathCommandDef::CubicBezTo {
x1: "9298",
y1: "18022",
x2: "9298",
y2: "23542",
x3: "0",
y3: "20782",
},
PathCommandDef::Close,
PathCommandDef::MoveTo {
x: "1532",
y: "3675",
},
PathCommandDef::LineTo {
x: "1532",
y: "1815",
},
PathCommandDef::LineTo {
x: "20000",
y: "1815",
},
PathCommandDef::LineTo {
x: "20000",
y: "16252",
},
PathCommandDef::CubicBezTo {
x1: "19298",
y1: "16252",
x2: "18595",
y2: "16352",
x3: "18595",
y3: "16352",
},
PathCommandDef::MoveTo {
x: "2972",
y: "1815",
},
PathCommandDef::LineTo { x: "2972", y: "0" },
PathCommandDef::LineTo { x: "21600", y: "0" },
PathCommandDef::LineTo {
x: "21600",
y: "14392",
},
PathCommandDef::CubicBezTo {
x1: "20800",
y1: "14392",
x2: "20000",
y2: "14467",
x3: "20000",
y3: "14467",
},
];
static FLOW_CHART_MULTIDOCUMENT_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "20782" },
PathCommandDef::CubicBezTo {
x1: "9298",
y1: "23542",
x2: "9298",
y2: "18022",
x3: "18595",
y3: "18022",
},
PathCommandDef::LineTo {
x: "18595",
y: "16352",
},
PathCommandDef::CubicBezTo {
x1: "18595",
y1: "16352",
x2: "19298",
y2: "16252",
x3: "20000",
y3: "16252",
},
PathCommandDef::LineTo {
x: "20000",
y: "14467",
},
PathCommandDef::CubicBezTo {
x1: "20000",
y1: "14467",
x2: "20800",
y2: "14392",
x3: "21600",
y3: "14392",
},
PathCommandDef::LineTo { x: "21600", y: "0" },
PathCommandDef::LineTo { x: "2972", y: "0" },
PathCommandDef::LineTo {
x: "2972",
y: "1815",
},
PathCommandDef::LineTo {
x: "1532",
y: "1815",
},
PathCommandDef::LineTo {
x: "1532",
y: "3675",
},
PathCommandDef::LineTo { x: "0", y: "3675" },
PathCommandDef::Close,
];
static FLOW_CHART_MULTIDOCUMENT_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_MULTIDOCUMENT_P0_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_MULTIDOCUMENT_P1_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_MULTIDOCUMENT_P2_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::None,
stroke: false,
},
];
static FLOW_CHART_MULTIDOCUMENT_GUIDES: &[GuideDef] = &[
gd!("y2", MulDiv, "h", "3675", "21600"),
gd!("y8", MulDiv, "h", "20782", "21600"),
gd!("x3", MulDiv, "w", "9298", "21600"),
gd!("x4", MulDiv, "w", "12286", "21600"),
gd!("x5", MulDiv, "w", "18595", "21600"),
];
static FLOW_CHART_MULTIDOCUMENT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_MULTIDOCUMENT_GUIDES,
paths: FLOW_CHART_MULTIDOCUMENT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y2",
r: "x5",
b: "y8",
}),
};
static FLOW_CHART_OFFLINE_STORAGE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "2", y: "0" },
PathCommandDef::LineTo { x: "1", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_OFFLINE_STORAGE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "2", y: "4" },
PathCommandDef::LineTo { x: "3", y: "4" },
];
static FLOW_CHART_OFFLINE_STORAGE_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "2", y: "0" },
PathCommandDef::LineTo { x: "1", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_OFFLINE_STORAGE_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_OFFLINE_STORAGE_P0_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_OFFLINE_STORAGE_P1_CMDS,
w: Some(5),
h: Some(5),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_OFFLINE_STORAGE_P2_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_OFFLINE_STORAGE_GUIDES: &[GuideDef] = &[gd!("x4", MulDiv, "w", "3", "4")];
static FLOW_CHART_OFFLINE_STORAGE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_OFFLINE_STORAGE_GUIDES,
paths: FLOW_CHART_OFFLINE_STORAGE_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "t",
r: "x4",
b: "vc",
}),
};
static FLOW_CHART_OFFPAGE_CONNECTOR_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "10", y: "0" },
PathCommandDef::LineTo { x: "10", y: "8" },
PathCommandDef::LineTo { x: "5", y: "10" },
PathCommandDef::LineTo { x: "0", y: "8" },
PathCommandDef::Close,
];
static FLOW_CHART_OFFPAGE_CONNECTOR_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_OFFPAGE_CONNECTOR_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_OFFPAGE_CONNECTOR_GUIDES: &[GuideDef] = &[gd!("y1", MulDiv, "h", "4", "5")];
static FLOW_CHART_OFFPAGE_CONNECTOR: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_OFFPAGE_CONNECTOR_GUIDES,
paths: FLOW_CHART_OFFPAGE_CONNECTOR_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "y1",
}),
};
static FLOW_CHART_ONLINE_STORAGE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "6", y: "0" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "1", y: "6" },
PathCommandDef::ArcTo {
wr: "1",
hr: "3",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_ONLINE_STORAGE_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_ONLINE_STORAGE_CMDS,
w: Some(6),
h: Some(6),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_ONLINE_STORAGE_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "5", "6")];
static FLOW_CHART_ONLINE_STORAGE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_ONLINE_STORAGE_GUIDES,
paths: FLOW_CHART_ONLINE_STORAGE_PATHS,
text_rect: Some(TextRectDef {
l: "wd6",
t: "t",
r: "x2",
b: "b",
}),
};
static FLOW_CHART_OR_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static FLOW_CHART_OR_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "r", y: "vc" },
];
static FLOW_CHART_OR_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static FLOW_CHART_OR_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_OR_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_OR_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_OR_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_OR_GUIDES: &[GuideDef] = &[
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static FLOW_CHART_OR: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_OR_GUIDES,
paths: FLOW_CHART_OR_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_PREDEFINED_PROCESS_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::LineTo { x: "0", y: "1" },
PathCommandDef::Close,
];
static FLOW_CHART_PREDEFINED_PROCESS_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "8" },
PathCommandDef::MoveTo { x: "7", y: "0" },
PathCommandDef::LineTo { x: "7", y: "8" },
];
static FLOW_CHART_PREDEFINED_PROCESS_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::LineTo { x: "0", y: "1" },
PathCommandDef::Close,
];
static FLOW_CHART_PREDEFINED_PROCESS_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_PREDEFINED_PROCESS_P0_CMDS,
w: Some(1),
h: Some(1),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_PREDEFINED_PROCESS_P1_CMDS,
w: Some(8),
h: Some(8),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_PREDEFINED_PROCESS_P2_CMDS,
w: Some(1),
h: Some(1),
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_PREDEFINED_PROCESS_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "7", "8")];
static FLOW_CHART_PREDEFINED_PROCESS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_PREDEFINED_PROCESS_GUIDES,
paths: FLOW_CHART_PREDEFINED_PROCESS_PATHS,
text_rect: Some(TextRectDef {
l: "wd8",
t: "t",
r: "x2",
b: "b",
}),
};
static FLOW_CHART_PREPARATION_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "5" },
PathCommandDef::LineTo { x: "2", y: "0" },
PathCommandDef::LineTo { x: "8", y: "0" },
PathCommandDef::LineTo { x: "10", y: "5" },
PathCommandDef::LineTo { x: "8", y: "10" },
PathCommandDef::LineTo { x: "2", y: "10" },
PathCommandDef::Close,
];
static FLOW_CHART_PREPARATION_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_PREPARATION_CMDS,
w: Some(10),
h: Some(10),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_PREPARATION_GUIDES: &[GuideDef] = &[gd!("x2", MulDiv, "w", "4", "5")];
static FLOW_CHART_PREPARATION: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_PREPARATION_GUIDES,
paths: FLOW_CHART_PREPARATION_PATHS,
text_rect: Some(TextRectDef {
l: "wd5",
t: "t",
r: "x2",
b: "b",
}),
};
static FLOW_CHART_PROCESS_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "0" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "1", y: "1" },
PathCommandDef::LineTo { x: "0", y: "1" },
PathCommandDef::Close,
];
static FLOW_CHART_PROCESS_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_PROCESS_CMDS,
w: Some(1),
h: Some(1),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_PROCESS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: FLOW_CHART_PROCESS_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static FLOW_CHART_PUNCHED_CARD_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "5", y: "0" },
PathCommandDef::LineTo { x: "5", y: "5" },
PathCommandDef::LineTo { x: "0", y: "5" },
PathCommandDef::Close,
];
static FLOW_CHART_PUNCHED_CARD_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_PUNCHED_CARD_CMDS,
w: Some(5),
h: Some(5),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_PUNCHED_CARD: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: FLOW_CHART_PUNCHED_CARD_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "hd5",
r: "r",
b: "b",
}),
};
static FLOW_CHART_PUNCHED_TAPE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "2" },
PathCommandDef::ArcTo {
wr: "5",
hr: "2",
st_ang: "cd2",
sw_ang: "-10800000",
},
PathCommandDef::ArcTo {
wr: "5",
hr: "2",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "20", y: "18" },
PathCommandDef::ArcTo {
wr: "5",
hr: "2",
st_ang: "0",
sw_ang: "-10800000",
},
PathCommandDef::ArcTo {
wr: "5",
hr: "2",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_PUNCHED_TAPE_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_PUNCHED_TAPE_CMDS,
w: Some(20),
h: Some(20),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_PUNCHED_TAPE_GUIDES: &[GuideDef] = &[
gd!("y2", MulDiv, "h", "9", "10"),
gd!("ib", MulDiv, "h", "4", "5"),
];
static FLOW_CHART_PUNCHED_TAPE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_PUNCHED_TAPE_GUIDES,
paths: FLOW_CHART_PUNCHED_TAPE_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "hd5",
r: "r",
b: "ib",
}),
};
static FLOW_CHART_SORT_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "2", y: "1" },
PathCommandDef::LineTo { x: "1", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_SORT_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "2", y: "1" },
];
static FLOW_CHART_SORT_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "0", y: "1" },
PathCommandDef::LineTo { x: "1", y: "0" },
PathCommandDef::LineTo { x: "2", y: "1" },
PathCommandDef::LineTo { x: "1", y: "2" },
PathCommandDef::Close,
];
static FLOW_CHART_SORT_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_SORT_P0_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_SORT_P1_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_SORT_P2_CMDS,
w: Some(2),
h: Some(2),
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_SORT_GUIDES: &[GuideDef] = &[
gd!("ir", MulDiv, "w", "3", "4"),
gd!("ib", MulDiv, "h", "3", "4"),
];
static FLOW_CHART_SORT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_SORT_GUIDES,
paths: FLOW_CHART_SORT_PATHS,
text_rect: Some(TextRectDef {
l: "wd4",
t: "hd4",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_SUMMING_JUNCTION_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static FLOW_CHART_SUMMING_JUNCTION_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "il", y: "it" },
PathCommandDef::LineTo { x: "ir", y: "ib" },
PathCommandDef::MoveTo { x: "ir", y: "it" },
PathCommandDef::LineTo { x: "il", y: "ib" },
];
static FLOW_CHART_SUMMING_JUNCTION_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static FLOW_CHART_SUMMING_JUNCTION_PATHS: &[PathDef] = &[
PathDef {
commands: FLOW_CHART_SUMMING_JUNCTION_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FLOW_CHART_SUMMING_JUNCTION_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: FLOW_CHART_SUMMING_JUNCTION_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static FLOW_CHART_SUMMING_JUNCTION_GUIDES: &[GuideDef] = &[
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static FLOW_CHART_SUMMING_JUNCTION: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_SUMMING_JUNCTION_GUIDES,
paths: FLOW_CHART_SUMMING_JUNCTION_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static FLOW_CHART_TERMINATOR_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "3475", y: "0" },
PathCommandDef::LineTo { x: "18125", y: "0" },
PathCommandDef::ArcTo {
wr: "3475",
hr: "10800",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo {
x: "3475",
y: "21600",
},
PathCommandDef::ArcTo {
wr: "3475",
hr: "10800",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static FLOW_CHART_TERMINATOR_PATHS: &[PathDef] = &[PathDef {
commands: FLOW_CHART_TERMINATOR_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::Norm,
stroke: true,
}];
static FLOW_CHART_TERMINATOR_GUIDES: &[GuideDef] = &[
gd!("il", MulDiv, "w", "1018", "21600"),
gd!("ir", MulDiv, "w", "20582", "21600"),
gd!("it", MulDiv, "h", "3163", "21600"),
gd!("ib", MulDiv, "h", "18437", "21600"),
];
static FLOW_CHART_TERMINATOR: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FLOW_CHART_TERMINATOR_GUIDES,
paths: FLOW_CHART_TERMINATOR_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static FOLDED_CORNER_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static FOLDED_CORNER_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::Close,
];
static FOLDED_CORNER_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y2" },
];
static FOLDED_CORNER_PATHS: &[PathDef] = &[
PathDef {
commands: FOLDED_CORNER_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FOLDED_CORNER_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: FOLDED_CORNER_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static FOLDED_CORNER_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dy2", MulDiv, "ss", "a", "100000"),
gd!("dy1", MulDiv, "dy2", "1", "5"),
gd!("x1", AddSub, "r", "0", "dy2"),
gd!("x2", AddSub, "x1", "dy1", "0"),
gd!("y2", AddSub, "b", "0", "dy2"),
gd!("y1", AddSub, "y2", "dy1", "0"),
];
static FOLDED_CORNER: PresetDef = PresetDef {
adjust_defaults: &[("adj", 16667)],
guides: FOLDED_CORNER_GUIDES,
paths: FOLDED_CORNER_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "y2",
}),
};
static FRAME_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x1", y: "x1" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "x1" },
PathCommandDef::Close,
];
static FRAME_PATHS: &[PathDef] = &[PathDef {
commands: FRAME_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static FRAME_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("x1", MulDiv, "ss", "a1", "100000"),
gd!("x4", AddSub, "r", "0", "x1"),
gd!("y4", AddSub, "b", "0", "x1"),
];
static FRAME: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 12500)],
guides: FRAME_GUIDES,
paths: FRAME_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "x1",
r: "x4",
b: "y4",
}),
};
static FUNNEL_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd4",
st_ang: "stAng1",
sw_ang: "swAng1",
},
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::ArcTo {
wr: "rw3",
hr: "rh3",
st_ang: "da",
sw_ang: "swAng3",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x2", y: "hd4" },
PathCommandDef::ArcTo {
wr: "rw2",
hr: "rh2",
st_ang: "cd2",
sw_ang: "-21600000",
},
PathCommandDef::Close,
];
static FUNNEL_PATHS: &[PathDef] = &[PathDef {
commands: FUNNEL_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static FUNNEL_GUIDES: &[GuideDef] = &[
gd!("d", MulDiv, "ss", "1", "20"),
gd!("rw2", AddSub, "wd2", "0", "d"),
gd!("rh2", AddSub, "hd4", "0", "d"),
gd!("t1", Cos, "wd2", "480000", ""),
gd!("t2", Sin, "hd4", "480000", ""),
gd!("da", Atan2, "t1", "t2", ""),
gd!("2da", MulDiv, "da", "2", "1"),
gd!("stAng1", AddSub, "cd2", "0", "da"),
gd!("swAng1", AddSub, "cd2", "2da", "0"),
gd!("swAng3", AddSub, "cd2", "0", "2da"),
gd!("rw3", MulDiv, "wd2", "1", "4"),
gd!("rh3", MulDiv, "hd4", "1", "4"),
gd!("ct1", Cos, "hd4", "stAng1", ""),
gd!("st1", Sin, "wd2", "stAng1", ""),
gd!("m1", Mod, "ct1", "st1", "0"),
gd!("n1", MulDiv, "wd2", "hd4", "m1"),
gd!("dx1", Cos, "n1", "stAng1", ""),
gd!("dy1", Sin, "n1", "stAng1", ""),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "hd4", "dy1", "0"),
gd!("ct3", Cos, "rh3", "da", ""),
gd!("st3", Sin, "rw3", "da", ""),
gd!("m3", Mod, "ct3", "st3", "0"),
gd!("n3", MulDiv, "rw3", "rh3", "m3"),
gd!("dx3", Cos, "n3", "da", ""),
gd!("dy3", Sin, "n3", "da", ""),
gd!("x3", AddSub, "hc", "dx3", "0"),
gd!("vc3", AddSub, "b", "0", "rh3"),
gd!("y2", AddSub, "vc3", "dy3", "0"),
gd!("x2", AddSub, "wd2", "0", "rw2"),
gd!("cd", MulDiv, "cd2", "2", "1"),
];
static FUNNEL: PresetDef = PresetDef {
adjust_defaults: &[],
guides: FUNNEL_GUIDES,
paths: FUNNEL_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static GEAR6_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "xA1", y: "yA1" },
PathCommandDef::LineTo { x: "xB1", y: "yB1" },
PathCommandDef::LineTo { x: "xC1", y: "yC1" },
PathCommandDef::LineTo { x: "xD1", y: "yD1" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD1",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "xC1", y: "yB2" },
PathCommandDef::LineTo { x: "xB1", y: "yC2" },
PathCommandDef::LineTo { x: "xA1", y: "yD2" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD2",
sw_ang: "swAng1",
},
PathCommandDef::LineTo { x: "xF6", y: "yB3" },
PathCommandDef::LineTo { x: "xE6", y: "yB3" },
PathCommandDef::LineTo { x: "xA6", y: "yD3" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD3",
sw_ang: "swAng1",
},
PathCommandDef::LineTo { x: "xB4", y: "yC2" },
PathCommandDef::LineTo { x: "xC4", y: "yB2" },
PathCommandDef::LineTo { x: "xD4", y: "yA2" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD4",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "xB5", y: "yC1" },
PathCommandDef::LineTo { x: "xC5", y: "yB1" },
PathCommandDef::LineTo { x: "xD5", y: "yA1" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD5",
sw_ang: "swAng1",
},
PathCommandDef::LineTo { x: "xE6", y: "yC6" },
PathCommandDef::LineTo { x: "xF6", y: "yC6" },
PathCommandDef::LineTo { x: "xD6", y: "yD6" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD6",
sw_ang: "swAng1",
},
PathCommandDef::Close,
];
static GEAR6_PATHS: &[PathDef] = &[PathDef {
commands: GEAR6_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static GEAR6_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "20000"),
gd!("a2", Pin, "0", "adj2", "5358"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("lFD", MulDiv, "ss", "a2", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("l2", MulDiv, "lFD", "1", "2"),
gd!("l3", AddSub, "th2", "l2", "0"),
gd!("rh", AddSub, "hd2", "0", "th"),
gd!("rw", AddSub, "wd2", "0", "th"),
gd!("dr", AddSub, "rw", "0", "rh"),
gd!("maxr", IfElse, "dr", "rh", "rw"),
gd!("ha", Atan2, "maxr", "l3", ""),
gd!("aA1", AddSub, "19800000", "0", "ha"),
gd!("aD1", AddSub, "19800000", "ha", "0"),
gd!("ta11", Cos, "rw", "aA1", ""),
gd!("ta12", Sin, "rh", "aA1", ""),
gd!("bA1", Atan2, "ta11", "ta12", ""),
gd!("cta1", Cos, "rh", "bA1", ""),
gd!("sta1", Sin, "rw", "bA1", ""),
gd!("ma1", Mod, "cta1", "sta1", "0"),
gd!("na1", MulDiv, "rw", "rh", "ma1"),
gd!("dxa1", Cos, "na1", "bA1", ""),
gd!("dya1", Sin, "na1", "bA1", ""),
gd!("xA1", AddSub, "hc", "dxa1", "0"),
gd!("yA1", AddSub, "vc", "dya1", "0"),
gd!("td11", Cos, "rw", "aD1", ""),
gd!("td12", Sin, "rh", "aD1", ""),
gd!("bD1", Atan2, "td11", "td12", ""),
gd!("ctd1", Cos, "rh", "bD1", ""),
gd!("std1", Sin, "rw", "bD1", ""),
gd!("md1", Mod, "ctd1", "std1", "0"),
gd!("nd1", MulDiv, "rw", "rh", "md1"),
gd!("dxd1", Cos, "nd1", "bD1", ""),
gd!("dyd1", Sin, "nd1", "bD1", ""),
gd!("xD1", AddSub, "hc", "dxd1", "0"),
gd!("yD1", AddSub, "vc", "dyd1", "0"),
gd!("xAD1", AddSub, "xA1", "0", "xD1"),
gd!("yAD1", AddSub, "yA1", "0", "yD1"),
gd!("lAD1", Mod, "xAD1", "yAD1", "0"),
gd!("a1", Atan2, "yAD1", "xAD1", ""),
gd!("dxF1", Sin, "lFD", "a1", ""),
gd!("dyF1", Cos, "lFD", "a1", ""),
gd!("xF1", AddSub, "xD1", "dxF1", "0"),
gd!("yF1", AddSub, "yD1", "dyF1", "0"),
gd!("xE1", AddSub, "xA1", "0", "dxF1"),
gd!("yE1", AddSub, "yA1", "0", "dyF1"),
gd!("yC1t", Sin, "th", "a1", ""),
gd!("xC1t", Cos, "th", "a1", ""),
gd!("yC1", AddSub, "yF1", "yC1t", "0"),
gd!("xC1", AddSub, "xF1", "0", "xC1t"),
gd!("yB1", AddSub, "yE1", "yC1t", "0"),
gd!("xB1", AddSub, "xE1", "0", "xC1t"),
gd!("aD6", AddSub, "3cd4", "ha", "0"),
gd!("td61", Cos, "rw", "aD6", ""),
gd!("td62", Sin, "rh", "aD6", ""),
gd!("bD6", Atan2, "td61", "td62", ""),
gd!("ctd6", Cos, "rh", "bD6", ""),
gd!("std6", Sin, "rw", "bD6", ""),
gd!("md6", Mod, "ctd6", "std6", "0"),
gd!("nd6", MulDiv, "rw", "rh", "md6"),
gd!("dxd6", Cos, "nd6", "bD6", ""),
gd!("dyd6", Sin, "nd6", "bD6", ""),
gd!("xD6", AddSub, "hc", "dxd6", "0"),
gd!("yD6", AddSub, "vc", "dyd6", "0"),
gd!("xA6", AddSub, "hc", "0", "dxd6"),
gd!("xF6", AddSub, "xD6", "0", "lFD"),
gd!("xE6", AddSub, "xA6", "lFD", "0"),
gd!("yC6", AddSub, "yD6", "0", "th"),
gd!("swAng1", AddSub, "bA1", "0", "bD6"),
gd!("aA2", AddSub, "1800000", "0", "ha"),
gd!("aD2", AddSub, "1800000", "ha", "0"),
gd!("ta21", Cos, "rw", "aA2", ""),
gd!("ta22", Sin, "rh", "aA2", ""),
gd!("bA2", Atan2, "ta21", "ta22", ""),
gd!("yA2", AddSub, "h", "0", "yD1"),
gd!("td21", Cos, "rw", "aD2", ""),
gd!("td22", Sin, "rh", "aD2", ""),
gd!("bD2", Atan2, "td21", "td22", ""),
gd!("yD2", AddSub, "h", "0", "yA1"),
gd!("yC2", AddSub, "h", "0", "yB1"),
gd!("yB2", AddSub, "h", "0", "yC1"),
gd!("xB2", Val, "xC1", "", ""),
gd!("swAng2", AddSub, "bA2", "0", "bD1"),
gd!("aD3", AddSub, "cd4", "ha", "0"),
gd!("td31", Cos, "rw", "aD3", ""),
gd!("td32", Sin, "rh", "aD3", ""),
gd!("bD3", Atan2, "td31", "td32", ""),
gd!("yD3", AddSub, "h", "0", "yD6"),
gd!("yB3", AddSub, "h", "0", "yC6"),
gd!("aD4", AddSub, "9000000", "ha", "0"),
gd!("td41", Cos, "rw", "aD4", ""),
gd!("td42", Sin, "rh", "aD4", ""),
gd!("bD4", Atan2, "td41", "td42", ""),
gd!("xD4", AddSub, "w", "0", "xD1"),
gd!("xC4", AddSub, "w", "0", "xC1"),
gd!("xB4", AddSub, "w", "0", "xB1"),
gd!("aD5", AddSub, "12600000", "ha", "0"),
gd!("td51", Cos, "rw", "aD5", ""),
gd!("td52", Sin, "rh", "aD5", ""),
gd!("bD5", Atan2, "td51", "td52", ""),
gd!("xD5", AddSub, "w", "0", "xA1"),
gd!("xC5", AddSub, "w", "0", "xB1"),
gd!("xB5", AddSub, "w", "0", "xC1"),
gd!("xCxn1", AddDiv, "xB1", "xC1", "2"),
gd!("yCxn1", AddDiv, "yB1", "yC1", "2"),
gd!("yCxn2", AddSub, "b", "0", "yCxn1"),
gd!("xCxn4", AddDiv, "r", "0", "xCxn1"),
];
static GEAR6: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 15000), ("adj2", 3526)],
guides: GEAR6_GUIDES,
paths: GEAR6_PATHS,
text_rect: Some(TextRectDef {
l: "xD5",
t: "yA1",
r: "xA1",
b: "yD2",
}),
};
static GEAR9_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "xA1", y: "yA1" },
PathCommandDef::LineTo { x: "xB1", y: "yB1" },
PathCommandDef::LineTo { x: "xC1", y: "yC1" },
PathCommandDef::LineTo { x: "xD1", y: "yD1" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD1",
sw_ang: "swAng1",
},
PathCommandDef::LineTo { x: "xB2", y: "yB2" },
PathCommandDef::LineTo { x: "xC2", y: "yC2" },
PathCommandDef::LineTo { x: "xD2", y: "yD2" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD2",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "xB3", y: "yB3" },
PathCommandDef::LineTo { x: "xC3", y: "yC3" },
PathCommandDef::LineTo { x: "xD3", y: "yD3" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD3",
sw_ang: "swAng3",
},
PathCommandDef::LineTo { x: "xB4", y: "yB4" },
PathCommandDef::LineTo { x: "xC4", y: "yC4" },
PathCommandDef::LineTo { x: "xD4", y: "yD4" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD4",
sw_ang: "swAng4",
},
PathCommandDef::LineTo { x: "xB5", y: "yC4" },
PathCommandDef::LineTo { x: "xC5", y: "yB4" },
PathCommandDef::LineTo { x: "xD5", y: "yA4" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD5",
sw_ang: "swAng3",
},
PathCommandDef::LineTo { x: "xB6", y: "yC3" },
PathCommandDef::LineTo { x: "xC6", y: "yB3" },
PathCommandDef::LineTo { x: "xD6", y: "yA3" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD6",
sw_ang: "swAng2",
},
PathCommandDef::LineTo { x: "xB7", y: "yC2" },
PathCommandDef::LineTo { x: "xC7", y: "yB2" },
PathCommandDef::LineTo { x: "xD7", y: "yA2" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD7",
sw_ang: "swAng1",
},
PathCommandDef::LineTo { x: "xB8", y: "yC1" },
PathCommandDef::LineTo { x: "xC8", y: "yB1" },
PathCommandDef::LineTo { x: "xD8", y: "yA1" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD8",
sw_ang: "swAng5",
},
PathCommandDef::LineTo { x: "xE9", y: "yC9" },
PathCommandDef::LineTo { x: "xF9", y: "yC9" },
PathCommandDef::LineTo { x: "xD9", y: "yD9" },
PathCommandDef::ArcTo {
wr: "rw",
hr: "rh",
st_ang: "bD9",
sw_ang: "swAng5",
},
PathCommandDef::Close,
];
static GEAR9_PATHS: &[PathDef] = &[PathDef {
commands: GEAR9_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static GEAR9_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "20000"),
gd!("a2", Pin, "0", "adj2", "2679"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("lFD", MulDiv, "ss", "a2", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("l2", MulDiv, "lFD", "1", "2"),
gd!("l3", AddSub, "th2", "l2", "0"),
gd!("rh", AddSub, "hd2", "0", "th"),
gd!("rw", AddSub, "wd2", "0", "th"),
gd!("dr", AddSub, "rw", "0", "rh"),
gd!("maxr", IfElse, "dr", "rh", "rw"),
gd!("ha", Atan2, "maxr", "l3", ""),
gd!("aA1", AddSub, "18600000", "0", "ha"),
gd!("aD1", AddSub, "18600000", "ha", "0"),
gd!("ta11", Cos, "rw", "aA1", ""),
gd!("ta12", Sin, "rh", "aA1", ""),
gd!("bA1", Atan2, "ta11", "ta12", ""),
gd!("cta1", Cos, "rh", "bA1", ""),
gd!("sta1", Sin, "rw", "bA1", ""),
gd!("ma1", Mod, "cta1", "sta1", "0"),
gd!("na1", MulDiv, "rw", "rh", "ma1"),
gd!("dxa1", Cos, "na1", "bA1", ""),
gd!("dya1", Sin, "na1", "bA1", ""),
gd!("xA1", AddSub, "hc", "dxa1", "0"),
gd!("yA1", AddSub, "vc", "dya1", "0"),
gd!("td11", Cos, "rw", "aD1", ""),
gd!("td12", Sin, "rh", "aD1", ""),
gd!("bD1", Atan2, "td11", "td12", ""),
gd!("ctd1", Cos, "rh", "bD1", ""),
gd!("std1", Sin, "rw", "bD1", ""),
gd!("md1", Mod, "ctd1", "std1", "0"),
gd!("nd1", MulDiv, "rw", "rh", "md1"),
gd!("dxd1", Cos, "nd1", "bD1", ""),
gd!("dyd1", Sin, "nd1", "bD1", ""),
gd!("xD1", AddSub, "hc", "dxd1", "0"),
gd!("yD1", AddSub, "vc", "dyd1", "0"),
gd!("xAD1", AddSub, "xA1", "0", "xD1"),
gd!("yAD1", AddSub, "yA1", "0", "yD1"),
gd!("lAD1", Mod, "xAD1", "yAD1", "0"),
gd!("a1", Atan2, "yAD1", "xAD1", ""),
gd!("dxF1", Sin, "lFD", "a1", ""),
gd!("dyF1", Cos, "lFD", "a1", ""),
gd!("xF1", AddSub, "xD1", "dxF1", "0"),
gd!("yF1", AddSub, "yD1", "dyF1", "0"),
gd!("xE1", AddSub, "xA1", "0", "dxF1"),
gd!("yE1", AddSub, "yA1", "0", "dyF1"),
gd!("yC1t", Sin, "th", "a1", ""),
gd!("xC1t", Cos, "th", "a1", ""),
gd!("yC1", AddSub, "yF1", "yC1t", "0"),
gd!("xC1", AddSub, "xF1", "0", "xC1t"),
gd!("yB1", AddSub, "yE1", "yC1t", "0"),
gd!("xB1", AddSub, "xE1", "0", "xC1t"),
gd!("aA2", AddSub, "21000000", "0", "ha"),
gd!("aD2", AddSub, "21000000", "ha", "0"),
gd!("ta21", Cos, "rw", "aA2", ""),
gd!("ta22", Sin, "rh", "aA2", ""),
gd!("bA2", Atan2, "ta21", "ta22", ""),
gd!("cta2", Cos, "rh", "bA2", ""),
gd!("sta2", Sin, "rw", "bA2", ""),
gd!("ma2", Mod, "cta2", "sta2", "0"),
gd!("na2", MulDiv, "rw", "rh", "ma2"),
gd!("dxa2", Cos, "na2", "bA2", ""),
gd!("dya2", Sin, "na2", "bA2", ""),
gd!("xA2", AddSub, "hc", "dxa2", "0"),
gd!("yA2", AddSub, "vc", "dya2", "0"),
gd!("td21", Cos, "rw", "aD2", ""),
gd!("td22", Sin, "rh", "aD2", ""),
gd!("bD2", Atan2, "td21", "td22", ""),
gd!("ctd2", Cos, "rh", "bD2", ""),
gd!("std2", Sin, "rw", "bD2", ""),
gd!("md2", Mod, "ctd2", "std2", "0"),
gd!("nd2", MulDiv, "rw", "rh", "md2"),
gd!("dxd2", Cos, "nd2", "bD2", ""),
gd!("dyd2", Sin, "nd2", "bD2", ""),
gd!("xD2", AddSub, "hc", "dxd2", "0"),
gd!("yD2", AddSub, "vc", "dyd2", "0"),
gd!("xAD2", AddSub, "xA2", "0", "xD2"),
gd!("yAD2", AddSub, "yA2", "0", "yD2"),
gd!("lAD2", Mod, "xAD2", "yAD2", "0"),
gd!("a2", Atan2, "yAD2", "xAD2", ""),
gd!("dxF2", Sin, "lFD", "a2", ""),
gd!("dyF2", Cos, "lFD", "a2", ""),
gd!("xF2", AddSub, "xD2", "dxF2", "0"),
gd!("yF2", AddSub, "yD2", "dyF2", "0"),
gd!("xE2", AddSub, "xA2", "0", "dxF2"),
gd!("yE2", AddSub, "yA2", "0", "dyF2"),
gd!("yC2t", Sin, "th", "a2", ""),
gd!("xC2t", Cos, "th", "a2", ""),
gd!("yC2", AddSub, "yF2", "yC2t", "0"),
gd!("xC2", AddSub, "xF2", "0", "xC2t"),
gd!("yB2", AddSub, "yE2", "yC2t", "0"),
gd!("xB2", AddSub, "xE2", "0", "xC2t"),
gd!("swAng1", AddSub, "bA2", "0", "bD1"),
gd!("aA3", AddSub, "1800000", "0", "ha"),
gd!("aD3", AddSub, "1800000", "ha", "0"),
gd!("ta31", Cos, "rw", "aA3", ""),
gd!("ta32", Sin, "rh", "aA3", ""),
gd!("bA3", Atan2, "ta31", "ta32", ""),
gd!("cta3", Cos, "rh", "bA3", ""),
gd!("sta3", Sin, "rw", "bA3", ""),
gd!("ma3", Mod, "cta3", "sta3", "0"),
gd!("na3", MulDiv, "rw", "rh", "ma3"),
gd!("dxa3", Cos, "na3", "bA3", ""),
gd!("dya3", Sin, "na3", "bA3", ""),
gd!("xA3", AddSub, "hc", "dxa3", "0"),
gd!("yA3", AddSub, "vc", "dya3", "0"),
gd!("td31", Cos, "rw", "aD3", ""),
gd!("td32", Sin, "rh", "aD3", ""),
gd!("bD3", Atan2, "td31", "td32", ""),
gd!("ctd3", Cos, "rh", "bD3", ""),
gd!("std3", Sin, "rw", "bD3", ""),
gd!("md3", Mod, "ctd3", "std3", "0"),
gd!("nd3", MulDiv, "rw", "rh", "md3"),
gd!("dxd3", Cos, "nd3", "bD3", ""),
gd!("dyd3", Sin, "nd3", "bD3", ""),
gd!("xD3", AddSub, "hc", "dxd3", "0"),
gd!("yD3", AddSub, "vc", "dyd3", "0"),
gd!("xAD3", AddSub, "xA3", "0", "xD3"),
gd!("yAD3", AddSub, "yA3", "0", "yD3"),
gd!("lAD3", Mod, "xAD3", "yAD3", "0"),
gd!("a3", Atan2, "yAD3", "xAD3", ""),
gd!("dxF3", Sin, "lFD", "a3", ""),
gd!("dyF3", Cos, "lFD", "a3", ""),
gd!("xF3", AddSub, "xD3", "dxF3", "0"),
gd!("yF3", AddSub, "yD3", "dyF3", "0"),
gd!("xE3", AddSub, "xA3", "0", "dxF3"),
gd!("yE3", AddSub, "yA3", "0", "dyF3"),
gd!("yC3t", Sin, "th", "a3", ""),
gd!("xC3t", Cos, "th", "a3", ""),
gd!("yC3", AddSub, "yF3", "yC3t", "0"),
gd!("xC3", AddSub, "xF3", "0", "xC3t"),
gd!("yB3", AddSub, "yE3", "yC3t", "0"),
gd!("xB3", AddSub, "xE3", "0", "xC3t"),
gd!("swAng2", AddSub, "bA3", "0", "bD2"),
gd!("aA4", AddSub, "4200000", "0", "ha"),
gd!("aD4", AddSub, "4200000", "ha", "0"),
gd!("ta41", Cos, "rw", "aA4", ""),
gd!("ta42", Sin, "rh", "aA4", ""),
gd!("bA4", Atan2, "ta41", "ta42", ""),
gd!("cta4", Cos, "rh", "bA4", ""),
gd!("sta4", Sin, "rw", "bA4", ""),
gd!("ma4", Mod, "cta4", "sta4", "0"),
gd!("na4", MulDiv, "rw", "rh", "ma4"),
gd!("dxa4", Cos, "na4", "bA4", ""),
gd!("dya4", Sin, "na4", "bA4", ""),
gd!("xA4", AddSub, "hc", "dxa4", "0"),
gd!("yA4", AddSub, "vc", "dya4", "0"),
gd!("td41", Cos, "rw", "aD4", ""),
gd!("td42", Sin, "rh", "aD4", ""),
gd!("bD4", Atan2, "td41", "td42", ""),
gd!("ctd4", Cos, "rh", "bD4", ""),
gd!("std4", Sin, "rw", "bD4", ""),
gd!("md4", Mod, "ctd4", "std4", "0"),
gd!("nd4", MulDiv, "rw", "rh", "md4"),
gd!("dxd4", Cos, "nd4", "bD4", ""),
gd!("dyd4", Sin, "nd4", "bD4", ""),
gd!("xD4", AddSub, "hc", "dxd4", "0"),
gd!("yD4", AddSub, "vc", "dyd4", "0"),
gd!("xAD4", AddSub, "xA4", "0", "xD4"),
gd!("yAD4", AddSub, "yA4", "0", "yD4"),
gd!("lAD4", Mod, "xAD4", "yAD4", "0"),
gd!("a4", Atan2, "yAD4", "xAD4", ""),
gd!("dxF4", Sin, "lFD", "a4", ""),
gd!("dyF4", Cos, "lFD", "a4", ""),
gd!("xF4", AddSub, "xD4", "dxF4", "0"),
gd!("yF4", AddSub, "yD4", "dyF4", "0"),
gd!("xE4", AddSub, "xA4", "0", "dxF4"),
gd!("yE4", AddSub, "yA4", "0", "dyF4"),
gd!("yC4t", Sin, "th", "a4", ""),
gd!("xC4t", Cos, "th", "a4", ""),
gd!("yC4", AddSub, "yF4", "yC4t", "0"),
gd!("xC4", AddSub, "xF4", "0", "xC4t"),
gd!("yB4", AddSub, "yE4", "yC4t", "0"),
gd!("xB4", AddSub, "xE4", "0", "xC4t"),
gd!("swAng3", AddSub, "bA4", "0", "bD3"),
gd!("aA5", AddSub, "6600000", "0", "ha"),
gd!("aD5", AddSub, "6600000", "ha", "0"),
gd!("ta51", Cos, "rw", "aA5", ""),
gd!("ta52", Sin, "rh", "aA5", ""),
gd!("bA5", Atan2, "ta51", "ta52", ""),
gd!("td51", Cos, "rw", "aD5", ""),
gd!("td52", Sin, "rh", "aD5", ""),
gd!("bD5", Atan2, "td51", "td52", ""),
gd!("xD5", AddSub, "w", "0", "xA4"),
gd!("xC5", AddSub, "w", "0", "xB4"),
gd!("xB5", AddSub, "w", "0", "xC4"),
gd!("swAng4", AddSub, "bA5", "0", "bD4"),
gd!("aD6", AddSub, "9000000", "ha", "0"),
gd!("td61", Cos, "rw", "aD6", ""),
gd!("td62", Sin, "rh", "aD6", ""),
gd!("bD6", Atan2, "td61", "td62", ""),
gd!("xD6", AddSub, "w", "0", "xA3"),
gd!("xC6", AddSub, "w", "0", "xB3"),
gd!("xB6", AddSub, "w", "0", "xC3"),
gd!("aD7", AddSub, "11400000", "ha", "0"),
gd!("td71", Cos, "rw", "aD7", ""),
gd!("td72", Sin, "rh", "aD7", ""),
gd!("bD7", Atan2, "td71", "td72", ""),
gd!("xD7", AddSub, "w", "0", "xA2"),
gd!("xC7", AddSub, "w", "0", "xB2"),
gd!("xB7", AddSub, "w", "0", "xC2"),
gd!("aD8", AddSub, "13800000", "ha", "0"),
gd!("td81", Cos, "rw", "aD8", ""),
gd!("td82", Sin, "rh", "aD8", ""),
gd!("bD8", Atan2, "td81", "td82", ""),
gd!("xA8", AddSub, "w", "0", "xD1"),
gd!("xD8", AddSub, "w", "0", "xA1"),
gd!("xC8", AddSub, "w", "0", "xB1"),
gd!("xB8", AddSub, "w", "0", "xC1"),
gd!("aA9", AddSub, "3cd4", "0", "ha"),
gd!("aD9", AddSub, "3cd4", "ha", "0"),
gd!("td91", Cos, "rw", "aD9", ""),
gd!("td92", Sin, "rh", "aD9", ""),
gd!("bD9", Atan2, "td91", "td92", ""),
gd!("ctd9", Cos, "rh", "bD9", ""),
gd!("std9", Sin, "rw", "bD9", ""),
gd!("md9", Mod, "ctd9", "std9", "0"),
gd!("nd9", MulDiv, "rw", "rh", "md9"),
gd!("dxd9", Cos, "nd9", "bD9", ""),
gd!("dyd9", Sin, "nd9", "bD9", ""),
gd!("xD9", AddSub, "hc", "dxd9", "0"),
gd!("yD9", AddSub, "vc", "dyd9", "0"),
gd!("ta91", Cos, "rw", "aA9", ""),
gd!("ta92", Sin, "rh", "aA9", ""),
gd!("bA9", Atan2, "ta91", "ta92", ""),
gd!("xA9", AddSub, "hc", "0", "dxd9"),
gd!("xF9", AddSub, "xD9", "0", "lFD"),
gd!("xE9", AddSub, "xA9", "lFD", "0"),
gd!("yC9", AddSub, "yD9", "0", "th"),
gd!("swAng5", AddSub, "bA9", "0", "bD8"),
gd!("xCxn1", AddDiv, "xB1", "xC1", "2"),
gd!("yCxn1", AddDiv, "yB1", "yC1", "2"),
gd!("xCxn2", AddDiv, "xB2", "xC2", "2"),
gd!("yCxn2", AddDiv, "yB2", "yC2", "2"),
gd!("xCxn3", AddDiv, "xB3", "xC3", "2"),
gd!("yCxn3", AddDiv, "yB3", "yC3", "2"),
gd!("xCxn4", AddDiv, "xB4", "xC4", "2"),
gd!("yCxn4", AddDiv, "yB4", "yC4", "2"),
gd!("xCxn5", AddDiv, "r", "0", "xCxn4"),
gd!("xCxn6", AddDiv, "r", "0", "xCxn3"),
gd!("xCxn7", AddDiv, "r", "0", "xCxn2"),
gd!("xCxn8", AddDiv, "r", "0", "xCxn1"),
];
static GEAR9: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 10000), ("adj2", 1763)],
guides: GEAR9_GUIDES,
paths: GEAR9_PATHS,
text_rect: Some(TextRectDef {
l: "xA8",
t: "yD1",
r: "xD1",
b: "yD3",
}),
};
static HALF_FRAME_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static HALF_FRAME_PATHS: &[PathDef] = &[PathDef {
commands: HALF_FRAME_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static HALF_FRAME_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "100000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("x1", MulDiv, "ss", "a2", "100000"),
gd!("g1", MulDiv, "h", "x1", "w"),
gd!("g2", AddSub, "h", "0", "g1"),
gd!("maxAdj1", MulDiv, "100000", "g2", "ss"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("y1", MulDiv, "ss", "a1", "100000"),
gd!("dx2", MulDiv, "y1", "w", "h"),
gd!("x2", AddSub, "r", "0", "dx2"),
gd!("dy2", MulDiv, "x1", "h", "w"),
gd!("y2", AddSub, "b", "0", "dy2"),
gd!("cx1", MulDiv, "x1", "1", "2"),
gd!("cy1", AddDiv, "y2", "b", "2"),
gd!("cx2", AddDiv, "x2", "r", "2"),
gd!("cy2", MulDiv, "y1", "1", "2"),
];
static HALF_FRAME: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 33333), ("adj2", 33333)],
guides: HALF_FRAME_GUIDES,
paths: HALF_FRAME_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static HEART_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "hd4" },
PathCommandDef::CubicBezTo {
x1: "x3",
y1: "y1",
x2: "x4",
y2: "hd4",
x3: "hc",
y3: "b",
},
PathCommandDef::CubicBezTo {
x1: "x1",
y1: "hd4",
x2: "x2",
y2: "y1",
x3: "hc",
y3: "hd4",
},
PathCommandDef::Close,
];
static HEART_PATHS: &[PathDef] = &[PathDef {
commands: HEART_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static HEART_GUIDES: &[GuideDef] = &[
gd!("dx1", MulDiv, "w", "49", "48"),
gd!("dx2", MulDiv, "w", "10", "48"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "t", "0", "hd3"),
gd!("il", MulDiv, "w", "1", "6"),
gd!("ir", MulDiv, "w", "5", "6"),
gd!("ib", MulDiv, "h", "2", "3"),
];
static HEART: PresetDef = PresetDef {
adjust_defaults: &[],
guides: HEART_GUIDES,
paths: HEART_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "hd4",
r: "ir",
b: "ib",
}),
};
static HEPTAGON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x5", y: "y1" },
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::Close,
];
static HEPTAGON_PATHS: &[PathDef] = &[PathDef {
commands: HEPTAGON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static HEPTAGON_GUIDES: &[GuideDef] = &[
gd!("swd2", MulDiv, "wd2", "hf", "100000"),
gd!("shd2", MulDiv, "hd2", "vf", "100000"),
gd!("svc", MulDiv, "vc", "vf", "100000"),
gd!("dx1", MulDiv, "swd2", "97493", "100000"),
gd!("dx2", MulDiv, "swd2", "78183", "100000"),
gd!("dx3", MulDiv, "swd2", "43388", "100000"),
gd!("dy1", MulDiv, "shd2", "62349", "100000"),
gd!("dy2", MulDiv, "shd2", "22252", "100000"),
gd!("dy3", MulDiv, "shd2", "90097", "100000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "dx3", "0"),
gd!("x5", AddSub, "hc", "dx2", "0"),
gd!("x6", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "svc", "0", "dy1"),
gd!("y2", AddSub, "svc", "dy2", "0"),
gd!("y3", AddSub, "svc", "dy3", "0"),
gd!("ib", AddSub, "b", "0", "y1"),
];
static HEPTAGON: PresetDef = PresetDef {
adjust_defaults: &[("hf", 102572), ("vf", 105210)],
guides: HEPTAGON_GUIDES,
paths: HEPTAGON_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "y1",
r: "x5",
b: "ib",
}),
};
static HEXAGON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
];
static HEXAGON_PATHS: &[PathDef] = &[PathDef {
commands: HEXAGON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static HEXAGON_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "50000", "w", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("shd2", MulDiv, "hd2", "vf", "100000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("dy1", Sin, "shd2", "3600000", ""),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("q1", MulDiv, "maxAdj", "-1", "2"),
gd!("q2", AddSub, "a", "q1", "0"),
gd!("q3", IfElse, "q2", "4", "2"),
gd!("q4", IfElse, "q2", "3", "2"),
gd!("q5", IfElse, "q2", "q1", "0"),
gd!("q6", AddDiv, "a", "q5", "q1"),
gd!("q7", MulDiv, "q6", "q4", "-1"),
gd!("q8", AddSub, "q3", "q7", "0"),
gd!("il", MulDiv, "w", "q8", "24"),
gd!("it", MulDiv, "h", "q8", "24"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "it"),
];
static HEXAGON: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000), ("vf", 115470)],
guides: HEXAGON_GUIDES,
paths: HEXAGON_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static HOME_PLATE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static HOME_PLATE_PATHS: &[PathDef] = &[PathDef {
commands: HOME_PLATE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static HOME_PLATE_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "100000", "w", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("dx1", MulDiv, "ss", "a", "100000"),
gd!("x1", AddSub, "r", "0", "dx1"),
gd!("ir", AddDiv, "x1", "r", "2"),
gd!("x2", MulDiv, "x1", "1", "2"),
];
static HOME_PLATE: PresetDef = PresetDef {
adjust_defaults: &[("adj", 50000)],
guides: HOME_PLATE_GUIDES,
paths: HOME_PLATE_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "ir",
b: "b",
}),
};
static HORIZONTAL_SCROLL_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x4", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x3", y: "ch" },
PathCommandDef::LineTo { x: "ch2", y: "ch" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "l", y: "y7" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd2",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "ch", y: "y6" },
PathCommandDef::LineTo { x: "x4", y: "y6" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "ch2", y: "y4" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "0",
sw_ang: "-10800000",
},
PathCommandDef::Close,
];
static HORIZONTAL_SCROLL_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "ch2", y: "y4" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "0",
sw_ang: "-10800000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x4", y: "ch" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-16200000",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "cd2",
sw_ang: "-10800000",
},
PathCommandDef::Close,
];
static HORIZONTAL_SCROLL_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y3" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x3", y: "ch" },
PathCommandDef::LineTo { x: "x3", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "r", y: "y5" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "ch", y: "y6" },
PathCommandDef::LineTo { x: "ch", y: "y7" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x3", y: "ch" },
PathCommandDef::LineTo { x: "x4", y: "ch" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::MoveTo { x: "x4", y: "ch" },
PathCommandDef::LineTo { x: "x4", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::MoveTo { x: "ch2", y: "y4" },
PathCommandDef::LineTo { x: "ch2", y: "y3" },
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "cd2",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd2",
},
PathCommandDef::MoveTo { x: "ch", y: "y3" },
PathCommandDef::LineTo { x: "ch", y: "y6" },
];
static HORIZONTAL_SCROLL_PATHS: &[PathDef] = &[
PathDef {
commands: HORIZONTAL_SCROLL_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: HORIZONTAL_SCROLL_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: HORIZONTAL_SCROLL_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static HORIZONTAL_SCROLL_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "25000"),
gd!("ch", MulDiv, "ss", "a", "100000"),
gd!("ch2", MulDiv, "ch", "1", "2"),
gd!("ch4", MulDiv, "ch", "1", "4"),
gd!("y3", AddSub, "ch", "ch2", "0"),
gd!("y4", AddSub, "ch", "ch", "0"),
gd!("y6", AddSub, "b", "0", "ch"),
gd!("y7", AddSub, "b", "0", "ch2"),
gd!("y5", AddSub, "y6", "0", "ch2"),
gd!("x3", AddSub, "r", "0", "ch"),
gd!("x4", AddSub, "r", "0", "ch2"),
];
static HORIZONTAL_SCROLL: PresetDef = PresetDef {
adjust_defaults: &[("adj", 12500)],
guides: HORIZONTAL_SCROLL_GUIDES,
paths: HORIZONTAL_SCROLL_PATHS,
text_rect: Some(TextRectDef {
l: "ch",
t: "ch",
r: "x4",
b: "y6",
}),
};
static IRREGULAR_SEAL1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "10800",
y: "5800",
},
PathCommandDef::LineTo { x: "14522", y: "0" },
PathCommandDef::LineTo {
x: "14155",
y: "5325",
},
PathCommandDef::LineTo {
x: "18380",
y: "4457",
},
PathCommandDef::LineTo {
x: "16702",
y: "7315",
},
PathCommandDef::LineTo {
x: "21097",
y: "8137",
},
PathCommandDef::LineTo {
x: "17607",
y: "10475",
},
PathCommandDef::LineTo {
x: "21600",
y: "13290",
},
PathCommandDef::LineTo {
x: "16837",
y: "12942",
},
PathCommandDef::LineTo {
x: "18145",
y: "18095",
},
PathCommandDef::LineTo {
x: "14020",
y: "14457",
},
PathCommandDef::LineTo {
x: "13247",
y: "19737",
},
PathCommandDef::LineTo {
x: "10532",
y: "14935",
},
PathCommandDef::LineTo {
x: "8485",
y: "21600",
},
PathCommandDef::LineTo {
x: "7715",
y: "15627",
},
PathCommandDef::LineTo {
x: "4762",
y: "17617",
},
PathCommandDef::LineTo {
x: "5667",
y: "13937",
},
PathCommandDef::LineTo {
x: "135",
y: "14587",
},
PathCommandDef::LineTo {
x: "3722",
y: "11775",
},
PathCommandDef::LineTo { x: "0", y: "8615" },
PathCommandDef::LineTo {
x: "4627",
y: "7617",
},
PathCommandDef::LineTo {
x: "370",
y: "2295",
},
PathCommandDef::LineTo {
x: "7312",
y: "6320",
},
PathCommandDef::LineTo {
x: "8352",
y: "2295",
},
PathCommandDef::Close,
];
static IRREGULAR_SEAL1_PATHS: &[PathDef] = &[PathDef {
commands: IRREGULAR_SEAL1_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::Norm,
stroke: true,
}];
static IRREGULAR_SEAL1_GUIDES: &[GuideDef] = &[
gd!("x5", MulDiv, "w", "4627", "21600"),
gd!("x12", MulDiv, "w", "8485", "21600"),
gd!("x21", MulDiv, "w", "16702", "21600"),
gd!("x24", MulDiv, "w", "14522", "21600"),
gd!("y3", MulDiv, "h", "6320", "21600"),
gd!("y6", MulDiv, "h", "8615", "21600"),
gd!("y9", MulDiv, "h", "13937", "21600"),
gd!("y18", MulDiv, "h", "13290", "21600"),
];
static IRREGULAR_SEAL1: PresetDef = PresetDef {
adjust_defaults: &[],
guides: IRREGULAR_SEAL1_GUIDES,
paths: IRREGULAR_SEAL1_PATHS,
text_rect: Some(TextRectDef {
l: "x5",
t: "y3",
r: "x21",
b: "y9",
}),
};
static IRREGULAR_SEAL2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "11462",
y: "4342",
},
PathCommandDef::LineTo { x: "14790", y: "0" },
PathCommandDef::LineTo {
x: "14525",
y: "5777",
},
PathCommandDef::LineTo {
x: "18007",
y: "3172",
},
PathCommandDef::LineTo {
x: "16380",
y: "6532",
},
PathCommandDef::LineTo {
x: "21600",
y: "6645",
},
PathCommandDef::LineTo {
x: "16985",
y: "9402",
},
PathCommandDef::LineTo {
x: "18270",
y: "11290",
},
PathCommandDef::LineTo {
x: "16380",
y: "12310",
},
PathCommandDef::LineTo {
x: "18877",
y: "15632",
},
PathCommandDef::LineTo {
x: "14640",
y: "14350",
},
PathCommandDef::LineTo {
x: "14942",
y: "17370",
},
PathCommandDef::LineTo {
x: "12180",
y: "15935",
},
PathCommandDef::LineTo {
x: "11612",
y: "18842",
},
PathCommandDef::LineTo {
x: "9872",
y: "17370",
},
PathCommandDef::LineTo {
x: "8700",
y: "19712",
},
PathCommandDef::LineTo {
x: "7527",
y: "18125",
},
PathCommandDef::LineTo {
x: "4917",
y: "21600",
},
PathCommandDef::LineTo {
x: "4805",
y: "18240",
},
PathCommandDef::LineTo {
x: "1285",
y: "17825",
},
PathCommandDef::LineTo {
x: "3330",
y: "15370",
},
PathCommandDef::LineTo { x: "0", y: "12877" },
PathCommandDef::LineTo {
x: "3935",
y: "11592",
},
PathCommandDef::LineTo {
x: "1172",
y: "8270",
},
PathCommandDef::LineTo {
x: "5372",
y: "7817",
},
PathCommandDef::LineTo {
x: "4502",
y: "3625",
},
PathCommandDef::LineTo {
x: "8550",
y: "6382",
},
PathCommandDef::LineTo {
x: "9722",
y: "1887",
},
PathCommandDef::Close,
];
static IRREGULAR_SEAL2_PATHS: &[PathDef] = &[PathDef {
commands: IRREGULAR_SEAL2_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::Norm,
stroke: true,
}];
static IRREGULAR_SEAL2_GUIDES: &[GuideDef] = &[
gd!("x2", MulDiv, "w", "9722", "21600"),
gd!("x5", MulDiv, "w", "5372", "21600"),
gd!("x16", MulDiv, "w", "11612", "21600"),
gd!("x19", MulDiv, "w", "14640", "21600"),
gd!("y2", MulDiv, "h", "1887", "21600"),
gd!("y3", MulDiv, "h", "6382", "21600"),
gd!("y8", MulDiv, "h", "12877", "21600"),
gd!("y14", MulDiv, "h", "19712", "21600"),
gd!("y16", MulDiv, "h", "18842", "21600"),
gd!("y17", MulDiv, "h", "15935", "21600"),
gd!("y24", MulDiv, "h", "6645", "21600"),
];
static IRREGULAR_SEAL2: PresetDef = PresetDef {
adjust_defaults: &[],
guides: IRREGULAR_SEAL2_GUIDES,
paths: IRREGULAR_SEAL2_PATHS,
text_rect: Some(TextRectDef {
l: "x5",
t: "y3",
r: "x19",
b: "y17",
}),
};
static LEFT_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::Close,
];
static LEFT_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "100000", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("dx2", MulDiv, "ss", "a2", "100000"),
gd!("x2", AddSub, "l", "dx2", "0"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("dx1", MulDiv, "y1", "dx2", "hd2"),
gd!("x1", AddSub, "x2", "0", "dx1"),
];
static LEFT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: LEFT_ARROW_GUIDES,
paths: LEFT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "r",
b: "y2",
}),
};
static LEFT_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::Close,
];
static LEFT_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "h", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", MulDiv, "100000", "w", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "ss", "w"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("dy1", MulDiv, "ss", "a2", "100000"),
gd!("dy2", MulDiv, "ss", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y4", AddSub, "vc", "dy1", "0"),
gd!("x1", MulDiv, "ss", "a3", "100000"),
gd!("dx2", MulDiv, "w", "a4", "100000"),
gd!("x2", AddSub, "r", "0", "dx2"),
gd!("x3", AddDiv, "x2", "r", "2"),
];
static LEFT_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 64977),
],
guides: LEFT_ARROW_CALLOUT_GUIDES,
paths: LEFT_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "t",
r: "r",
b: "b",
}),
};
static LEFT_BRACE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "b" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "hc", y: "y4" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static LEFT_BRACE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "b" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "hc", y: "y4" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "cd4",
},
];
static LEFT_BRACE_PATHS: &[PathDef] = &[
PathDef {
commands: LEFT_BRACE_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: LEFT_BRACE_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static LEFT_BRACE_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "100000"),
gd!("q1", AddSub, "100000", "0", "a2"),
gd!("q2", Min, "q1", "a2", ""),
gd!("q3", MulDiv, "q2", "1", "2"),
gd!("maxAdj1", MulDiv, "q3", "h", "ss"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("y1", MulDiv, "ss", "a1", "100000"),
gd!("y3", MulDiv, "h", "a2", "100000"),
gd!("y4", AddSub, "y3", "y1", "0"),
gd!("dx1", Cos, "wd2", "2700000", ""),
gd!("dy1", Sin, "y1", "2700000", ""),
gd!("il", AddSub, "r", "0", "dx1"),
gd!("it", AddSub, "y1", "0", "dy1"),
gd!("ib", AddSub, "b", "dy1", "y1"),
];
static LEFT_BRACE: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 8333), ("adj2", 50000)],
guides: LEFT_BRACE_GUIDES,
paths: LEFT_BRACE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "r",
b: "ib",
}),
};
static LEFT_BRACKET_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "b" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "y1" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static LEFT_BRACKET_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "b" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "y1" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "cd2",
sw_ang: "cd4",
},
];
static LEFT_BRACKET_PATHS: &[PathDef] = &[
PathDef {
commands: LEFT_BRACKET_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: LEFT_BRACKET_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static LEFT_BRACKET_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "50000", "h", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("y1", MulDiv, "ss", "a", "100000"),
gd!("y2", AddSub, "b", "0", "y1"),
gd!("dx1", Cos, "w", "2700000", ""),
gd!("dy1", Sin, "y1", "2700000", ""),
gd!("il", AddSub, "r", "0", "dx1"),
gd!("it", AddSub, "y1", "0", "dy1"),
gd!("ib", AddSub, "b", "dy1", "y1"),
];
static LEFT_BRACKET: PresetDef = PresetDef {
adjust_defaults: &[("adj", 8333)],
guides: LEFT_BRACKET_GUIDES,
paths: LEFT_BRACKET_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "r",
b: "ib",
}),
};
static LEFT_CIRCULAR_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "xE", y: "yE" },
PathCommandDef::LineTo { x: "xD", y: "yD" },
PathCommandDef::ArcTo {
wr: "rw2",
hr: "rh2",
st_ang: "istAng",
sw_ang: "iswAng",
},
PathCommandDef::LineTo { x: "xBp", y: "yBp" },
PathCommandDef::LineTo { x: "xA", y: "yA" },
PathCommandDef::LineTo { x: "xGp", y: "yGp" },
PathCommandDef::LineTo { x: "xF", y: "yF" },
PathCommandDef::ArcTo {
wr: "rw1",
hr: "rh1",
st_ang: "stAng0",
sw_ang: "swAng0",
},
PathCommandDef::Close,
];
static LEFT_CIRCULAR_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_CIRCULAR_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_CIRCULAR_ARROW_GUIDES: &[GuideDef] = &[
gd!("a5", Pin, "0", "adj5", "25000"),
gd!("maxAdj1", MulDiv, "a5", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("enAng", Pin, "1", "adj3", "21599999"),
gd!("stAng", Pin, "0", "adj4", "21599999"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("thh", MulDiv, "ss", "a5", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("rw1", AddSub, "wd2", "th2", "thh"),
gd!("rh1", AddSub, "hd2", "th2", "thh"),
gd!("rw2", AddSub, "rw1", "0", "th"),
gd!("rh2", AddSub, "rh1", "0", "th"),
gd!("rw3", AddSub, "rw2", "th2", "0"),
gd!("rh3", AddSub, "rh2", "th2", "0"),
gd!("wtH", Sin, "rw3", "enAng", ""),
gd!("htH", Cos, "rh3", "enAng", ""),
gd!("dxH", CosAtan2, "rw3", "htH", "wtH"),
gd!("dyH", SinAtan2, "rh3", "htH", "wtH"),
gd!("xH", AddSub, "hc", "dxH", "0"),
gd!("yH", AddSub, "vc", "dyH", "0"),
gd!("rI", Min, "rw2", "rh2", ""),
gd!("u1", MulDiv, "dxH", "dxH", "1"),
gd!("u2", MulDiv, "dyH", "dyH", "1"),
gd!("u3", MulDiv, "rI", "rI", "1"),
gd!("u4", AddSub, "u1", "0", "u3"),
gd!("u5", AddSub, "u2", "0", "u3"),
gd!("u6", MulDiv, "u4", "u5", "u1"),
gd!("u7", MulDiv, "u6", "1", "u2"),
gd!("u8", AddSub, "1", "0", "u7"),
gd!("u9", Sqrt, "u8", "", ""),
gd!("u10", MulDiv, "u4", "1", "dxH"),
gd!("u11", MulDiv, "u10", "1", "dyH"),
gd!("u12", AddDiv, "1", "u9", "u11"),
gd!("u13", Atan2, "1", "u12", ""),
gd!("u14", AddSub, "u13", "21600000", "0"),
gd!("u15", IfElse, "u13", "u13", "u14"),
gd!("u16", AddSub, "u15", "0", "enAng"),
gd!("u17", AddSub, "u16", "21600000", "0"),
gd!("u18", IfElse, "u16", "u16", "u17"),
gd!("u19", AddSub, "u18", "0", "cd2"),
gd!("u20", AddSub, "u18", "0", "21600000"),
gd!("u21", IfElse, "u19", "u20", "u18"),
gd!("u22", Abs, "u21", "", ""),
gd!("minAng", MulDiv, "u22", "-1", "1"),
gd!("u23", Abs, "adj2", "", ""),
gd!("a2", MulDiv, "u23", "-1", "1"),
gd!("aAng", Pin, "minAng", "a2", "0"),
gd!("ptAng", AddSub, "enAng", "aAng", "0"),
gd!("wtA", Sin, "rw3", "ptAng", ""),
gd!("htA", Cos, "rh3", "ptAng", ""),
gd!("dxA", CosAtan2, "rw3", "htA", "wtA"),
gd!("dyA", SinAtan2, "rh3", "htA", "wtA"),
gd!("xA", AddSub, "hc", "dxA", "0"),
gd!("yA", AddSub, "vc", "dyA", "0"),
gd!("wtE", Sin, "rw1", "stAng", ""),
gd!("htE", Cos, "rh1", "stAng", ""),
gd!("dxE", CosAtan2, "rw1", "htE", "wtE"),
gd!("dyE", SinAtan2, "rh1", "htE", "wtE"),
gd!("xE", AddSub, "hc", "dxE", "0"),
gd!("yE", AddSub, "vc", "dyE", "0"),
gd!("wtD", Sin, "rw2", "stAng", ""),
gd!("htD", Cos, "rh2", "stAng", ""),
gd!("dxD", CosAtan2, "rw2", "htD", "wtD"),
gd!("dyD", SinAtan2, "rh2", "htD", "wtD"),
gd!("xD", AddSub, "hc", "dxD", "0"),
gd!("yD", AddSub, "vc", "dyD", "0"),
gd!("dxG", Cos, "thh", "ptAng", ""),
gd!("dyG", Sin, "thh", "ptAng", ""),
gd!("xG", AddSub, "xH", "dxG", "0"),
gd!("yG", AddSub, "yH", "dyG", "0"),
gd!("dxB", Cos, "thh", "ptAng", ""),
gd!("dyB", Sin, "thh", "ptAng", ""),
gd!("xB", AddSub, "xH", "0", "dxB"),
gd!("yB", AddSub, "yH", "0", "dyB"),
gd!("sx1", AddSub, "xB", "0", "hc"),
gd!("sy1", AddSub, "yB", "0", "vc"),
gd!("sx2", AddSub, "xG", "0", "hc"),
gd!("sy2", AddSub, "yG", "0", "vc"),
gd!("rO", Min, "rw1", "rh1", ""),
gd!("x1O", MulDiv, "sx1", "rO", "rw1"),
gd!("y1O", MulDiv, "sy1", "rO", "rh1"),
gd!("x2O", MulDiv, "sx2", "rO", "rw1"),
gd!("y2O", MulDiv, "sy2", "rO", "rh1"),
gd!("dxO", AddSub, "x2O", "0", "x1O"),
gd!("dyO", AddSub, "y2O", "0", "y1O"),
gd!("dO", Mod, "dxO", "dyO", "0"),
gd!("q1", MulDiv, "x1O", "y2O", "1"),
gd!("q2", MulDiv, "x2O", "y1O", "1"),
gd!("DO", AddSub, "q1", "0", "q2"),
gd!("q3", MulDiv, "rO", "rO", "1"),
gd!("q4", MulDiv, "dO", "dO", "1"),
gd!("q5", MulDiv, "q3", "q4", "1"),
gd!("q6", MulDiv, "DO", "DO", "1"),
gd!("q7", AddSub, "q5", "0", "q6"),
gd!("q8", Max, "q7", "0", ""),
gd!("sdelO", Sqrt, "q8", "", ""),
gd!("ndyO", MulDiv, "dyO", "-1", "1"),
gd!("sdyO", IfElse, "ndyO", "-1", "1"),
gd!("q9", MulDiv, "sdyO", "dxO", "1"),
gd!("q10", MulDiv, "q9", "sdelO", "1"),
gd!("q11", MulDiv, "DO", "dyO", "1"),
gd!("dxF1", AddDiv, "q11", "q10", "q4"),
gd!("q12", AddSub, "q11", "0", "q10"),
gd!("dxF2", MulDiv, "q12", "1", "q4"),
gd!("adyO", Abs, "dyO", "", ""),
gd!("q13", MulDiv, "adyO", "sdelO", "1"),
gd!("q14", MulDiv, "DO", "dxO", "-1"),
gd!("dyF1", AddDiv, "q14", "q13", "q4"),
gd!("q15", AddSub, "q14", "0", "q13"),
gd!("dyF2", MulDiv, "q15", "1", "q4"),
gd!("q16", AddSub, "x2O", "0", "dxF1"),
gd!("q17", AddSub, "x2O", "0", "dxF2"),
gd!("q18", AddSub, "y2O", "0", "dyF1"),
gd!("q19", AddSub, "y2O", "0", "dyF2"),
gd!("q20", Mod, "q16", "q18", "0"),
gd!("q21", Mod, "q17", "q19", "0"),
gd!("q22", AddSub, "q21", "0", "q20"),
gd!("dxF", IfElse, "q22", "dxF1", "dxF2"),
gd!("dyF", IfElse, "q22", "dyF1", "dyF2"),
gd!("sdxF", MulDiv, "dxF", "rw1", "rO"),
gd!("sdyF", MulDiv, "dyF", "rh1", "rO"),
gd!("xF", AddSub, "hc", "sdxF", "0"),
gd!("yF", AddSub, "vc", "sdyF", "0"),
gd!("x1I", MulDiv, "sx1", "rI", "rw2"),
gd!("y1I", MulDiv, "sy1", "rI", "rh2"),
gd!("x2I", MulDiv, "sx2", "rI", "rw2"),
gd!("y2I", MulDiv, "sy2", "rI", "rh2"),
gd!("dxI", AddSub, "x2I", "0", "x1I"),
gd!("dyI", AddSub, "y2I", "0", "y1I"),
gd!("dI", Mod, "dxI", "dyI", "0"),
gd!("v1", MulDiv, "x1I", "y2I", "1"),
gd!("v2", MulDiv, "x2I", "y1I", "1"),
gd!("DI", AddSub, "v1", "0", "v2"),
gd!("v3", MulDiv, "rI", "rI", "1"),
gd!("v4", MulDiv, "dI", "dI", "1"),
gd!("v5", MulDiv, "v3", "v4", "1"),
gd!("v6", MulDiv, "DI", "DI", "1"),
gd!("v7", AddSub, "v5", "0", "v6"),
gd!("v8", Max, "v7", "0", ""),
gd!("sdelI", Sqrt, "v8", "", ""),
gd!("v9", MulDiv, "sdyO", "dxI", "1"),
gd!("v10", MulDiv, "v9", "sdelI", "1"),
gd!("v11", MulDiv, "DI", "dyI", "1"),
gd!("dxC1", AddDiv, "v11", "v10", "v4"),
gd!("v12", AddSub, "v11", "0", "v10"),
gd!("dxC2", MulDiv, "v12", "1", "v4"),
gd!("adyI", Abs, "dyI", "", ""),
gd!("v13", MulDiv, "adyI", "sdelI", "1"),
gd!("v14", MulDiv, "DI", "dxI", "-1"),
gd!("dyC1", AddDiv, "v14", "v13", "v4"),
gd!("v15", AddSub, "v14", "0", "v13"),
gd!("dyC2", MulDiv, "v15", "1", "v4"),
gd!("v16", AddSub, "x1I", "0", "dxC1"),
gd!("v17", AddSub, "x1I", "0", "dxC2"),
gd!("v18", AddSub, "y1I", "0", "dyC1"),
gd!("v19", AddSub, "y1I", "0", "dyC2"),
gd!("v20", Mod, "v16", "v18", "0"),
gd!("v21", Mod, "v17", "v19", "0"),
gd!("v22", AddSub, "v21", "0", "v20"),
gd!("dxC", IfElse, "v22", "dxC1", "dxC2"),
gd!("dyC", IfElse, "v22", "dyC1", "dyC2"),
gd!("sdxC", MulDiv, "dxC", "rw2", "rI"),
gd!("sdyC", MulDiv, "dyC", "rh2", "rI"),
gd!("xC", AddSub, "hc", "sdxC", "0"),
gd!("yC", AddSub, "vc", "sdyC", "0"),
gd!("ist0", Atan2, "sdxC", "sdyC", ""),
gd!("ist1", AddSub, "ist0", "21600000", "0"),
gd!("istAng0", IfElse, "ist0", "ist0", "ist1"),
gd!("isw1", AddSub, "stAng", "0", "istAng0"),
gd!("isw2", AddSub, "isw1", "21600000", "0"),
gd!("iswAng0", IfElse, "isw1", "isw1", "isw2"),
gd!("istAng", AddSub, "istAng0", "iswAng0", "0"),
gd!("iswAng", AddSub, "0", "0", "iswAng0"),
gd!("p1", AddSub, "xF", "0", "xC"),
gd!("p2", AddSub, "yF", "0", "yC"),
gd!("p3", Mod, "p1", "p2", "0"),
gd!("p4", MulDiv, "p3", "1", "2"),
gd!("p5", AddSub, "p4", "0", "thh"),
gd!("xGp", IfElse, "p5", "xF", "xG"),
gd!("yGp", IfElse, "p5", "yF", "yG"),
gd!("xBp", IfElse, "p5", "xC", "xB"),
gd!("yBp", IfElse, "p5", "yC", "yB"),
gd!("en0", Atan2, "sdxF", "sdyF", ""),
gd!("en1", AddSub, "en0", "21600000", "0"),
gd!("en2", IfElse, "en0", "en0", "en1"),
gd!("sw0", AddSub, "en2", "0", "stAng"),
gd!("sw1", AddSub, "sw0", "0", "21600000"),
gd!("swAng", IfElse, "sw0", "sw1", "sw0"),
gd!("stAng0", AddSub, "stAng", "swAng", "0"),
gd!("swAng0", AddSub, "0", "0", "swAng"),
gd!("wtI", Sin, "rw3", "stAng", ""),
gd!("htI", Cos, "rh3", "stAng", ""),
gd!("dxI", CosAtan2, "rw3", "htI", "wtI"),
gd!("dyI", SinAtan2, "rh3", "htI", "wtI"),
gd!("xI", AddSub, "hc", "dxI", "0"),
gd!("yI", AddSub, "vc", "dyI", "0"),
gd!("aI", AddSub, "stAng", "cd4", "0"),
gd!("aA", AddSub, "ptAng", "0", "cd4"),
gd!("aB", AddSub, "ptAng", "cd2", "0"),
gd!("idx", Cos, "rw1", "2700000", ""),
gd!("idy", Sin, "rh1", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static LEFT_CIRCULAR_ARROW: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 12500),
("adj2", -1142319),
("adj3", 1142319),
("adj4", 10800000),
("adj5", 12500),
],
guides: LEFT_CIRCULAR_ARROW_GUIDES,
paths: LEFT_CIRCULAR_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static LEFT_RIGHT_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x3", y: "b" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::Close,
];
static LEFT_RIGHT_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_RIGHT_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_RIGHT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("x2", MulDiv, "ss", "a2", "100000"),
gd!("x3", AddSub, "r", "0", "x2"),
gd!("dy", MulDiv, "h", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy"),
gd!("y2", AddSub, "vc", "dy", "0"),
gd!("dx1", MulDiv, "y1", "x2", "hd2"),
gd!("x1", AddSub, "x2", "0", "dx1"),
gd!("x4", AddSub, "x3", "dx1", "0"),
];
static LEFT_RIGHT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: LEFT_RIGHT_ARROW_GUIDES,
paths: LEFT_RIGHT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x4",
b: "y2",
}),
};
static LEFT_RIGHT_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::Close,
];
static LEFT_RIGHT_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_RIGHT_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_RIGHT_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "h", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", MulDiv, "50000", "w", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "ss", "wd2"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("dy1", MulDiv, "ss", "a2", "100000"),
gd!("dy2", MulDiv, "ss", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y4", AddSub, "vc", "dy1", "0"),
gd!("x1", MulDiv, "ss", "a3", "100000"),
gd!("x4", AddSub, "r", "0", "x1"),
gd!("dx2", MulDiv, "w", "a4", "200000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
];
static LEFT_RIGHT_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 48123),
],
guides: LEFT_RIGHT_ARROW_CALLOUT_GUIDES,
paths: LEFT_RIGHT_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "t",
r: "x3",
b: "b",
}),
};
static LEFT_RIGHT_CIRCULAR_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "xL", y: "yL" },
PathCommandDef::LineTo { x: "xKp", y: "yKp" },
PathCommandDef::LineTo { x: "xE", y: "yE" },
PathCommandDef::ArcTo {
wr: "rw1",
hr: "rh1",
st_ang: "st2",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "xGp", y: "yGp" },
PathCommandDef::LineTo { x: "xA", y: "yA" },
PathCommandDef::LineTo { x: "xBp", y: "yBp" },
PathCommandDef::LineTo { x: "xC", y: "yC" },
PathCommandDef::ArcTo {
wr: "rw2",
hr: "rh2",
st_ang: "istAng",
sw_ang: "iswAng",
},
PathCommandDef::LineTo { x: "xJp", y: "yJp" },
PathCommandDef::Close,
];
static LEFT_RIGHT_CIRCULAR_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_RIGHT_CIRCULAR_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_RIGHT_CIRCULAR_ARROW_GUIDES: &[GuideDef] = &[
gd!("a5", Pin, "0", "adj5", "25000"),
gd!("maxAdj1", MulDiv, "a5", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("enAng", Pin, "1", "adj3", "21599999"),
gd!("stAng", Pin, "0", "adj4", "21599999"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("thh", MulDiv, "ss", "a5", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("rw1", AddSub, "wd2", "th2", "thh"),
gd!("rh1", AddSub, "hd2", "th2", "thh"),
gd!("rw2", AddSub, "rw1", "0", "th"),
gd!("rh2", AddSub, "rh1", "0", "th"),
gd!("rw3", AddSub, "rw2", "th2", "0"),
gd!("rh3", AddSub, "rh2", "th2", "0"),
gd!("wtH", Sin, "rw3", "enAng", ""),
gd!("htH", Cos, "rh3", "enAng", ""),
gd!("dxH", CosAtan2, "rw3", "htH", "wtH"),
gd!("dyH", SinAtan2, "rh3", "htH", "wtH"),
gd!("xH", AddSub, "hc", "dxH", "0"),
gd!("yH", AddSub, "vc", "dyH", "0"),
gd!("rI", Min, "rw2", "rh2", ""),
gd!("u1", MulDiv, "dxH", "dxH", "1"),
gd!("u2", MulDiv, "dyH", "dyH", "1"),
gd!("u3", MulDiv, "rI", "rI", "1"),
gd!("u4", AddSub, "u1", "0", "u3"),
gd!("u5", AddSub, "u2", "0", "u3"),
gd!("u6", MulDiv, "u4", "u5", "u1"),
gd!("u7", MulDiv, "u6", "1", "u2"),
gd!("u8", AddSub, "1", "0", "u7"),
gd!("u9", Sqrt, "u8", "", ""),
gd!("u10", MulDiv, "u4", "1", "dxH"),
gd!("u11", MulDiv, "u10", "1", "dyH"),
gd!("u12", AddDiv, "1", "u9", "u11"),
gd!("u13", Atan2, "1", "u12", ""),
gd!("u14", AddSub, "u13", "21600000", "0"),
gd!("u15", IfElse, "u13", "u13", "u14"),
gd!("u16", AddSub, "u15", "0", "enAng"),
gd!("u17", AddSub, "u16", "21600000", "0"),
gd!("u18", IfElse, "u16", "u16", "u17"),
gd!("u19", AddSub, "u18", "0", "cd2"),
gd!("u20", AddSub, "u18", "0", "21600000"),
gd!("u21", IfElse, "u19", "u20", "u18"),
gd!("maxAng", Abs, "u21", "", ""),
gd!("aAng", Pin, "0", "adj2", "maxAng"),
gd!("ptAng", AddSub, "enAng", "aAng", "0"),
gd!("wtA", Sin, "rw3", "ptAng", ""),
gd!("htA", Cos, "rh3", "ptAng", ""),
gd!("dxA", CosAtan2, "rw3", "htA", "wtA"),
gd!("dyA", SinAtan2, "rh3", "htA", "wtA"),
gd!("xA", AddSub, "hc", "dxA", "0"),
gd!("yA", AddSub, "vc", "dyA", "0"),
gd!("dxG", Cos, "thh", "ptAng", ""),
gd!("dyG", Sin, "thh", "ptAng", ""),
gd!("xG", AddSub, "xH", "dxG", "0"),
gd!("yG", AddSub, "yH", "dyG", "0"),
gd!("dxB", Cos, "thh", "ptAng", ""),
gd!("dyB", Sin, "thh", "ptAng", ""),
gd!("xB", AddSub, "xH", "0", "dxB"),
gd!("yB", AddSub, "yH", "0", "dyB"),
gd!("sx1", AddSub, "xB", "0", "hc"),
gd!("sy1", AddSub, "yB", "0", "vc"),
gd!("sx2", AddSub, "xG", "0", "hc"),
gd!("sy2", AddSub, "yG", "0", "vc"),
gd!("rO", Min, "rw1", "rh1", ""),
gd!("x1O", MulDiv, "sx1", "rO", "rw1"),
gd!("y1O", MulDiv, "sy1", "rO", "rh1"),
gd!("x2O", MulDiv, "sx2", "rO", "rw1"),
gd!("y2O", MulDiv, "sy2", "rO", "rh1"),
gd!("dxO", AddSub, "x2O", "0", "x1O"),
gd!("dyO", AddSub, "y2O", "0", "y1O"),
gd!("dO", Mod, "dxO", "dyO", "0"),
gd!("q1", MulDiv, "x1O", "y2O", "1"),
gd!("q2", MulDiv, "x2O", "y1O", "1"),
gd!("DO", AddSub, "q1", "0", "q2"),
gd!("q3", MulDiv, "rO", "rO", "1"),
gd!("q4", MulDiv, "dO", "dO", "1"),
gd!("q5", MulDiv, "q3", "q4", "1"),
gd!("q6", MulDiv, "DO", "DO", "1"),
gd!("q7", AddSub, "q5", "0", "q6"),
gd!("q8", Max, "q7", "0", ""),
gd!("sdelO", Sqrt, "q8", "", ""),
gd!("ndyO", MulDiv, "dyO", "-1", "1"),
gd!("sdyO", IfElse, "ndyO", "-1", "1"),
gd!("q9", MulDiv, "sdyO", "dxO", "1"),
gd!("q10", MulDiv, "q9", "sdelO", "1"),
gd!("q11", MulDiv, "DO", "dyO", "1"),
gd!("dxF1", AddDiv, "q11", "q10", "q4"),
gd!("q12", AddSub, "q11", "0", "q10"),
gd!("dxF2", MulDiv, "q12", "1", "q4"),
gd!("adyO", Abs, "dyO", "", ""),
gd!("q13", MulDiv, "adyO", "sdelO", "1"),
gd!("q14", MulDiv, "DO", "dxO", "-1"),
gd!("dyF1", AddDiv, "q14", "q13", "q4"),
gd!("q15", AddSub, "q14", "0", "q13"),
gd!("dyF2", MulDiv, "q15", "1", "q4"),
gd!("q16", AddSub, "x2O", "0", "dxF1"),
gd!("q17", AddSub, "x2O", "0", "dxF2"),
gd!("q18", AddSub, "y2O", "0", "dyF1"),
gd!("q19", AddSub, "y2O", "0", "dyF2"),
gd!("q20", Mod, "q16", "q18", "0"),
gd!("q21", Mod, "q17", "q19", "0"),
gd!("q22", AddSub, "q21", "0", "q20"),
gd!("dxF", IfElse, "q22", "dxF1", "dxF2"),
gd!("dyF", IfElse, "q22", "dyF1", "dyF2"),
gd!("sdxF", MulDiv, "dxF", "rw1", "rO"),
gd!("sdyF", MulDiv, "dyF", "rh1", "rO"),
gd!("xF", AddSub, "hc", "sdxF", "0"),
gd!("yF", AddSub, "vc", "sdyF", "0"),
gd!("x1I", MulDiv, "sx1", "rI", "rw2"),
gd!("y1I", MulDiv, "sy1", "rI", "rh2"),
gd!("x2I", MulDiv, "sx2", "rI", "rw2"),
gd!("y2I", MulDiv, "sy2", "rI", "rh2"),
gd!("dxI", AddSub, "x2I", "0", "x1I"),
gd!("dyI", AddSub, "y2I", "0", "y1I"),
gd!("dI", Mod, "dxI", "dyI", "0"),
gd!("v1", MulDiv, "x1I", "y2I", "1"),
gd!("v2", MulDiv, "x2I", "y1I", "1"),
gd!("DI", AddSub, "v1", "0", "v2"),
gd!("v3", MulDiv, "rI", "rI", "1"),
gd!("v4", MulDiv, "dI", "dI", "1"),
gd!("v5", MulDiv, "v3", "v4", "1"),
gd!("v6", MulDiv, "DI", "DI", "1"),
gd!("v7", AddSub, "v5", "0", "v6"),
gd!("v8", Max, "v7", "0", ""),
gd!("sdelI", Sqrt, "v8", "", ""),
gd!("v9", MulDiv, "sdyO", "dxI", "1"),
gd!("v10", MulDiv, "v9", "sdelI", "1"),
gd!("v11", MulDiv, "DI", "dyI", "1"),
gd!("dxC1", AddDiv, "v11", "v10", "v4"),
gd!("v12", AddSub, "v11", "0", "v10"),
gd!("dxC2", MulDiv, "v12", "1", "v4"),
gd!("adyI", Abs, "dyI", "", ""),
gd!("v13", MulDiv, "adyI", "sdelI", "1"),
gd!("v14", MulDiv, "DI", "dxI", "-1"),
gd!("dyC1", AddDiv, "v14", "v13", "v4"),
gd!("v15", AddSub, "v14", "0", "v13"),
gd!("dyC2", MulDiv, "v15", "1", "v4"),
gd!("v16", AddSub, "x1I", "0", "dxC1"),
gd!("v17", AddSub, "x1I", "0", "dxC2"),
gd!("v18", AddSub, "y1I", "0", "dyC1"),
gd!("v19", AddSub, "y1I", "0", "dyC2"),
gd!("v20", Mod, "v16", "v18", "0"),
gd!("v21", Mod, "v17", "v19", "0"),
gd!("v22", AddSub, "v21", "0", "v20"),
gd!("dxC", IfElse, "v22", "dxC1", "dxC2"),
gd!("dyC", IfElse, "v22", "dyC1", "dyC2"),
gd!("sdxC", MulDiv, "dxC", "rw2", "rI"),
gd!("sdyC", MulDiv, "dyC", "rh2", "rI"),
gd!("xC", AddSub, "hc", "sdxC", "0"),
gd!("yC", AddSub, "vc", "sdyC", "0"),
gd!("wtI", Sin, "rw3", "stAng", ""),
gd!("htI", Cos, "rh3", "stAng", ""),
gd!("dxI", CosAtan2, "rw3", "htI", "wtI"),
gd!("dyI", SinAtan2, "rh3", "htI", "wtI"),
gd!("xI", AddSub, "hc", "dxI", "0"),
gd!("yI", AddSub, "vc", "dyI", "0"),
gd!("lptAng", AddSub, "stAng", "0", "aAng"),
gd!("wtL", Sin, "rw3", "lptAng", ""),
gd!("htL", Cos, "rh3", "lptAng", ""),
gd!("dxL", CosAtan2, "rw3", "htL", "wtL"),
gd!("dyL", SinAtan2, "rh3", "htL", "wtL"),
gd!("xL", AddSub, "hc", "dxL", "0"),
gd!("yL", AddSub, "vc", "dyL", "0"),
gd!("dxK", Cos, "thh", "lptAng", ""),
gd!("dyK", Sin, "thh", "lptAng", ""),
gd!("xK", AddSub, "xI", "dxK", "0"),
gd!("yK", AddSub, "yI", "dyK", "0"),
gd!("dxJ", Cos, "thh", "lptAng", ""),
gd!("dyJ", Sin, "thh", "lptAng", ""),
gd!("xJ", AddSub, "xI", "0", "dxJ"),
gd!("yJ", AddSub, "yI", "0", "dyJ"),
gd!("p1", AddSub, "xF", "0", "xC"),
gd!("p2", AddSub, "yF", "0", "yC"),
gd!("p3", Mod, "p1", "p2", "0"),
gd!("p4", MulDiv, "p3", "1", "2"),
gd!("p5", AddSub, "p4", "0", "thh"),
gd!("xGp", IfElse, "p5", "xF", "xG"),
gd!("yGp", IfElse, "p5", "yF", "yG"),
gd!("xBp", IfElse, "p5", "xC", "xB"),
gd!("yBp", IfElse, "p5", "yC", "yB"),
gd!("en0", Atan2, "sdxF", "sdyF", ""),
gd!("en1", AddSub, "en0", "21600000", "0"),
gd!("en2", IfElse, "en0", "en0", "en1"),
gd!("od0", AddSub, "en2", "0", "enAng"),
gd!("od1", AddSub, "od0", "21600000", "0"),
gd!("od2", IfElse, "od0", "od0", "od1"),
gd!("st0", AddSub, "stAng", "0", "od2"),
gd!("st1", AddSub, "st0", "21600000", "0"),
gd!("st2", IfElse, "st0", "st0", "st1"),
gd!("sw0", AddSub, "en2", "0", "st2"),
gd!("sw1", AddSub, "sw0", "21600000", "0"),
gd!("swAng", IfElse, "sw0", "sw0", "sw1"),
gd!("ist0", Atan2, "sdxC", "sdyC", ""),
gd!("ist1", AddSub, "ist0", "21600000", "0"),
gd!("istAng", IfElse, "ist0", "ist0", "ist1"),
gd!("id0", AddSub, "istAng", "0", "enAng"),
gd!("id1", AddSub, "id0", "0", "21600000"),
gd!("id2", IfElse, "id0", "id1", "id0"),
gd!("ien0", AddSub, "stAng", "0", "id2"),
gd!("ien1", AddSub, "ien0", "0", "21600000"),
gd!("ien2", IfElse, "ien1", "ien1", "ien0"),
gd!("isw1", AddSub, "ien2", "0", "istAng"),
gd!("isw2", AddSub, "isw1", "0", "21600000"),
gd!("iswAng", IfElse, "isw1", "isw2", "isw1"),
gd!("wtE", Sin, "rw1", "st2", ""),
gd!("htE", Cos, "rh1", "st2", ""),
gd!("dxE", CosAtan2, "rw1", "htE", "wtE"),
gd!("dyE", SinAtan2, "rh1", "htE", "wtE"),
gd!("xE", AddSub, "hc", "dxE", "0"),
gd!("yE", AddSub, "vc", "dyE", "0"),
gd!("wtD", Sin, "rw2", "ien2", ""),
gd!("htD", Cos, "rh2", "ien2", ""),
gd!("dxD", CosAtan2, "rw2", "htD", "wtD"),
gd!("dyD", SinAtan2, "rh2", "htD", "wtD"),
gd!("xD", AddSub, "hc", "dxD", "0"),
gd!("yD", AddSub, "vc", "dyD", "0"),
gd!("xKp", IfElse, "p5", "xE", "xK"),
gd!("yKp", IfElse, "p5", "yE", "yK"),
gd!("xJp", IfElse, "p5", "xD", "xJ"),
gd!("yJp", IfElse, "p5", "yD", "yJ"),
gd!("aL", AddSub, "lptAng", "0", "cd4"),
gd!("aA", AddSub, "ptAng", "cd4", "0"),
gd!("aB", AddSub, "ptAng", "cd2", "0"),
gd!("aJ", AddSub, "lptAng", "cd2", "0"),
gd!("idx", Cos, "rw1", "2700000", ""),
gd!("idy", Sin, "rh1", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static LEFT_RIGHT_CIRCULAR_ARROW: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 12500),
("adj2", 1142319),
("adj3", 20457681),
("adj4", 11942319),
("adj5", 12500),
],
guides: LEFT_RIGHT_CIRCULAR_ARROW_GUIDES,
paths: LEFT_RIGHT_CIRCULAR_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static LEFT_RIGHT_RIBBON_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "ly2" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "ly1" },
PathCommandDef::LineTo { x: "hc", y: "ly1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x4", y: "ry2" },
PathCommandDef::LineTo { x: "x4", y: "ry1" },
PathCommandDef::LineTo { x: "r", y: "ry3" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::LineTo { x: "x4", y: "ry4" },
PathCommandDef::LineTo { x: "hc", y: "ry4" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "ly3" },
PathCommandDef::LineTo { x: "x1", y: "ly3" },
PathCommandDef::LineTo { x: "x1", y: "ly4" },
PathCommandDef::Close,
];
static LEFT_RIGHT_RIBBON_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x3", y: "ry2" },
PathCommandDef::Close,
];
static LEFT_RIGHT_RIBBON_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "ly2" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "ly1" },
PathCommandDef::LineTo { x: "hc", y: "ly1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x4", y: "ry2" },
PathCommandDef::LineTo { x: "x4", y: "ry1" },
PathCommandDef::LineTo { x: "r", y: "ry3" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::LineTo { x: "x4", y: "ry4" },
PathCommandDef::LineTo { x: "hc", y: "ry4" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "ly3" },
PathCommandDef::LineTo { x: "x1", y: "ly3" },
PathCommandDef::LineTo { x: "x1", y: "ly4" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "ry2" },
PathCommandDef::MoveTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "ly3" },
];
static LEFT_RIGHT_RIBBON_PATHS: &[PathDef] = &[
PathDef {
commands: LEFT_RIGHT_RIBBON_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: LEFT_RIGHT_RIBBON_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: LEFT_RIGHT_RIBBON_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static LEFT_RIGHT_RIBBON_GUIDES: &[GuideDef] = &[
gd!("a3", Pin, "0", "adj3", "33333"),
gd!("maxAdj1", AddSub, "100000", "0", "a3"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("w1", AddSub, "wd2", "0", "wd32"),
gd!("maxAdj2", MulDiv, "100000", "w1", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("x1", MulDiv, "ss", "a2", "100000"),
gd!("x4", AddSub, "r", "0", "x1"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("dy2", MulDiv, "h", "a3", "-200000"),
gd!("ly1", AddSub, "vc", "dy2", "dy1"),
gd!("ry4", AddSub, "vc", "dy1", "dy2"),
gd!("ly2", AddSub, "ly1", "dy1", "0"),
gd!("ry3", AddSub, "b", "0", "ly2"),
gd!("ly4", MulDiv, "ly2", "2", "1"),
gd!("ry1", AddSub, "b", "0", "ly4"),
gd!("ly3", AddSub, "ly4", "0", "ly1"),
gd!("ry2", AddSub, "b", "0", "ly3"),
gd!("hR", MulDiv, "a3", "ss", "400000"),
gd!("x2", AddSub, "hc", "0", "wd32"),
gd!("x3", AddSub, "hc", "wd32", "0"),
gd!("y1", AddSub, "ly1", "hR", "0"),
gd!("y2", AddSub, "ry2", "0", "hR"),
];
static LEFT_RIGHT_RIBBON: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000), ("adj3", 16667)],
guides: LEFT_RIGHT_RIBBON_GUIDES,
paths: LEFT_RIGHT_RIBBON_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "ly1",
r: "x4",
b: "ry4",
}),
};
static LEFT_RIGHT_UP_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x5", y: "x1" },
PathCommandDef::LineTo { x: "x4", y: "x1" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x6", y: "y3" },
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x6", y: "b" },
PathCommandDef::LineTo { x: "x6", y: "y5" },
PathCommandDef::LineTo { x: "x1", y: "y5" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::Close,
];
static LEFT_RIGHT_UP_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_RIGHT_UP_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_RIGHT_UP_ARROW_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("q1", AddSub, "100000", "0", "maxAdj1"),
gd!("maxAdj3", MulDiv, "q1", "1", "2"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("x1", MulDiv, "ss", "a3", "100000"),
gd!("dx2", MulDiv, "ss", "a2", "100000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x5", AddSub, "hc", "dx2", "0"),
gd!("dx3", MulDiv, "ss", "a1", "200000"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "dx3", "0"),
gd!("x6", AddSub, "r", "0", "x1"),
gd!("dy2", MulDiv, "ss", "a2", "50000"),
gd!("y2", AddSub, "b", "0", "dy2"),
gd!("y4", AddSub, "b", "0", "dx2"),
gd!("y3", AddSub, "y4", "0", "dx3"),
gd!("y5", AddSub, "y4", "dx3", "0"),
gd!("il", MulDiv, "dx3", "x1", "dx2"),
gd!("ir", AddSub, "r", "0", "il"),
];
static LEFT_RIGHT_UP_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 25000), ("adj3", 25000)],
guides: LEFT_RIGHT_UP_ARROW_GUIDES,
paths: LEFT_RIGHT_UP_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "y3",
r: "ir",
b: "y5",
}),
};
static LEFT_UP_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "x4", y: "t" },
PathCommandDef::LineTo { x: "r", y: "x1" },
PathCommandDef::LineTo { x: "x5", y: "x1" },
PathCommandDef::LineTo { x: "x5", y: "y5" },
PathCommandDef::LineTo { x: "x1", y: "y5" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::Close,
];
static LEFT_UP_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: LEFT_UP_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LEFT_UP_ARROW_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", AddSub, "100000", "0", "maxAdj1"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("x1", MulDiv, "ss", "a3", "100000"),
gd!("dx2", MulDiv, "ss", "a2", "50000"),
gd!("x2", AddSub, "r", "0", "dx2"),
gd!("y2", AddSub, "b", "0", "dx2"),
gd!("dx4", MulDiv, "ss", "a2", "100000"),
gd!("x4", AddSub, "r", "0", "dx4"),
gd!("y4", AddSub, "b", "0", "dx4"),
gd!("dx3", MulDiv, "ss", "a1", "200000"),
gd!("x3", AddSub, "x4", "0", "dx3"),
gd!("x5", AddSub, "x4", "dx3", "0"),
gd!("y3", AddSub, "y4", "0", "dx3"),
gd!("y5", AddSub, "y4", "dx3", "0"),
gd!("il", MulDiv, "dx3", "x1", "dx4"),
gd!("cx1", AddDiv, "x1", "x5", "2"),
gd!("cy1", AddDiv, "x1", "y5", "2"),
];
static LEFT_UP_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 25000), ("adj3", 25000)],
guides: LEFT_UP_ARROW_GUIDES,
paths: LEFT_UP_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "y3",
r: "x4",
b: "y5",
}),
};
static LIGHTNING_BOLT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "8472", y: "0" },
PathCommandDef::LineTo {
x: "12860",
y: "6080",
},
PathCommandDef::LineTo {
x: "11050",
y: "6797",
},
PathCommandDef::LineTo {
x: "16577",
y: "12007",
},
PathCommandDef::LineTo {
x: "14767",
y: "12877",
},
PathCommandDef::LineTo {
x: "21600",
y: "21600",
},
PathCommandDef::LineTo {
x: "10012",
y: "14915",
},
PathCommandDef::LineTo {
x: "12222",
y: "13987",
},
PathCommandDef::LineTo {
x: "5022",
y: "9705",
},
PathCommandDef::LineTo {
x: "7602",
y: "8382",
},
PathCommandDef::LineTo { x: "0", y: "3890" },
PathCommandDef::Close,
];
static LIGHTNING_BOLT_PATHS: &[PathDef] = &[PathDef {
commands: LIGHTNING_BOLT_CMDS,
w: Some(21600),
h: Some(21600),
fill: PathFill::Norm,
stroke: true,
}];
static LIGHTNING_BOLT_GUIDES: &[GuideDef] = &[
gd!("x1", MulDiv, "w", "5022", "21600"),
gd!("x3", MulDiv, "w", "8472", "21600"),
gd!("x4", MulDiv, "w", "8757", "21600"),
gd!("x5", MulDiv, "w", "10012", "21600"),
gd!("x8", MulDiv, "w", "12860", "21600"),
gd!("x9", MulDiv, "w", "13917", "21600"),
gd!("x11", MulDiv, "w", "16577", "21600"),
gd!("y1", MulDiv, "h", "3890", "21600"),
gd!("y2", MulDiv, "h", "6080", "21600"),
gd!("y4", MulDiv, "h", "7437", "21600"),
gd!("y6", MulDiv, "h", "9705", "21600"),
gd!("y7", MulDiv, "h", "12007", "21600"),
gd!("y10", MulDiv, "h", "14277", "21600"),
gd!("y11", MulDiv, "h", "14915", "21600"),
];
static LIGHTNING_BOLT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: LIGHTNING_BOLT_GUIDES,
paths: LIGHTNING_BOLT_PATHS,
text_rect: Some(TextRectDef {
l: "x4",
t: "y4",
r: "x9",
b: "y10",
}),
};
static LINE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
];
static LINE_PATHS: &[PathDef] = &[PathDef {
commands: LINE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LINE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: LINE_PATHS,
text_rect: None,
};
static LINE_INV_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "r", y: "t" },
];
static LINE_INV_PATHS: &[PathDef] = &[PathDef {
commands: LINE_INV_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static LINE_INV: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: LINE_INV_PATHS,
text_rect: None,
};
static MATH_DIVIDE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "hc", y: "y1" },
PathCommandDef::ArcTo {
wr: "rad",
hr: "rad",
st_ang: "3cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "y5" },
PathCommandDef::ArcTo {
wr: "rad",
hr: "rad",
st_ang: "cd4",
sw_ang: "21600000",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::Close,
];
static MATH_DIVIDE_PATHS: &[PathDef] = &[PathDef {
commands: MATH_DIVIDE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MATH_DIVIDE_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "1000", "adj1", "36745"),
gd!("ma1", AddSub, "0", "0", "a1"),
gd!("ma3h", AddDiv, "73490", "ma1", "4"),
gd!("ma3w", MulDiv, "36745", "w", "h"),
gd!("maxAdj3", Min, "ma3h", "ma3w", ""),
gd!("a3", Pin, "1000", "adj3", "maxAdj3"),
gd!("m4a3", MulDiv, "-4", "a3", "1"),
gd!("maxAdj2", AddSub, "73490", "m4a3", "a1"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("yg", MulDiv, "h", "a2", "100000"),
gd!("rad", MulDiv, "h", "a3", "100000"),
gd!("dx1", MulDiv, "w", "73490", "200000"),
gd!("y3", AddSub, "vc", "0", "dy1"),
gd!("y4", AddSub, "vc", "dy1", "0"),
gd!("a", AddSub, "yg", "rad", "0"),
gd!("y2", AddSub, "y3", "0", "a"),
gd!("y1", AddSub, "y2", "0", "rad"),
gd!("y5", AddSub, "b", "0", "y1"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x3", AddSub, "hc", "dx1", "0"),
gd!("x2", AddSub, "hc", "0", "rad"),
];
static MATH_DIVIDE: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 23520), ("adj2", 5880), ("adj3", 11760)],
guides: MATH_DIVIDE_GUIDES,
paths: MATH_DIVIDE_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y3",
r: "x3",
b: "y4",
}),
};
static MATH_EQUAL_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::Close,
];
static MATH_EQUAL_PATHS: &[PathDef] = &[PathDef {
commands: MATH_EQUAL_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MATH_EQUAL_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "36745"),
gd!("2a1", MulDiv, "a1", "2", "1"),
gd!("mAdj2", AddSub, "100000", "0", "2a1"),
gd!("a2", Pin, "0", "adj2", "mAdj2"),
gd!("dy1", MulDiv, "h", "a1", "100000"),
gd!("dy2", MulDiv, "h", "a2", "200000"),
gd!("dx1", MulDiv, "w", "73490", "200000"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y1", AddSub, "y2", "0", "dy1"),
gd!("y4", AddSub, "y3", "dy1", "0"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
gd!("yC1", AddDiv, "y1", "y2", "2"),
gd!("yC2", AddDiv, "y3", "y4", "2"),
];
static MATH_EQUAL: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 23520), ("adj2", 11760)],
guides: MATH_EQUAL_GUIDES,
paths: MATH_EQUAL_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x2",
b: "y4",
}),
};
static MATH_MINUS_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
];
static MATH_MINUS_PATHS: &[PathDef] = &[PathDef {
commands: MATH_MINUS_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MATH_MINUS_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("dx1", MulDiv, "w", "73490", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
];
static MATH_MINUS: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 23520)],
guides: MATH_MINUS_GUIDES,
paths: MATH_MINUS_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x2",
b: "y2",
}),
};
static MATH_MULTIPLY_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "xA", y: "yA" },
PathCommandDef::LineTo { x: "xB", y: "yB" },
PathCommandDef::LineTo { x: "hc", y: "yC" },
PathCommandDef::LineTo { x: "xD", y: "yB" },
PathCommandDef::LineTo { x: "xE", y: "yA" },
PathCommandDef::LineTo { x: "xF", y: "vc" },
PathCommandDef::LineTo { x: "xE", y: "yG" },
PathCommandDef::LineTo { x: "xD", y: "yH" },
PathCommandDef::LineTo { x: "hc", y: "yI" },
PathCommandDef::LineTo { x: "xB", y: "yH" },
PathCommandDef::LineTo { x: "xA", y: "yG" },
PathCommandDef::LineTo { x: "xL", y: "vc" },
PathCommandDef::Close,
];
static MATH_MULTIPLY_PATHS: &[PathDef] = &[PathDef {
commands: MATH_MULTIPLY_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MATH_MULTIPLY_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "51965"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("a", Atan2, "w", "h", ""),
gd!("sa", Sin, "1", "a", ""),
gd!("ca", Cos, "1", "a", ""),
gd!("ta", Tan, "1", "a", ""),
gd!("dl", Mod, "w", "h", "0"),
gd!("rw", MulDiv, "dl", "51965", "100000"),
gd!("lM", AddSub, "dl", "0", "rw"),
gd!("xM", MulDiv, "ca", "lM", "2"),
gd!("yM", MulDiv, "sa", "lM", "2"),
gd!("dxAM", MulDiv, "sa", "th", "2"),
gd!("dyAM", MulDiv, "ca", "th", "2"),
gd!("xA", AddSub, "xM", "0", "dxAM"),
gd!("yA", AddSub, "yM", "dyAM", "0"),
gd!("xB", AddSub, "xM", "dxAM", "0"),
gd!("yB", AddSub, "yM", "0", "dyAM"),
gd!("xBC", AddSub, "hc", "0", "xB"),
gd!("yBC", MulDiv, "xBC", "ta", "1"),
gd!("yC", AddSub, "yBC", "yB", "0"),
gd!("xD", AddSub, "r", "0", "xB"),
gd!("xE", AddSub, "r", "0", "xA"),
gd!("yFE", AddSub, "vc", "0", "yA"),
gd!("xFE", MulDiv, "yFE", "1", "ta"),
gd!("xF", AddSub, "xE", "0", "xFE"),
gd!("xL", AddSub, "xA", "xFE", "0"),
gd!("yG", AddSub, "b", "0", "yA"),
gd!("yH", AddSub, "b", "0", "yB"),
gd!("yI", AddSub, "b", "0", "yC"),
gd!("xC2", AddSub, "r", "0", "xM"),
gd!("yC3", AddSub, "b", "0", "yM"),
];
static MATH_MULTIPLY: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 23520)],
guides: MATH_MULTIPLY_GUIDES,
paths: MATH_MULTIPLY_PATHS,
text_rect: Some(TextRectDef {
l: "xA",
t: "yB",
r: "xE",
b: "yH",
}),
};
static MATH_NOT_EQUAL_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x6", y: "y1" },
PathCommandDef::LineTo { x: "lx", y: "ly" },
PathCommandDef::LineTo { x: "rx", y: "ry" },
PathCommandDef::LineTo { x: "rx6", y: "y1" },
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::LineTo { x: "x8", y: "y2" },
PathCommandDef::LineTo { x: "rx5", y: "y2" },
PathCommandDef::LineTo { x: "rx4", y: "y3" },
PathCommandDef::LineTo { x: "x8", y: "y3" },
PathCommandDef::LineTo { x: "x8", y: "y4" },
PathCommandDef::LineTo { x: "rx3", y: "y4" },
PathCommandDef::LineTo { x: "drx", y: "dry" },
PathCommandDef::LineTo { x: "dlx", y: "dly" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
];
static MATH_NOT_EQUAL_PATHS: &[PathDef] = &[PathDef {
commands: MATH_NOT_EQUAL_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MATH_NOT_EQUAL_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("crAng", Pin, "4200000", "adj2", "6600000"),
gd!("2a1", MulDiv, "a1", "2", "1"),
gd!("maxAdj3", AddSub, "100000", "0", "2a1"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("dy1", MulDiv, "h", "a1", "100000"),
gd!("dy2", MulDiv, "h", "a3", "200000"),
gd!("dx1", MulDiv, "w", "73490", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x8", AddSub, "hc", "dx1", "0"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y1", AddSub, "y2", "0", "dy1"),
gd!("y4", AddSub, "y3", "dy1", "0"),
gd!("cadj2", AddSub, "crAng", "0", "cd4"),
gd!("xadj2", Tan, "hd2", "cadj2", ""),
gd!("len", Mod, "xadj2", "hd2", "0"),
gd!("bhw", MulDiv, "len", "dy1", "hd2"),
gd!("bhw2", MulDiv, "bhw", "1", "2"),
gd!("x7", AddSub, "hc", "xadj2", "bhw2"),
gd!("dx67", MulDiv, "xadj2", "y1", "hd2"),
gd!("x6", AddSub, "x7", "0", "dx67"),
gd!("dx57", MulDiv, "xadj2", "y2", "hd2"),
gd!("x5", AddSub, "x7", "0", "dx57"),
gd!("dx47", MulDiv, "xadj2", "y3", "hd2"),
gd!("x4", AddSub, "x7", "0", "dx47"),
gd!("dx37", MulDiv, "xadj2", "y4", "hd2"),
gd!("x3", AddSub, "x7", "0", "dx37"),
gd!("dx27", MulDiv, "xadj2", "2", "1"),
gd!("x2", AddSub, "x7", "0", "dx27"),
gd!("rx7", AddSub, "x7", "bhw", "0"),
gd!("rx6", AddSub, "x6", "bhw", "0"),
gd!("rx5", AddSub, "x5", "bhw", "0"),
gd!("rx4", AddSub, "x4", "bhw", "0"),
gd!("rx3", AddSub, "x3", "bhw", "0"),
gd!("rx2", AddSub, "x2", "bhw", "0"),
gd!("dx7", MulDiv, "dy1", "hd2", "len"),
gd!("rxt", AddSub, "x7", "dx7", "0"),
gd!("lxt", AddSub, "rx7", "0", "dx7"),
gd!("rx", IfElse, "cadj2", "rxt", "rx7"),
gd!("lx", IfElse, "cadj2", "x7", "lxt"),
gd!("dy3", MulDiv, "dy1", "xadj2", "len"),
gd!("dy4", AddSub, "0", "0", "dy3"),
gd!("ry", IfElse, "cadj2", "dy3", "t"),
gd!("ly", IfElse, "cadj2", "t", "dy4"),
gd!("dlx", AddSub, "w", "0", "rx"),
gd!("drx", AddSub, "w", "0", "lx"),
gd!("dly", AddSub, "h", "0", "ry"),
gd!("dry", AddSub, "h", "0", "ly"),
gd!("xC1", AddDiv, "rx", "lx", "2"),
gd!("xC2", AddDiv, "drx", "dlx", "2"),
gd!("yC1", AddDiv, "ry", "ly", "2"),
gd!("yC2", AddDiv, "y1", "y2", "2"),
gd!("yC3", AddDiv, "y3", "y4", "2"),
gd!("yC4", AddDiv, "dry", "dly", "2"),
];
static MATH_NOT_EQUAL: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 23520), ("adj2", 6600000), ("adj3", 11760)],
guides: MATH_NOT_EQUAL_GUIDES,
paths: MATH_NOT_EQUAL_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x8",
b: "y4",
}),
};
static MATH_PLUS_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::Close,
];
static MATH_PLUS_PATHS: &[PathDef] = &[PathDef {
commands: MATH_PLUS_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MATH_PLUS_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "73490"),
gd!("dx1", MulDiv, "w", "73490", "200000"),
gd!("dy1", MulDiv, "h", "73490", "200000"),
gd!("dx2", MulDiv, "ss", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dx2"),
gd!("y3", AddSub, "vc", "dx2", "0"),
gd!("y4", AddSub, "vc", "dy1", "0"),
];
static MATH_PLUS: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 23520)],
guides: MATH_PLUS_GUIDES,
paths: MATH_PLUS_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y2",
r: "x4",
b: "y3",
}),
};
static MOON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "b" },
PathCommandDef::ArcTo {
wr: "w",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "g18w",
hr: "dy1",
st_ang: "stAng1",
sw_ang: "swAng1",
},
PathCommandDef::Close,
];
static MOON_PATHS: &[PathDef] = &[PathDef {
commands: MOON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static MOON_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "87500"),
gd!("g0", MulDiv, "ss", "a", "100000"),
gd!("g0w", MulDiv, "g0", "w", "ss"),
gd!("g1", AddSub, "ss", "0", "g0"),
gd!("g2", MulDiv, "g0", "g0", "g1"),
gd!("g3", MulDiv, "ss", "ss", "g1"),
gd!("g4", MulDiv, "g3", "2", "1"),
gd!("g5", AddSub, "g4", "0", "g2"),
gd!("g6", AddSub, "g5", "0", "g0"),
gd!("g6w", MulDiv, "g6", "w", "ss"),
gd!("g7", MulDiv, "g5", "1", "2"),
gd!("g8", AddSub, "g7", "0", "g0"),
gd!("dy1", MulDiv, "g8", "hd2", "ss"),
gd!("g10h", AddSub, "vc", "0", "dy1"),
gd!("g11h", AddSub, "vc", "dy1", "0"),
gd!("g12", MulDiv, "g0", "9598", "32768"),
gd!("g12w", MulDiv, "g12", "w", "ss"),
gd!("g13", AddSub, "ss", "0", "g12"),
gd!("q1", MulDiv, "ss", "ss", "1"),
gd!("q2", MulDiv, "g13", "g13", "1"),
gd!("q3", AddSub, "q1", "0", "q2"),
gd!("q4", Sqrt, "q3", "", ""),
gd!("dy4", MulDiv, "q4", "hd2", "ss"),
gd!("g15h", AddSub, "vc", "0", "dy4"),
gd!("g16h", AddSub, "vc", "dy4", "0"),
gd!("g17w", AddSub, "g6w", "0", "g0w"),
gd!("g18w", MulDiv, "g17w", "1", "2"),
gd!("dx2p", AddSub, "g0w", "g18w", "w"),
gd!("dx2", MulDiv, "dx2p", "-1", "1"),
gd!("dy2", MulDiv, "hd2", "-1", "1"),
gd!("stAng1", Atan2, "dx2", "dy2", ""),
gd!("enAngp1", Atan2, "dx2", "hd2", ""),
gd!("enAng1", AddSub, "enAngp1", "0", "21600000"),
gd!("swAng1", AddSub, "enAng1", "0", "stAng1"),
];
static MOON: PresetDef = PresetDef {
adjust_defaults: &[("adj", 50000)],
guides: MOON_GUIDES,
paths: MOON_PATHS,
text_rect: Some(TextRectDef {
l: "g12w",
t: "g15h",
r: "g0w",
b: "g16h",
}),
};
static NON_ISOSCELES_TRAPEZOID_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static NON_ISOSCELES_TRAPEZOID_PATHS: &[PathDef] = &[PathDef {
commands: NON_ISOSCELES_TRAPEZOID_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static NON_ISOSCELES_TRAPEZOID_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "50000", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "maxAdj"),
gd!("a2", Pin, "0", "adj2", "maxAdj"),
gd!("x1", MulDiv, "ss", "a1", "200000"),
gd!("x2", MulDiv, "ss", "a1", "100000"),
gd!("dx3", MulDiv, "ss", "a2", "100000"),
gd!("x3", AddSub, "r", "0", "dx3"),
gd!("x4", AddDiv, "r", "x3", "2"),
gd!("il", MulDiv, "wd3", "a1", "maxAdj"),
gd!("adjm", Max, "a1", "a2", ""),
gd!("it", MulDiv, "hd3", "adjm", "maxAdj"),
gd!("irt", MulDiv, "wd3", "a2", "maxAdj"),
gd!("ir", AddSub, "r", "0", "irt"),
];
static NON_ISOSCELES_TRAPEZOID: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 25000)],
guides: NON_ISOSCELES_TRAPEZOID_GUIDES,
paths: NON_ISOSCELES_TRAPEZOID_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "b",
}),
};
static NO_SMOKING_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "stAng1",
sw_ang: "swAng",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x2", y: "y2" },
PathCommandDef::ArcTo {
wr: "iwd2",
hr: "ihd2",
st_ang: "stAng2",
sw_ang: "swAng",
},
PathCommandDef::Close,
];
static NO_SMOKING_PATHS: &[PathDef] = &[PathDef {
commands: NO_SMOKING_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static NO_SMOKING_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dr", MulDiv, "ss", "a", "100000"),
gd!("iwd2", AddSub, "wd2", "0", "dr"),
gd!("ihd2", AddSub, "hd2", "0", "dr"),
gd!("ang", Atan2, "w", "h", ""),
gd!("ct", Cos, "ihd2", "ang", ""),
gd!("st", Sin, "iwd2", "ang", ""),
gd!("m", Mod, "ct", "st", "0"),
gd!("n", MulDiv, "iwd2", "ihd2", "m"),
gd!("drd2", MulDiv, "dr", "1", "2"),
gd!("dang", Atan2, "n", "drd2", ""),
gd!("dang2", MulDiv, "dang", "2", "1"),
gd!("swAng", AddSub, "-10800000", "dang2", "0"),
gd!("t3", Atan2, "w", "h", ""),
gd!("stAng1", AddSub, "t3", "0", "dang"),
gd!("stAng2", AddSub, "stAng1", "0", "cd2"),
gd!("ct1", Cos, "ihd2", "stAng1", ""),
gd!("st1", Sin, "iwd2", "stAng1", ""),
gd!("m1", Mod, "ct1", "st1", "0"),
gd!("n1", MulDiv, "iwd2", "ihd2", "m1"),
gd!("dx1", Cos, "n1", "stAng1", ""),
gd!("dy1", Sin, "n1", "stAng1", ""),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "dy1", "0"),
gd!("x2", AddSub, "hc", "0", "dx1"),
gd!("y2", AddSub, "vc", "0", "dy1"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static NO_SMOKING: PresetDef = PresetDef {
adjust_defaults: &[("adj", 18750)],
guides: NO_SMOKING_GUIDES,
paths: NO_SMOKING_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static NOTCHED_RIGHT_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "vc" },
PathCommandDef::Close,
];
static NOTCHED_RIGHT_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: NOTCHED_RIGHT_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static NOTCHED_RIGHT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "100000", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("dx2", MulDiv, "ss", "a2", "100000"),
gd!("x2", AddSub, "r", "0", "dx2"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("x1", MulDiv, "dy1", "dx2", "hd2"),
gd!("x3", AddSub, "r", "0", "x1"),
];
static NOTCHED_RIGHT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: NOTCHED_RIGHT_ARROW_GUIDES,
paths: NOTCHED_RIGHT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x3",
b: "y2",
}),
};
static OCTAGON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "x1" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "x1" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::Close,
];
static OCTAGON_PATHS: &[PathDef] = &[PathDef {
commands: OCTAGON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static OCTAGON_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "b", "0", "x1"),
gd!("il", MulDiv, "x1", "1", "2"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static OCTAGON: PresetDef = PresetDef {
adjust_defaults: &[("adj", 29289)],
guides: OCTAGON_GUIDES,
paths: OCTAGON_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static PARALLELOGRAM_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x5", y: "b" },
PathCommandDef::Close,
];
static PARALLELOGRAM_PATHS: &[PathDef] = &[PathDef {
commands: PARALLELOGRAM_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static PARALLELOGRAM_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "100000", "w", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("x1", MulDiv, "ss", "a", "200000"),
gd!("x2", MulDiv, "ss", "a", "100000"),
gd!("x6", AddSub, "r", "0", "x1"),
gd!("x5", AddSub, "r", "0", "x2"),
gd!("x3", MulDiv, "x5", "1", "2"),
gd!("x4", AddSub, "r", "0", "x3"),
gd!("il", MulDiv, "wd2", "a", "maxAdj"),
gd!("q1", MulDiv, "5", "a", "maxAdj"),
gd!("q2", AddDiv, "1", "q1", "12"),
gd!("il", MulDiv, "q2", "w", "1"),
gd!("it", MulDiv, "q2", "h", "1"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "it"),
gd!("q3", MulDiv, "h", "hc", "x2"),
gd!("y1", Pin, "0", "q3", "h"),
gd!("y2", AddSub, "b", "0", "y1"),
];
static PARALLELOGRAM: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: PARALLELOGRAM_GUIDES,
paths: PARALLELOGRAM_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static PENTAGON_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::Close,
];
static PENTAGON_PATHS: &[PathDef] = &[PathDef {
commands: PENTAGON_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static PENTAGON_GUIDES: &[GuideDef] = &[
gd!("swd2", MulDiv, "wd2", "hf", "100000"),
gd!("shd2", MulDiv, "hd2", "vf", "100000"),
gd!("svc", MulDiv, "vc", "vf", "100000"),
gd!("dx1", Cos, "swd2", "1080000", ""),
gd!("dx2", Cos, "swd2", "18360000", ""),
gd!("dy1", Sin, "shd2", "1080000", ""),
gd!("dy2", Sin, "shd2", "18360000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "svc", "0", "dy1"),
gd!("y2", AddSub, "svc", "0", "dy2"),
gd!("it", MulDiv, "y1", "dx2", "dx1"),
];
static PENTAGON: PresetDef = PresetDef {
adjust_defaults: &[("hf", 105146), ("vf", 110557)],
guides: PENTAGON_GUIDES,
paths: PENTAGON_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "it",
r: "x3",
b: "y2",
}),
};
static PIE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "stAng",
sw_ang: "swAng",
},
PathCommandDef::LineTo { x: "hc", y: "vc" },
PathCommandDef::Close,
];
static PIE_PATHS: &[PathDef] = &[PathDef {
commands: PIE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static PIE_GUIDES: &[GuideDef] = &[
gd!("stAng", Pin, "0", "adj1", "21599999"),
gd!("enAng", Pin, "0", "adj2", "21599999"),
gd!("sw1", AddSub, "enAng", "0", "stAng"),
gd!("sw2", AddSub, "sw1", "21600000", "0"),
gd!("swAng", IfElse, "sw1", "sw1", "sw2"),
gd!("wt1", Sin, "wd2", "stAng", ""),
gd!("ht1", Cos, "hd2", "stAng", ""),
gd!("dx1", CosAtan2, "wd2", "ht1", "wt1"),
gd!("dy1", SinAtan2, "hd2", "ht1", "wt1"),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "dy1", "0"),
gd!("wt2", Sin, "wd2", "enAng", ""),
gd!("ht2", Cos, "hd2", "enAng", ""),
gd!("dx2", CosAtan2, "wd2", "ht2", "wt2"),
gd!("dy2", SinAtan2, "hd2", "ht2", "wt2"),
gd!("x2", AddSub, "hc", "dx2", "0"),
gd!("y2", AddSub, "vc", "dy2", "0"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static PIE: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 0), ("adj2", 16200000)],
guides: PIE_GUIDES,
paths: PIE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "ir",
r: "it",
b: "ib",
}),
};
static PIE_WEDGE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::ArcTo {
wr: "w",
hr: "h",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static PIE_WEDGE_PATHS: &[PathDef] = &[PathDef {
commands: PIE_WEDGE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static PIE_WEDGE_GUIDES: &[GuideDef] = &[
gd!("g1", Cos, "w", "13500000", ""),
gd!("g2", Sin, "h", "13500000", ""),
gd!("x1", AddSub, "r", "g1", "0"),
gd!("y1", AddSub, "b", "g2", "0"),
];
static PIE_WEDGE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: PIE_WEDGE_GUIDES,
paths: PIE_WEDGE_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "r",
b: "b",
}),
};
static PLAQUE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::Close,
];
static PLAQUE_PATHS: &[PathDef] = &[PathDef {
commands: PLAQUE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static PLAQUE_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "b", "0", "x1"),
gd!("il", MulDiv, "x1", "70711", "100000"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static PLAQUE: PresetDef = PresetDef {
adjust_defaults: &[("adj", 16667)],
guides: PLAQUE_GUIDES,
paths: PLAQUE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static PLAQUE_TABS_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "dx", y: "t" },
PathCommandDef::ArcTo {
wr: "dx",
hr: "dx",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static PLAQUE_TABS_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::ArcTo {
wr: "dx",
hr: "dx",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static PLAQUE_TABS_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "dx" },
PathCommandDef::ArcTo {
wr: "dx",
hr: "dx",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static PLAQUE_TABS_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "b" },
PathCommandDef::ArcTo {
wr: "dx",
hr: "dx",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static PLAQUE_TABS_PATHS: &[PathDef] = &[
PathDef {
commands: PLAQUE_TABS_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: PLAQUE_TABS_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: PLAQUE_TABS_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: PLAQUE_TABS_P3_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
];
static PLAQUE_TABS_GUIDES: &[GuideDef] = &[
gd!("md", Mod, "w", "h", "0"),
gd!("dx", MulDiv, "1", "md", "20"),
gd!("y1", AddSub, "0", "b", "dx"),
gd!("x1", AddSub, "0", "r", "dx"),
];
static PLAQUE_TABS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: PLAQUE_TABS_GUIDES,
paths: PLAQUE_TABS_PATHS,
text_rect: Some(TextRectDef {
l: "dx",
t: "dx",
r: "x1",
b: "y1",
}),
};
static PLUS_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "x1" },
PathCommandDef::LineTo { x: "x1", y: "x1" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "r", y: "x1" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::Close,
];
static PLUS_PATHS: &[PathDef] = &[PathDef {
commands: PLUS_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static PLUS_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "b", "0", "x1"),
gd!("d", AddSub, "w", "0", "h"),
gd!("il", IfElse, "d", "l", "x1"),
gd!("ir", IfElse, "d", "r", "x2"),
gd!("it", IfElse, "d", "x1", "t"),
gd!("ib", IfElse, "d", "y2", "b"),
];
static PLUS: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: PLUS_GUIDES,
paths: PLUS_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static QUAD_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "x1" },
PathCommandDef::LineTo { x: "x2", y: "x1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x5", y: "x1" },
PathCommandDef::LineTo { x: "x4", y: "x1" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "x6", y: "y3" },
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x6", y: "y5" },
PathCommandDef::LineTo { x: "x6", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "y6" },
PathCommandDef::LineTo { x: "x5", y: "y6" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "y6" },
PathCommandDef::LineTo { x: "x3", y: "y6" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "x1", y: "y5" },
PathCommandDef::Close,
];
static QUAD_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: QUAD_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static QUAD_ARROW_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("q1", AddSub, "100000", "0", "maxAdj1"),
gd!("maxAdj3", MulDiv, "q1", "1", "2"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("x1", MulDiv, "ss", "a3", "100000"),
gd!("dx2", MulDiv, "ss", "a2", "100000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x5", AddSub, "hc", "dx2", "0"),
gd!("dx3", MulDiv, "ss", "a1", "200000"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "dx3", "0"),
gd!("x6", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "vc", "0", "dx2"),
gd!("y5", AddSub, "vc", "dx2", "0"),
gd!("y3", AddSub, "vc", "0", "dx3"),
gd!("y4", AddSub, "vc", "dx3", "0"),
gd!("y6", AddSub, "b", "0", "x1"),
gd!("il", MulDiv, "dx3", "x1", "dx2"),
gd!("ir", AddSub, "r", "0", "il"),
];
static QUAD_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 22500), ("adj2", 22500), ("adj3", 22500)],
guides: QUAD_ARROW_GUIDES,
paths: QUAD_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "y3",
r: "ir",
b: "y4",
}),
};
static QUAD_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "ah", y: "y3" },
PathCommandDef::LineTo { x: "ah", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "ah" },
PathCommandDef::LineTo { x: "x3", y: "ah" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x6", y: "ah" },
PathCommandDef::LineTo { x: "x5", y: "ah" },
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::LineTo { x: "x7", y: "y2" },
PathCommandDef::LineTo { x: "x7", y: "y4" },
PathCommandDef::LineTo { x: "x8", y: "y4" },
PathCommandDef::LineTo { x: "x8", y: "y3" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x8", y: "y6" },
PathCommandDef::LineTo { x: "x8", y: "y5" },
PathCommandDef::LineTo { x: "x7", y: "y5" },
PathCommandDef::LineTo { x: "x7", y: "y7" },
PathCommandDef::LineTo { x: "x5", y: "y7" },
PathCommandDef::LineTo { x: "x5", y: "y8" },
PathCommandDef::LineTo { x: "x6", y: "y8" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "x3", y: "y8" },
PathCommandDef::LineTo { x: "x4", y: "y8" },
PathCommandDef::LineTo { x: "x4", y: "y7" },
PathCommandDef::LineTo { x: "x2", y: "y7" },
PathCommandDef::LineTo { x: "x2", y: "y5" },
PathCommandDef::LineTo { x: "ah", y: "y5" },
PathCommandDef::LineTo { x: "ah", y: "y6" },
PathCommandDef::Close,
];
static QUAD_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: QUAD_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static QUAD_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", AddSub, "50000", "0", "a2"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "2", "1"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "a1", "adj4", "maxAdj4"),
gd!("dx2", MulDiv, "ss", "a2", "100000"),
gd!("dx3", MulDiv, "ss", "a1", "200000"),
gd!("ah", MulDiv, "ss", "a3", "100000"),
gd!("dx1", MulDiv, "w", "a4", "200000"),
gd!("dy1", MulDiv, "h", "a4", "200000"),
gd!("x8", AddSub, "r", "0", "ah"),
gd!("x2", AddSub, "hc", "0", "dx1"),
gd!("x7", AddSub, "hc", "dx1", "0"),
gd!("x3", AddSub, "hc", "0", "dx2"),
gd!("x6", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "0", "dx3"),
gd!("x5", AddSub, "hc", "dx3", "0"),
gd!("y8", AddSub, "b", "0", "ah"),
gd!("y2", AddSub, "vc", "0", "dy1"),
gd!("y7", AddSub, "vc", "dy1", "0"),
gd!("y3", AddSub, "vc", "0", "dx2"),
gd!("y6", AddSub, "vc", "dx2", "0"),
gd!("y4", AddSub, "vc", "0", "dx3"),
gd!("y5", AddSub, "vc", "dx3", "0"),
];
static QUAD_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 18515),
("adj2", 18515),
("adj3", 18515),
("adj4", 48123),
],
guides: QUAD_ARROW_CALLOUT_GUIDES,
paths: QUAD_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "y2",
r: "x7",
b: "y7",
}),
};
static RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static RECT_PATHS: &[PathDef] = &[PathDef {
commands: RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static RECT: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: RECT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static RIBBON_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "t" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x8", y: "y2" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x7", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x10", y: "y3" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y5" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x3", y: "b" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "l", y: "y4" },
PathCommandDef::LineTo { x: "wd8", y: "y3" },
PathCommandDef::Close,
];
static RIBBON_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x5", y: "hR" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x6", y: "hR" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::Close,
];
static RIBBON_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "t" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x8", y: "y2" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x7", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "x10", y: "y3" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y5" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x3", y: "b" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "l", y: "y4" },
PathCommandDef::LineTo { x: "wd8", y: "y3" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x5", y: "hR" },
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::MoveTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "x6", y: "hR" },
PathCommandDef::MoveTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y6" },
PathCommandDef::MoveTo { x: "x9", y: "y6" },
PathCommandDef::LineTo { x: "x9", y: "y4" },
];
static RIBBON_PATHS: &[PathDef] = &[
PathDef {
commands: RIBBON_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: RIBBON_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: RIBBON_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static RIBBON_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "33333"),
gd!("a2", Pin, "25000", "adj2", "75000"),
gd!("x10", AddSub, "r", "0", "wd8"),
gd!("dx2", MulDiv, "w", "a2", "200000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x9", AddSub, "hc", "dx2", "0"),
gd!("x3", AddSub, "x2", "wd32", "0"),
gd!("x8", AddSub, "x9", "0", "wd32"),
gd!("x5", AddSub, "x2", "wd8", "0"),
gd!("x6", AddSub, "x9", "0", "wd8"),
gd!("x4", AddSub, "x5", "0", "wd32"),
gd!("x7", AddSub, "x6", "wd32", "0"),
gd!("y1", MulDiv, "h", "a1", "200000"),
gd!("y2", MulDiv, "h", "a1", "100000"),
gd!("y4", AddSub, "b", "0", "y2"),
gd!("y3", MulDiv, "y4", "1", "2"),
gd!("hR", MulDiv, "h", "a1", "400000"),
gd!("y5", AddSub, "b", "0", "hR"),
gd!("y6", AddSub, "y2", "0", "hR"),
];
static RIBBON: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16667), ("adj2", 50000)],
guides: RIBBON_GUIDES,
paths: RIBBON_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "y2",
r: "x9",
b: "b",
}),
};
static RIBBON2_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x4", y: "b" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x8", y: "y2" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x7", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x10", y: "y3" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "hR" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "l", y: "y4" },
PathCommandDef::LineTo { x: "wd8", y: "y3" },
PathCommandDef::Close,
];
static RIBBON2_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x5", y: "y6" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x6", y: "y6" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::Close,
];
static RIBBON2_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "wd8", y: "y3" },
PathCommandDef::LineTo { x: "l", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "hR" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x8", y: "t" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x10", y: "y3" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x7", y: "b" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd32",
hr: "hR",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x5", y: "y2" },
PathCommandDef::LineTo { x: "x5", y: "y6" },
PathCommandDef::MoveTo { x: "x6", y: "y6" },
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::MoveTo { x: "x2", y: "y7" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::MoveTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "x9", y: "y7" },
];
static RIBBON2_PATHS: &[PathDef] = &[
PathDef {
commands: RIBBON2_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: RIBBON2_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: RIBBON2_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static RIBBON2_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "33333"),
gd!("a2", Pin, "25000", "adj2", "75000"),
gd!("x10", AddSub, "r", "0", "wd8"),
gd!("dx2", MulDiv, "w", "a2", "200000"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x9", AddSub, "hc", "dx2", "0"),
gd!("x3", AddSub, "x2", "wd32", "0"),
gd!("x8", AddSub, "x9", "0", "wd32"),
gd!("x5", AddSub, "x2", "wd8", "0"),
gd!("x6", AddSub, "x9", "0", "wd8"),
gd!("x4", AddSub, "x5", "0", "wd32"),
gd!("x7", AddSub, "x6", "wd32", "0"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("y1", AddSub, "b", "0", "dy1"),
gd!("dy2", MulDiv, "h", "a1", "100000"),
gd!("y2", AddSub, "b", "0", "dy2"),
gd!("y4", AddSub, "t", "dy2", "0"),
gd!("y3", AddDiv, "y4", "b", "2"),
gd!("hR", MulDiv, "h", "a1", "400000"),
gd!("y6", AddSub, "b", "0", "hR"),
gd!("y7", AddSub, "y1", "0", "hR"),
];
static RIBBON2: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16667), ("adj2", 50000)],
guides: RIBBON2_GUIDES,
paths: RIBBON2_PATHS,
text_rect: Some(TextRectDef {
l: "x2",
t: "t",
r: "x9",
b: "y2",
}),
};
static RIGHT_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::Close,
];
static RIGHT_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: RIGHT_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static RIGHT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "100000", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("dx1", MulDiv, "ss", "a2", "100000"),
gd!("x1", AddSub, "r", "0", "dx1"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("dx2", MulDiv, "y1", "dx1", "hd2"),
gd!("x2", AddSub, "x1", "dx2", "0"),
];
static RIGHT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: RIGHT_ARROW_GUIDES,
paths: RIGHT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y1",
r: "x2",
b: "y2",
}),
};
static RIGHT_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static RIGHT_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: RIGHT_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static RIGHT_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "h", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", MulDiv, "100000", "w", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "ss", "w"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("dy1", MulDiv, "ss", "a2", "100000"),
gd!("dy2", MulDiv, "ss", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y4", AddSub, "vc", "dy1", "0"),
gd!("dx3", MulDiv, "ss", "a3", "100000"),
gd!("x3", AddSub, "r", "0", "dx3"),
gd!("x2", MulDiv, "w", "a4", "100000"),
gd!("x1", MulDiv, "x2", "1", "2"),
];
static RIGHT_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 64977),
],
guides: RIGHT_ARROW_CALLOUT_GUIDES,
paths: RIGHT_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "x2",
b: "b",
}),
};
static RIGHT_BRACE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "hc", y: "y2" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "y4" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static RIGHT_BRACE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "hc", y: "y2" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "cd2",
sw_ang: "-5400000",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "hc", y: "y4" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "y1",
st_ang: "0",
sw_ang: "cd4",
},
];
static RIGHT_BRACE_PATHS: &[PathDef] = &[
PathDef {
commands: RIGHT_BRACE_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: RIGHT_BRACE_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static RIGHT_BRACE_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "100000"),
gd!("q1", AddSub, "100000", "0", "a2"),
gd!("q2", Min, "q1", "a2", ""),
gd!("q3", MulDiv, "q2", "1", "2"),
gd!("maxAdj1", MulDiv, "q3", "h", "ss"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("y1", MulDiv, "ss", "a1", "100000"),
gd!("y3", MulDiv, "h", "a2", "100000"),
gd!("y2", AddSub, "y3", "0", "y1"),
gd!("y4", AddSub, "b", "0", "y1"),
gd!("dx1", Cos, "wd2", "2700000", ""),
gd!("dy1", Sin, "y1", "2700000", ""),
gd!("ir", AddSub, "l", "dx1", "0"),
gd!("it", AddSub, "y1", "0", "dy1"),
gd!("ib", AddSub, "b", "dy1", "y1"),
];
static RIGHT_BRACE: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 8333), ("adj2", 50000)],
guides: RIGHT_BRACE_GUIDES,
paths: RIGHT_BRACE_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "it",
r: "ir",
b: "ib",
}),
};
static RIGHT_BRACKET_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static RIGHT_BRACKET_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "w",
hr: "y1",
st_ang: "0",
sw_ang: "cd4",
},
];
static RIGHT_BRACKET_PATHS: &[PathDef] = &[
PathDef {
commands: RIGHT_BRACKET_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: RIGHT_BRACKET_P1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static RIGHT_BRACKET_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "50000", "h", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("y1", MulDiv, "ss", "a", "100000"),
gd!("y2", AddSub, "b", "0", "y1"),
gd!("dx1", Cos, "w", "2700000", ""),
gd!("dy1", Sin, "y1", "2700000", ""),
gd!("ir", AddSub, "l", "dx1", "0"),
gd!("it", AddSub, "y1", "0", "dy1"),
gd!("ib", AddSub, "b", "dy1", "y1"),
];
static RIGHT_BRACKET: PresetDef = PresetDef {
adjust_defaults: &[("adj", 8333)],
guides: RIGHT_BRACKET_GUIDES,
paths: RIGHT_BRACKET_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "it",
r: "ir",
b: "ib",
}),
};
static ROUND1_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::ArcTo {
wr: "dx1",
hr: "dx1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static ROUND1_RECT_PATHS: &[PathDef] = &[PathDef {
commands: ROUND1_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static ROUND1_RECT_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", MulDiv, "ss", "a", "100000"),
gd!("x1", AddSub, "r", "0", "dx1"),
gd!("idx", MulDiv, "dx1", "29289", "100000"),
gd!("ir", AddSub, "r", "0", "idx"),
];
static ROUND1_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj", 16667)],
guides: ROUND1_RECT_GUIDES,
paths: ROUND1_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "ir",
b: "b",
}),
};
static ROUND2_DIAG_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::ArcTo {
wr: "a",
hr: "a",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "a", y: "b" },
PathCommandDef::ArcTo {
wr: "a",
hr: "a",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static ROUND2_DIAG_RECT_PATHS: &[PathDef] = &[PathDef {
commands: ROUND2_DIAG_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static ROUND2_DIAG_RECT_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("x1", MulDiv, "ss", "a1", "100000"),
gd!("y1", AddSub, "b", "0", "x1"),
gd!("a", MulDiv, "ss", "a2", "100000"),
gd!("x2", AddSub, "r", "0", "a"),
gd!("y2", AddSub, "b", "0", "a"),
gd!("dx1", MulDiv, "x1", "29289", "100000"),
gd!("dx2", MulDiv, "a", "29289", "100000"),
gd!("d", AddSub, "dx1", "0", "dx2"),
gd!("dx", IfElse, "d", "dx1", "dx2"),
gd!("ir", AddSub, "r", "0", "dx"),
gd!("ib", AddSub, "b", "0", "dx"),
];
static ROUND2_DIAG_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16667), ("adj2", 0)],
guides: ROUND2_DIAG_RECT_GUIDES,
paths: ROUND2_DIAG_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "dx",
t: "dx",
r: "ir",
b: "ib",
}),
};
static ROUND2_SAME_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "tx1", y: "t" },
PathCommandDef::LineTo { x: "tx2", y: "t" },
PathCommandDef::ArcTo {
wr: "tx1",
hr: "tx1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "by1" },
PathCommandDef::ArcTo {
wr: "bx1",
hr: "bx1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "bx1", y: "b" },
PathCommandDef::ArcTo {
wr: "bx1",
hr: "bx1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "tx1" },
PathCommandDef::ArcTo {
wr: "tx1",
hr: "tx1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static ROUND2_SAME_RECT_PATHS: &[PathDef] = &[PathDef {
commands: ROUND2_SAME_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static ROUND2_SAME_RECT_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("tx1", MulDiv, "ss", "a1", "100000"),
gd!("tx2", AddSub, "r", "0", "tx1"),
gd!("bx1", MulDiv, "ss", "a2", "100000"),
gd!("bx2", AddSub, "r", "0", "bx1"),
gd!("by1", AddSub, "b", "0", "bx1"),
gd!("d", AddSub, "tx1", "0", "bx1"),
gd!("tdx", MulDiv, "tx1", "29289", "100000"),
gd!("bdx", MulDiv, "bx1", "29289", "100000"),
gd!("il", IfElse, "d", "tdx", "bdx"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "bdx"),
];
static ROUND2_SAME_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16667), ("adj2", 0)],
guides: ROUND2_SAME_RECT_GUIDES,
paths: ROUND2_SAME_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "tdx",
r: "ir",
b: "ib",
}),
};
static ROUND_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static ROUND_RECT_PATHS: &[PathDef] = &[PathDef {
commands: ROUND_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static ROUND_RECT_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("x1", MulDiv, "ss", "a", "100000"),
gd!("x2", AddSub, "r", "0", "x1"),
gd!("y2", AddSub, "b", "0", "x1"),
gd!("il", MulDiv, "x1", "29289", "100000"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static ROUND_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj", 16667)],
guides: ROUND_RECT_GUIDES,
paths: ROUND_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static RT_TRIANGLE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static RT_TRIANGLE_PATHS: &[PathDef] = &[PathDef {
commands: RT_TRIANGLE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static RT_TRIANGLE_GUIDES: &[GuideDef] = &[
gd!("it", MulDiv, "h", "7", "12"),
gd!("ir", MulDiv, "w", "7", "12"),
gd!("ib", MulDiv, "h", "11", "12"),
];
static RT_TRIANGLE: PresetDef = PresetDef {
adjust_defaults: &[],
guides: RT_TRIANGLE_GUIDES,
paths: RT_TRIANGLE_PATHS,
text_rect: Some(TextRectDef {
l: "wd12",
t: "it",
r: "ir",
b: "ib",
}),
};
static SMILEY_FACE_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static SMILEY_FACE_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x2", y: "y1" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "hR",
st_ang: "cd2",
sw_ang: "21600000",
},
PathCommandDef::MoveTo { x: "x3", y: "y1" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "hR",
st_ang: "cd2",
sw_ang: "21600000",
},
];
static SMILEY_FACE_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y2" },
PathCommandDef::QuadBezTo {
x1: "hc",
y1: "y5",
x2: "x4",
y2: "y2",
},
];
static SMILEY_FACE_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static SMILEY_FACE_PATHS: &[PathDef] = &[
PathDef {
commands: SMILEY_FACE_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: SMILEY_FACE_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: SMILEY_FACE_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
PathDef {
commands: SMILEY_FACE_P3_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static SMILEY_FACE_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "-4653", "adj", "4653"),
gd!("x1", MulDiv, "w", "4969", "21699"),
gd!("x2", MulDiv, "w", "6215", "21600"),
gd!("x3", MulDiv, "w", "13135", "21600"),
gd!("x4", MulDiv, "w", "16640", "21600"),
gd!("y1", MulDiv, "h", "7570", "21600"),
gd!("y3", MulDiv, "h", "16515", "21600"),
gd!("dy2", MulDiv, "h", "a", "100000"),
gd!("y2", AddSub, "y3", "0", "dy2"),
gd!("y4", AddSub, "y3", "dy2", "0"),
gd!("dy3", MulDiv, "h", "a", "50000"),
gd!("y5", AddSub, "y4", "dy3", "0"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
gd!("wR", MulDiv, "w", "1125", "21600"),
gd!("hR", MulDiv, "h", "1125", "21600"),
];
static SMILEY_FACE: PresetDef = PresetDef {
adjust_defaults: &[("adj", 4653)],
guides: SMILEY_FACE_GUIDES,
paths: SMILEY_FACE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static SNIP1_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "dx1" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static SNIP1_RECT_PATHS: &[PathDef] = &[PathDef {
commands: SNIP1_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static SNIP1_RECT_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", MulDiv, "ss", "a", "100000"),
gd!("x1", AddSub, "r", "0", "dx1"),
gd!("it", MulDiv, "dx1", "1", "2"),
gd!("ir", AddDiv, "x1", "r", "2"),
];
static SNIP1_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj", 16667)],
guides: SNIP1_RECT_GUIDES,
paths: SNIP1_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "it",
r: "ir",
b: "b",
}),
};
static SNIP2_DIAG_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "lx1", y: "t" },
PathCommandDef::LineTo { x: "rx2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "rx1" },
PathCommandDef::LineTo { x: "r", y: "ly1" },
PathCommandDef::LineTo { x: "lx2", y: "b" },
PathCommandDef::LineTo { x: "rx1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "ry1" },
PathCommandDef::LineTo { x: "l", y: "lx1" },
PathCommandDef::Close,
];
static SNIP2_DIAG_RECT_PATHS: &[PathDef] = &[PathDef {
commands: SNIP2_DIAG_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static SNIP2_DIAG_RECT_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("lx1", MulDiv, "ss", "a1", "100000"),
gd!("lx2", AddSub, "r", "0", "lx1"),
gd!("ly1", AddSub, "b", "0", "lx1"),
gd!("rx1", MulDiv, "ss", "a2", "100000"),
gd!("rx2", AddSub, "r", "0", "rx1"),
gd!("ry1", AddSub, "b", "0", "rx1"),
gd!("d", AddSub, "lx1", "0", "rx1"),
gd!("dx", IfElse, "d", "lx1", "rx1"),
gd!("il", MulDiv, "dx", "1", "2"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static SNIP2_DIAG_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 0), ("adj2", 16667)],
guides: SNIP2_DIAG_RECT_GUIDES,
paths: SNIP2_DIAG_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
static SNIP2_SAME_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "tx1", y: "t" },
PathCommandDef::LineTo { x: "tx2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "tx1" },
PathCommandDef::LineTo { x: "r", y: "by1" },
PathCommandDef::LineTo { x: "bx2", y: "b" },
PathCommandDef::LineTo { x: "bx1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "by1" },
PathCommandDef::LineTo { x: "l", y: "tx1" },
PathCommandDef::Close,
];
static SNIP2_SAME_RECT_PATHS: &[PathDef] = &[PathDef {
commands: SNIP2_SAME_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static SNIP2_SAME_RECT_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("tx1", MulDiv, "ss", "a1", "100000"),
gd!("tx2", AddSub, "r", "0", "tx1"),
gd!("bx1", MulDiv, "ss", "a2", "100000"),
gd!("bx2", AddSub, "r", "0", "bx1"),
gd!("by1", AddSub, "b", "0", "bx1"),
gd!("d", AddSub, "tx1", "0", "bx1"),
gd!("dx", IfElse, "d", "tx1", "bx1"),
gd!("il", MulDiv, "dx", "1", "2"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("it", MulDiv, "tx1", "1", "2"),
gd!("ib", AddDiv, "by1", "b", "2"),
];
static SNIP2_SAME_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16667), ("adj2", 0)],
guides: SNIP2_SAME_RECT_GUIDES,
paths: SNIP2_SAME_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static SNIP_ROUND_RECT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "dx2" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "l", y: "x1" },
PathCommandDef::ArcTo {
wr: "x1",
hr: "x1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static SNIP_ROUND_RECT_PATHS: &[PathDef] = &[PathDef {
commands: SNIP_ROUND_RECT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static SNIP_ROUND_RECT_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "50000"),
gd!("a2", Pin, "0", "adj2", "50000"),
gd!("x1", MulDiv, "ss", "a1", "100000"),
gd!("dx2", MulDiv, "ss", "a2", "100000"),
gd!("x2", AddSub, "r", "0", "dx2"),
gd!("il", MulDiv, "x1", "29289", "100000"),
gd!("ir", AddDiv, "x2", "r", "2"),
];
static SNIP_ROUND_RECT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 16667), ("adj2", 16667)],
guides: SNIP_ROUND_RECT_GUIDES,
paths: SNIP_ROUND_RECT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "b",
}),
};
static SQUARE_TABS_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "dx", y: "t" },
PathCommandDef::LineTo { x: "dx", y: "dx" },
PathCommandDef::LineTo { x: "l", y: "dx" },
PathCommandDef::Close,
];
static SQUARE_TABS_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo { x: "dx", y: "y1" },
PathCommandDef::LineTo { x: "dx", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static SQUARE_TABS_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "dx" },
PathCommandDef::LineTo { x: "x1", y: "dx" },
PathCommandDef::Close,
];
static SQUARE_TABS_P3_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::Close,
];
static SQUARE_TABS_PATHS: &[PathDef] = &[
PathDef {
commands: SQUARE_TABS_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: SQUARE_TABS_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: SQUARE_TABS_P2_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
PathDef {
commands: SQUARE_TABS_P3_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
},
];
static SQUARE_TABS_GUIDES: &[GuideDef] = &[
gd!("md", Mod, "w", "h", "0"),
gd!("dx", MulDiv, "1", "md", "20"),
gd!("y1", AddSub, "0", "b", "dx"),
gd!("x1", AddSub, "0", "r", "dx"),
];
static SQUARE_TABS: PresetDef = PresetDef {
adjust_defaults: &[],
guides: SQUARE_TABS_GUIDES,
paths: SQUARE_TABS_PATHS,
text_rect: Some(TextRectDef {
l: "dx",
t: "dx",
r: "x1",
b: "y1",
}),
};
static STAR10_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "sx2", y: "sy2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "sx3", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx4", y: "sy1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "sx5", y: "sy2" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::LineTo { x: "sx6", y: "vc" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "sx5", y: "sy3" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "sx4", y: "sy4" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "sx3", y: "sy4" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "sx2", y: "sy3" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "sx1", y: "vc" },
PathCommandDef::Close,
];
static STAR10_PATHS: &[PathDef] = &[PathDef {
commands: STAR10_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR10_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("swd2", MulDiv, "wd2", "hf", "100000"),
gd!("dx1", MulDiv, "swd2", "95106", "100000"),
gd!("dx2", MulDiv, "swd2", "58779", "100000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("dy1", MulDiv, "hd2", "80902", "100000"),
gd!("dy2", MulDiv, "hd2", "30902", "100000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
gd!("y4", AddSub, "vc", "dy1", "0"),
gd!("iwd2", MulDiv, "swd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx1", MulDiv, "iwd2", "80902", "100000"),
gd!("sdx2", MulDiv, "iwd2", "30902", "100000"),
gd!("sdy1", MulDiv, "ihd2", "95106", "100000"),
gd!("sdy2", MulDiv, "ihd2", "58779", "100000"),
gd!("sx1", AddSub, "hc", "0", "iwd2"),
gd!("sx2", AddSub, "hc", "0", "sdx1"),
gd!("sx3", AddSub, "hc", "0", "sdx2"),
gd!("sx4", AddSub, "hc", "sdx2", "0"),
gd!("sx5", AddSub, "hc", "sdx1", "0"),
gd!("sx6", AddSub, "hc", "iwd2", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "0", "sdy2"),
gd!("sy3", AddSub, "vc", "sdy2", "0"),
gd!("sy4", AddSub, "vc", "sdy1", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR10: PresetDef = PresetDef {
adjust_defaults: &[("adj", 42533), ("hf", 105146)],
guides: STAR10_GUIDES,
paths: STAR10_PATHS,
text_rect: Some(TextRectDef {
l: "sx2",
t: "sy2",
r: "sx5",
b: "sy3",
}),
};
static STAR12_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "sx1", y: "sy3" },
PathCommandDef::LineTo { x: "x1", y: "hd4" },
PathCommandDef::LineTo { x: "sx2", y: "sy2" },
PathCommandDef::LineTo { x: "wd4", y: "y1" },
PathCommandDef::LineTo { x: "sx3", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx4", y: "sy1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "sx5", y: "sy2" },
PathCommandDef::LineTo { x: "x4", y: "hd4" },
PathCommandDef::LineTo { x: "sx6", y: "sy3" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "sx6", y: "sy4" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "sx5", y: "sy5" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "sx4", y: "sy6" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "sx3", y: "sy6" },
PathCommandDef::LineTo { x: "wd4", y: "y4" },
PathCommandDef::LineTo { x: "sx2", y: "sy5" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "sx1", y: "sy4" },
PathCommandDef::Close,
];
static STAR12_PATHS: &[PathDef] = &[PathDef {
commands: STAR12_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR12_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", Cos, "wd2", "1800000", ""),
gd!("dy1", Sin, "hd2", "3600000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x3", MulDiv, "w", "3", "4"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y3", MulDiv, "h", "3", "4"),
gd!("y4", AddSub, "vc", "dy1", "0"),
gd!("iwd2", MulDiv, "wd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx1", Cos, "iwd2", "900000", ""),
gd!("sdx2", Cos, "iwd2", "2700000", ""),
gd!("sdx3", Cos, "iwd2", "4500000", ""),
gd!("sdy1", Sin, "ihd2", "4500000", ""),
gd!("sdy2", Sin, "ihd2", "2700000", ""),
gd!("sdy3", Sin, "ihd2", "900000", ""),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "0", "sdx3"),
gd!("sx4", AddSub, "hc", "sdx3", "0"),
gd!("sx5", AddSub, "hc", "sdx2", "0"),
gd!("sx6", AddSub, "hc", "sdx1", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "0", "sdy2"),
gd!("sy3", AddSub, "vc", "0", "sdy3"),
gd!("sy4", AddSub, "vc", "sdy3", "0"),
gd!("sy5", AddSub, "vc", "sdy2", "0"),
gd!("sy6", AddSub, "vc", "sdy1", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR12: PresetDef = PresetDef {
adjust_defaults: &[("adj", 37500)],
guides: STAR12_GUIDES,
paths: STAR12_PATHS,
text_rect: Some(TextRectDef {
l: "sx2",
t: "sy2",
r: "sx5",
b: "sy5",
}),
};
static STAR16_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "sx1", y: "sy4" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "sx2", y: "sy3" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "sx3", y: "sy2" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "sx4", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx5", y: "sy1" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "sx6", y: "sy2" },
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::LineTo { x: "sx7", y: "sy3" },
PathCommandDef::LineTo { x: "x6", y: "y3" },
PathCommandDef::LineTo { x: "sx8", y: "sy4" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "sx8", y: "sy5" },
PathCommandDef::LineTo { x: "x6", y: "y4" },
PathCommandDef::LineTo { x: "sx7", y: "sy6" },
PathCommandDef::LineTo { x: "x5", y: "y5" },
PathCommandDef::LineTo { x: "sx6", y: "sy7" },
PathCommandDef::LineTo { x: "x4", y: "y6" },
PathCommandDef::LineTo { x: "sx5", y: "sy8" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "sx4", y: "sy8" },
PathCommandDef::LineTo { x: "x3", y: "y6" },
PathCommandDef::LineTo { x: "sx3", y: "sy7" },
PathCommandDef::LineTo { x: "x2", y: "y5" },
PathCommandDef::LineTo { x: "sx2", y: "sy6" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "sx1", y: "sy5" },
PathCommandDef::Close,
];
static STAR16_PATHS: &[PathDef] = &[PathDef {
commands: STAR16_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR16_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", MulDiv, "wd2", "92388", "100000"),
gd!("dx2", MulDiv, "wd2", "70711", "100000"),
gd!("dx3", MulDiv, "wd2", "38268", "100000"),
gd!("dy1", MulDiv, "hd2", "92388", "100000"),
gd!("dy2", MulDiv, "hd2", "70711", "100000"),
gd!("dy3", MulDiv, "hd2", "38268", "100000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "dx3", "0"),
gd!("x5", AddSub, "hc", "dx2", "0"),
gd!("x6", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "0", "dy3"),
gd!("y4", AddSub, "vc", "dy3", "0"),
gd!("y5", AddSub, "vc", "dy2", "0"),
gd!("y6", AddSub, "vc", "dy1", "0"),
gd!("iwd2", MulDiv, "wd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx1", MulDiv, "iwd2", "98079", "100000"),
gd!("sdx2", MulDiv, "iwd2", "83147", "100000"),
gd!("sdx3", MulDiv, "iwd2", "55557", "100000"),
gd!("sdx4", MulDiv, "iwd2", "19509", "100000"),
gd!("sdy1", MulDiv, "ihd2", "98079", "100000"),
gd!("sdy2", MulDiv, "ihd2", "83147", "100000"),
gd!("sdy3", MulDiv, "ihd2", "55557", "100000"),
gd!("sdy4", MulDiv, "ihd2", "19509", "100000"),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "0", "sdx3"),
gd!("sx4", AddSub, "hc", "0", "sdx4"),
gd!("sx5", AddSub, "hc", "sdx4", "0"),
gd!("sx6", AddSub, "hc", "sdx3", "0"),
gd!("sx7", AddSub, "hc", "sdx2", "0"),
gd!("sx8", AddSub, "hc", "sdx1", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "0", "sdy2"),
gd!("sy3", AddSub, "vc", "0", "sdy3"),
gd!("sy4", AddSub, "vc", "0", "sdy4"),
gd!("sy5", AddSub, "vc", "sdy4", "0"),
gd!("sy6", AddSub, "vc", "sdy3", "0"),
gd!("sy7", AddSub, "vc", "sdy2", "0"),
gd!("sy8", AddSub, "vc", "sdy1", "0"),
gd!("idx", Cos, "iwd2", "2700000", ""),
gd!("idy", Sin, "ihd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("ib", AddSub, "vc", "idy", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR16: PresetDef = PresetDef {
adjust_defaults: &[("adj", 37500)],
guides: STAR16_GUIDES,
paths: STAR16_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static STAR24_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "sx1", y: "sy6" },
PathCommandDef::LineTo { x: "x1", y: "y5" },
PathCommandDef::LineTo { x: "sx2", y: "sy5" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "sx3", y: "sy4" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "sx4", y: "sy3" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::LineTo { x: "sx5", y: "sy2" },
PathCommandDef::LineTo { x: "x5", y: "y1" },
PathCommandDef::LineTo { x: "sx6", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx7", y: "sy1" },
PathCommandDef::LineTo { x: "x6", y: "y1" },
PathCommandDef::LineTo { x: "sx8", y: "sy2" },
PathCommandDef::LineTo { x: "x7", y: "y2" },
PathCommandDef::LineTo { x: "sx9", y: "sy3" },
PathCommandDef::LineTo { x: "x8", y: "y3" },
PathCommandDef::LineTo {
x: "sx10",
y: "sy4",
},
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo {
x: "sx11",
y: "sy5",
},
PathCommandDef::LineTo { x: "x10", y: "y5" },
PathCommandDef::LineTo {
x: "sx12",
y: "sy6",
},
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo {
x: "sx12",
y: "sy7",
},
PathCommandDef::LineTo { x: "x10", y: "y6" },
PathCommandDef::LineTo {
x: "sx11",
y: "sy8",
},
PathCommandDef::LineTo { x: "x9", y: "y7" },
PathCommandDef::LineTo {
x: "sx10",
y: "sy9",
},
PathCommandDef::LineTo { x: "x8", y: "y8" },
PathCommandDef::LineTo {
x: "sx9",
y: "sy10",
},
PathCommandDef::LineTo { x: "x7", y: "y9" },
PathCommandDef::LineTo {
x: "sx8",
y: "sy11",
},
PathCommandDef::LineTo { x: "x6", y: "y10" },
PathCommandDef::LineTo {
x: "sx7",
y: "sy12",
},
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo {
x: "sx6",
y: "sy12",
},
PathCommandDef::LineTo { x: "x5", y: "y10" },
PathCommandDef::LineTo {
x: "sx5",
y: "sy11",
},
PathCommandDef::LineTo { x: "x4", y: "y9" },
PathCommandDef::LineTo {
x: "sx4",
y: "sy10",
},
PathCommandDef::LineTo { x: "x3", y: "y8" },
PathCommandDef::LineTo { x: "sx3", y: "sy9" },
PathCommandDef::LineTo { x: "x2", y: "y7" },
PathCommandDef::LineTo { x: "sx2", y: "sy8" },
PathCommandDef::LineTo { x: "x1", y: "y6" },
PathCommandDef::LineTo { x: "sx1", y: "sy7" },
PathCommandDef::Close,
];
static STAR24_PATHS: &[PathDef] = &[PathDef {
commands: STAR24_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR24_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", Cos, "wd2", "900000", ""),
gd!("dx2", Cos, "wd2", "1800000", ""),
gd!("dx3", Cos, "wd2", "2700000", ""),
gd!("dx4", Val, "wd4", "", ""),
gd!("dx5", Cos, "wd2", "4500000", ""),
gd!("dy1", Sin, "hd2", "4500000", ""),
gd!("dy2", Sin, "hd2", "3600000", ""),
gd!("dy3", Sin, "hd2", "2700000", ""),
gd!("dy4", Val, "hd4", "", ""),
gd!("dy5", Sin, "hd2", "900000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "0", "dx4"),
gd!("x5", AddSub, "hc", "0", "dx5"),
gd!("x6", AddSub, "hc", "dx5", "0"),
gd!("x7", AddSub, "hc", "dx4", "0"),
gd!("x8", AddSub, "hc", "dx3", "0"),
gd!("x9", AddSub, "hc", "dx2", "0"),
gd!("x10", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "0", "dy3"),
gd!("y4", AddSub, "vc", "0", "dy4"),
gd!("y5", AddSub, "vc", "0", "dy5"),
gd!("y6", AddSub, "vc", "dy5", "0"),
gd!("y7", AddSub, "vc", "dy4", "0"),
gd!("y8", AddSub, "vc", "dy3", "0"),
gd!("y9", AddSub, "vc", "dy2", "0"),
gd!("y10", AddSub, "vc", "dy1", "0"),
gd!("iwd2", MulDiv, "wd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx1", MulDiv, "iwd2", "99144", "100000"),
gd!("sdx2", MulDiv, "iwd2", "92388", "100000"),
gd!("sdx3", MulDiv, "iwd2", "79335", "100000"),
gd!("sdx4", MulDiv, "iwd2", "60876", "100000"),
gd!("sdx5", MulDiv, "iwd2", "38268", "100000"),
gd!("sdx6", MulDiv, "iwd2", "13053", "100000"),
gd!("sdy1", MulDiv, "ihd2", "99144", "100000"),
gd!("sdy2", MulDiv, "ihd2", "92388", "100000"),
gd!("sdy3", MulDiv, "ihd2", "79335", "100000"),
gd!("sdy4", MulDiv, "ihd2", "60876", "100000"),
gd!("sdy5", MulDiv, "ihd2", "38268", "100000"),
gd!("sdy6", MulDiv, "ihd2", "13053", "100000"),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "0", "sdx3"),
gd!("sx4", AddSub, "hc", "0", "sdx4"),
gd!("sx5", AddSub, "hc", "0", "sdx5"),
gd!("sx6", AddSub, "hc", "0", "sdx6"),
gd!("sx7", AddSub, "hc", "sdx6", "0"),
gd!("sx8", AddSub, "hc", "sdx5", "0"),
gd!("sx9", AddSub, "hc", "sdx4", "0"),
gd!("sx10", AddSub, "hc", "sdx3", "0"),
gd!("sx11", AddSub, "hc", "sdx2", "0"),
gd!("sx12", AddSub, "hc", "sdx1", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "0", "sdy2"),
gd!("sy3", AddSub, "vc", "0", "sdy3"),
gd!("sy4", AddSub, "vc", "0", "sdy4"),
gd!("sy5", AddSub, "vc", "0", "sdy5"),
gd!("sy6", AddSub, "vc", "0", "sdy6"),
gd!("sy7", AddSub, "vc", "sdy6", "0"),
gd!("sy8", AddSub, "vc", "sdy5", "0"),
gd!("sy9", AddSub, "vc", "sdy4", "0"),
gd!("sy10", AddSub, "vc", "sdy3", "0"),
gd!("sy11", AddSub, "vc", "sdy2", "0"),
gd!("sy12", AddSub, "vc", "sdy1", "0"),
gd!("idx", Cos, "iwd2", "2700000", ""),
gd!("idy", Sin, "ihd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("ib", AddSub, "vc", "idy", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR24: PresetDef = PresetDef {
adjust_defaults: &[("adj", 37500)],
guides: STAR24_GUIDES,
paths: STAR24_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static STAR32_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "sx1", y: "sy8" },
PathCommandDef::LineTo { x: "x1", y: "y7" },
PathCommandDef::LineTo { x: "sx2", y: "sy7" },
PathCommandDef::LineTo { x: "x2", y: "y6" },
PathCommandDef::LineTo { x: "sx3", y: "sy6" },
PathCommandDef::LineTo { x: "x3", y: "y5" },
PathCommandDef::LineTo { x: "sx4", y: "sy5" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "sx5", y: "sy4" },
PathCommandDef::LineTo { x: "x5", y: "y3" },
PathCommandDef::LineTo { x: "sx6", y: "sy3" },
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "sx7", y: "sy2" },
PathCommandDef::LineTo { x: "x7", y: "y1" },
PathCommandDef::LineTo { x: "sx8", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx9", y: "sy1" },
PathCommandDef::LineTo { x: "x8", y: "y1" },
PathCommandDef::LineTo {
x: "sx10",
y: "sy2",
},
PathCommandDef::LineTo { x: "x9", y: "y2" },
PathCommandDef::LineTo {
x: "sx11",
y: "sy3",
},
PathCommandDef::LineTo { x: "x10", y: "y3" },
PathCommandDef::LineTo {
x: "sx12",
y: "sy4",
},
PathCommandDef::LineTo { x: "x11", y: "y4" },
PathCommandDef::LineTo {
x: "sx13",
y: "sy5",
},
PathCommandDef::LineTo { x: "x12", y: "y5" },
PathCommandDef::LineTo {
x: "sx14",
y: "sy6",
},
PathCommandDef::LineTo { x: "x13", y: "y6" },
PathCommandDef::LineTo {
x: "sx15",
y: "sy7",
},
PathCommandDef::LineTo { x: "x14", y: "y7" },
PathCommandDef::LineTo {
x: "sx16",
y: "sy8",
},
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo {
x: "sx16",
y: "sy9",
},
PathCommandDef::LineTo { x: "x14", y: "y8" },
PathCommandDef::LineTo {
x: "sx15",
y: "sy10",
},
PathCommandDef::LineTo { x: "x13", y: "y9" },
PathCommandDef::LineTo {
x: "sx14",
y: "sy11",
},
PathCommandDef::LineTo { x: "x12", y: "y10" },
PathCommandDef::LineTo {
x: "sx13",
y: "sy12",
},
PathCommandDef::LineTo { x: "x11", y: "y11" },
PathCommandDef::LineTo {
x: "sx12",
y: "sy13",
},
PathCommandDef::LineTo { x: "x10", y: "y12" },
PathCommandDef::LineTo {
x: "sx11",
y: "sy14",
},
PathCommandDef::LineTo { x: "x9", y: "y13" },
PathCommandDef::LineTo {
x: "sx10",
y: "sy15",
},
PathCommandDef::LineTo { x: "x8", y: "y14" },
PathCommandDef::LineTo {
x: "sx9",
y: "sy16",
},
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo {
x: "sx8",
y: "sy16",
},
PathCommandDef::LineTo { x: "x7", y: "y14" },
PathCommandDef::LineTo {
x: "sx7",
y: "sy15",
},
PathCommandDef::LineTo { x: "x6", y: "y13" },
PathCommandDef::LineTo {
x: "sx6",
y: "sy14",
},
PathCommandDef::LineTo { x: "x5", y: "y12" },
PathCommandDef::LineTo {
x: "sx5",
y: "sy13",
},
PathCommandDef::LineTo { x: "x4", y: "y11" },
PathCommandDef::LineTo {
x: "sx4",
y: "sy12",
},
PathCommandDef::LineTo { x: "x3", y: "y10" },
PathCommandDef::LineTo {
x: "sx3",
y: "sy11",
},
PathCommandDef::LineTo { x: "x2", y: "y9" },
PathCommandDef::LineTo {
x: "sx2",
y: "sy10",
},
PathCommandDef::LineTo { x: "x1", y: "y8" },
PathCommandDef::LineTo { x: "sx1", y: "sy9" },
PathCommandDef::Close,
];
static STAR32_PATHS: &[PathDef] = &[PathDef {
commands: STAR32_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR32_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", MulDiv, "wd2", "98079", "100000"),
gd!("dx2", MulDiv, "wd2", "92388", "100000"),
gd!("dx3", MulDiv, "wd2", "83147", "100000"),
gd!("dx4", Cos, "wd2", "2700000", ""),
gd!("dx5", MulDiv, "wd2", "55557", "100000"),
gd!("dx6", MulDiv, "wd2", "38268", "100000"),
gd!("dx7", MulDiv, "wd2", "19509", "100000"),
gd!("dy1", MulDiv, "hd2", "98079", "100000"),
gd!("dy2", MulDiv, "hd2", "92388", "100000"),
gd!("dy3", MulDiv, "hd2", "83147", "100000"),
gd!("dy4", Sin, "hd2", "2700000", ""),
gd!("dy5", MulDiv, "hd2", "55557", "100000"),
gd!("dy6", MulDiv, "hd2", "38268", "100000"),
gd!("dy7", MulDiv, "hd2", "19509", "100000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "0", "dx4"),
gd!("x5", AddSub, "hc", "0", "dx5"),
gd!("x6", AddSub, "hc", "0", "dx6"),
gd!("x7", AddSub, "hc", "0", "dx7"),
gd!("x8", AddSub, "hc", "dx7", "0"),
gd!("x9", AddSub, "hc", "dx6", "0"),
gd!("x10", AddSub, "hc", "dx5", "0"),
gd!("x11", AddSub, "hc", "dx4", "0"),
gd!("x12", AddSub, "hc", "dx3", "0"),
gd!("x13", AddSub, "hc", "dx2", "0"),
gd!("x14", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "0", "dy3"),
gd!("y4", AddSub, "vc", "0", "dy4"),
gd!("y5", AddSub, "vc", "0", "dy5"),
gd!("y6", AddSub, "vc", "0", "dy6"),
gd!("y7", AddSub, "vc", "0", "dy7"),
gd!("y8", AddSub, "vc", "dy7", "0"),
gd!("y9", AddSub, "vc", "dy6", "0"),
gd!("y10", AddSub, "vc", "dy5", "0"),
gd!("y11", AddSub, "vc", "dy4", "0"),
gd!("y12", AddSub, "vc", "dy3", "0"),
gd!("y13", AddSub, "vc", "dy2", "0"),
gd!("y14", AddSub, "vc", "dy1", "0"),
gd!("iwd2", MulDiv, "wd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx1", MulDiv, "iwd2", "99518", "100000"),
gd!("sdx2", MulDiv, "iwd2", "95694", "100000"),
gd!("sdx3", MulDiv, "iwd2", "88192", "100000"),
gd!("sdx4", MulDiv, "iwd2", "77301", "100000"),
gd!("sdx5", MulDiv, "iwd2", "63439", "100000"),
gd!("sdx6", MulDiv, "iwd2", "47140", "100000"),
gd!("sdx7", MulDiv, "iwd2", "29028", "100000"),
gd!("sdx8", MulDiv, "iwd2", "9802", "100000"),
gd!("sdy1", MulDiv, "ihd2", "99518", "100000"),
gd!("sdy2", MulDiv, "ihd2", "95694", "100000"),
gd!("sdy3", MulDiv, "ihd2", "88192", "100000"),
gd!("sdy4", MulDiv, "ihd2", "77301", "100000"),
gd!("sdy5", MulDiv, "ihd2", "63439", "100000"),
gd!("sdy6", MulDiv, "ihd2", "47140", "100000"),
gd!("sdy7", MulDiv, "ihd2", "29028", "100000"),
gd!("sdy8", MulDiv, "ihd2", "9802", "100000"),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "0", "sdx3"),
gd!("sx4", AddSub, "hc", "0", "sdx4"),
gd!("sx5", AddSub, "hc", "0", "sdx5"),
gd!("sx6", AddSub, "hc", "0", "sdx6"),
gd!("sx7", AddSub, "hc", "0", "sdx7"),
gd!("sx8", AddSub, "hc", "0", "sdx8"),
gd!("sx9", AddSub, "hc", "sdx8", "0"),
gd!("sx10", AddSub, "hc", "sdx7", "0"),
gd!("sx11", AddSub, "hc", "sdx6", "0"),
gd!("sx12", AddSub, "hc", "sdx5", "0"),
gd!("sx13", AddSub, "hc", "sdx4", "0"),
gd!("sx14", AddSub, "hc", "sdx3", "0"),
gd!("sx15", AddSub, "hc", "sdx2", "0"),
gd!("sx16", AddSub, "hc", "sdx1", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "0", "sdy2"),
gd!("sy3", AddSub, "vc", "0", "sdy3"),
gd!("sy4", AddSub, "vc", "0", "sdy4"),
gd!("sy5", AddSub, "vc", "0", "sdy5"),
gd!("sy6", AddSub, "vc", "0", "sdy6"),
gd!("sy7", AddSub, "vc", "0", "sdy7"),
gd!("sy8", AddSub, "vc", "0", "sdy8"),
gd!("sy9", AddSub, "vc", "sdy8", "0"),
gd!("sy10", AddSub, "vc", "sdy7", "0"),
gd!("sy11", AddSub, "vc", "sdy6", "0"),
gd!("sy12", AddSub, "vc", "sdy5", "0"),
gd!("sy13", AddSub, "vc", "sdy4", "0"),
gd!("sy14", AddSub, "vc", "sdy3", "0"),
gd!("sy15", AddSub, "vc", "sdy2", "0"),
gd!("sy16", AddSub, "vc", "sdy1", "0"),
gd!("idx", Cos, "iwd2", "2700000", ""),
gd!("idy", Sin, "ihd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("ib", AddSub, "vc", "idy", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR32: PresetDef = PresetDef {
adjust_defaults: &[("adj", 37500)],
guides: STAR32_GUIDES,
paths: STAR32_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static STAR4_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "sx1", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx2", y: "sy1" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "sx2", y: "sy2" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "sx1", y: "sy2" },
PathCommandDef::Close,
];
static STAR4_PATHS: &[PathDef] = &[PathDef {
commands: STAR4_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR4_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("iwd2", MulDiv, "wd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx", Cos, "iwd2", "2700000", ""),
gd!("sdy", Sin, "ihd2", "2700000", ""),
gd!("sx1", AddSub, "hc", "0", "sdx"),
gd!("sx2", AddSub, "hc", "sdx", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy"),
gd!("sy2", AddSub, "vc", "sdy", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR4: PresetDef = PresetDef {
adjust_defaults: &[("adj", 12500)],
guides: STAR4_GUIDES,
paths: STAR4_PATHS,
text_rect: Some(TextRectDef {
l: "sx1",
t: "sy1",
r: "sx2",
b: "sy2",
}),
};
static STAR5_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "sx2", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx3", y: "sy1" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "sx4", y: "sy2" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "hc", y: "sy3" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "sx1", y: "sy2" },
PathCommandDef::Close,
];
static STAR5_PATHS: &[PathDef] = &[PathDef {
commands: STAR5_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR5_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("swd2", MulDiv, "wd2", "hf", "100000"),
gd!("shd2", MulDiv, "hd2", "vf", "100000"),
gd!("svc", MulDiv, "vc", "vf", "100000"),
gd!("dx1", Cos, "swd2", "1080000", ""),
gd!("dx2", Cos, "swd2", "18360000", ""),
gd!("dy1", Sin, "shd2", "1080000", ""),
gd!("dy2", Sin, "shd2", "18360000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "svc", "0", "dy1"),
gd!("y2", AddSub, "svc", "0", "dy2"),
gd!("iwd2", MulDiv, "swd2", "a", "50000"),
gd!("ihd2", MulDiv, "shd2", "a", "50000"),
gd!("sdx1", Cos, "iwd2", "20520000", ""),
gd!("sdx2", Cos, "iwd2", "3240000", ""),
gd!("sdy1", Sin, "ihd2", "3240000", ""),
gd!("sdy2", Sin, "ihd2", "20520000", ""),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "sdx2", "0"),
gd!("sx4", AddSub, "hc", "sdx1", "0"),
gd!("sy1", AddSub, "svc", "0", "sdy1"),
gd!("sy2", AddSub, "svc", "0", "sdy2"),
gd!("sy3", AddSub, "svc", "ihd2", "0"),
gd!("yAdj", AddSub, "svc", "0", "ihd2"),
];
static STAR5: PresetDef = PresetDef {
adjust_defaults: &[("adj", 19098), ("hf", 105146), ("vf", 110557)],
guides: STAR5_GUIDES,
paths: STAR5_PATHS,
text_rect: Some(TextRectDef {
l: "sx1",
t: "sy1",
r: "sx4",
b: "sy3",
}),
};
static STAR6_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "hd4" },
PathCommandDef::LineTo { x: "sx2", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx3", y: "sy1" },
PathCommandDef::LineTo { x: "x2", y: "hd4" },
PathCommandDef::LineTo { x: "sx4", y: "vc" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "sx3", y: "sy2" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "sx2", y: "sy2" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "sx1", y: "vc" },
PathCommandDef::Close,
];
static STAR6_PATHS: &[PathDef] = &[PathDef {
commands: STAR6_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR6_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("swd2", MulDiv, "wd2", "hf", "100000"),
gd!("dx1", Cos, "swd2", "1800000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
gd!("y2", AddSub, "vc", "hd4", "0"),
gd!("iwd2", MulDiv, "swd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx2", MulDiv, "iwd2", "1", "2"),
gd!("sx1", AddSub, "hc", "0", "iwd2"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "sdx2", "0"),
gd!("sx4", AddSub, "hc", "iwd2", "0"),
gd!("sdy1", Sin, "ihd2", "3600000", ""),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "sdy1", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR6: PresetDef = PresetDef {
adjust_defaults: &[("adj", 28868), ("hf", 115470)],
guides: STAR6_GUIDES,
paths: STAR6_PATHS,
text_rect: Some(TextRectDef {
l: "sx1",
t: "sy1",
r: "sx4",
b: "sy2",
}),
};
static STAR7_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "sx1", y: "sy2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "sx3", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx4", y: "sy1" },
PathCommandDef::LineTo { x: "x5", y: "y1" },
PathCommandDef::LineTo { x: "sx6", y: "sy2" },
PathCommandDef::LineTo { x: "x6", y: "y2" },
PathCommandDef::LineTo { x: "sx5", y: "sy3" },
PathCommandDef::LineTo { x: "x4", y: "y3" },
PathCommandDef::LineTo { x: "hc", y: "sy4" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "sx2", y: "sy3" },
PathCommandDef::Close,
];
static STAR7_PATHS: &[PathDef] = &[PathDef {
commands: STAR7_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR7_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("swd2", MulDiv, "wd2", "hf", "100000"),
gd!("shd2", MulDiv, "hd2", "vf", "100000"),
gd!("svc", MulDiv, "vc", "vf", "100000"),
gd!("dx1", MulDiv, "swd2", "97493", "100000"),
gd!("dx2", MulDiv, "swd2", "78183", "100000"),
gd!("dx3", MulDiv, "swd2", "43388", "100000"),
gd!("dy1", MulDiv, "shd2", "62349", "100000"),
gd!("dy2", MulDiv, "shd2", "22252", "100000"),
gd!("dy3", MulDiv, "shd2", "90097", "100000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "0", "dx3"),
gd!("x4", AddSub, "hc", "dx3", "0"),
gd!("x5", AddSub, "hc", "dx2", "0"),
gd!("x6", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "svc", "0", "dy1"),
gd!("y2", AddSub, "svc", "dy2", "0"),
gd!("y3", AddSub, "svc", "dy3", "0"),
gd!("iwd2", MulDiv, "swd2", "a", "50000"),
gd!("ihd2", MulDiv, "shd2", "a", "50000"),
gd!("sdx1", MulDiv, "iwd2", "97493", "100000"),
gd!("sdx2", MulDiv, "iwd2", "78183", "100000"),
gd!("sdx3", MulDiv, "iwd2", "43388", "100000"),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "0", "sdx3"),
gd!("sx4", AddSub, "hc", "sdx3", "0"),
gd!("sx5", AddSub, "hc", "sdx2", "0"),
gd!("sx6", AddSub, "hc", "sdx1", "0"),
gd!("sdy1", MulDiv, "ihd2", "90097", "100000"),
gd!("sdy2", MulDiv, "ihd2", "22252", "100000"),
gd!("sdy3", MulDiv, "ihd2", "62349", "100000"),
gd!("sy1", AddSub, "svc", "0", "sdy1"),
gd!("sy2", AddSub, "svc", "0", "sdy2"),
gd!("sy3", AddSub, "svc", "sdy3", "0"),
gd!("sy4", AddSub, "svc", "ihd2", "0"),
gd!("yAdj", AddSub, "svc", "0", "ihd2"),
];
static STAR7: PresetDef = PresetDef {
adjust_defaults: &[("adj", 34601), ("hf", 102572), ("vf", 105210)],
guides: STAR7_GUIDES,
paths: STAR7_PATHS,
text_rect: Some(TextRectDef {
l: "sx2",
t: "sy1",
r: "sx5",
b: "sy3",
}),
};
static STAR8_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "sx1", y: "sy2" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "sx2", y: "sy1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "sx3", y: "sy1" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "sx4", y: "sy2" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "sx4", y: "sy3" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "sx3", y: "sy4" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "sx2", y: "sy4" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::LineTo { x: "sx1", y: "sy3" },
PathCommandDef::Close,
];
static STAR8_PATHS: &[PathDef] = &[PathDef {
commands: STAR8_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STAR8_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "50000"),
gd!("dx1", Cos, "wd2", "2700000", ""),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
gd!("dy1", Sin, "hd2", "2700000", ""),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("iwd2", MulDiv, "wd2", "a", "50000"),
gd!("ihd2", MulDiv, "hd2", "a", "50000"),
gd!("sdx1", MulDiv, "iwd2", "92388", "100000"),
gd!("sdx2", MulDiv, "iwd2", "38268", "100000"),
gd!("sdy1", MulDiv, "ihd2", "92388", "100000"),
gd!("sdy2", MulDiv, "ihd2", "38268", "100000"),
gd!("sx1", AddSub, "hc", "0", "sdx1"),
gd!("sx2", AddSub, "hc", "0", "sdx2"),
gd!("sx3", AddSub, "hc", "sdx2", "0"),
gd!("sx4", AddSub, "hc", "sdx1", "0"),
gd!("sy1", AddSub, "vc", "0", "sdy1"),
gd!("sy2", AddSub, "vc", "0", "sdy2"),
gd!("sy3", AddSub, "vc", "sdy2", "0"),
gd!("sy4", AddSub, "vc", "sdy1", "0"),
gd!("yAdj", AddSub, "vc", "0", "ihd2"),
];
static STAR8: PresetDef = PresetDef {
adjust_defaults: &[("adj", 37500)],
guides: STAR8_GUIDES,
paths: STAR8_PATHS,
text_rect: Some(TextRectDef {
l: "sx1",
t: "sy1",
r: "sx4",
b: "sy4",
}),
};
static STRAIGHT_CONNECTOR1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
];
static STRAIGHT_CONNECTOR1_PATHS: &[PathDef] = &[PathDef {
commands: STRAIGHT_CONNECTOR1_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
}];
static STRAIGHT_CONNECTOR1: PresetDef = PresetDef {
adjust_defaults: &[],
guides: &[],
paths: STRAIGHT_CONNECTOR1_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static STRIPED_RIGHT_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y1" },
PathCommandDef::LineTo {
x: "ssd32",
y: "y1",
},
PathCommandDef::LineTo {
x: "ssd32",
y: "y2",
},
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::Close,
PathCommandDef::MoveTo {
x: "ssd16",
y: "y1",
},
PathCommandDef::LineTo { x: "ssd8", y: "y1" },
PathCommandDef::LineTo { x: "ssd8", y: "y2" },
PathCommandDef::LineTo {
x: "ssd16",
y: "y2",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x5", y: "y1" },
PathCommandDef::LineTo { x: "x5", y: "t" },
PathCommandDef::LineTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x5", y: "b" },
PathCommandDef::LineTo { x: "x5", y: "y2" },
PathCommandDef::LineTo { x: "x4", y: "y2" },
PathCommandDef::Close,
];
static STRIPED_RIGHT_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: STRIPED_RIGHT_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static STRIPED_RIGHT_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "84375", "w", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("x4", MulDiv, "ss", "5", "32"),
gd!("dx5", MulDiv, "ss", "a2", "100000"),
gd!("x5", AddSub, "r", "0", "dx5"),
gd!("dy1", MulDiv, "h", "a1", "200000"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("y2", AddSub, "vc", "dy1", "0"),
gd!("dx6", MulDiv, "dy1", "dx5", "hd2"),
gd!("x6", AddSub, "r", "0", "dx6"),
];
static STRIPED_RIGHT_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: STRIPED_RIGHT_ARROW_GUIDES,
paths: STRIPED_RIGHT_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x4",
t: "y1",
r: "x6",
b: "y2",
}),
};
static SUN_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "r", y: "vc" },
PathCommandDef::LineTo { x: "x15", y: "y18" },
PathCommandDef::LineTo { x: "x15", y: "y14" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "ox1", y: "oy1" },
PathCommandDef::LineTo { x: "x16", y: "y13" },
PathCommandDef::LineTo { x: "x17", y: "y12" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x18", y: "y10" },
PathCommandDef::LineTo { x: "x14", y: "y10" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "ox2", y: "oy1" },
PathCommandDef::LineTo { x: "x13", y: "y12" },
PathCommandDef::LineTo { x: "x12", y: "y13" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::LineTo { x: "x10", y: "y14" },
PathCommandDef::LineTo { x: "x10", y: "y18" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "ox2", y: "oy2" },
PathCommandDef::LineTo { x: "x12", y: "y17" },
PathCommandDef::LineTo { x: "x13", y: "y16" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "x14", y: "y15" },
PathCommandDef::LineTo { x: "x18", y: "y15" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "ox1", y: "oy2" },
PathCommandDef::LineTo { x: "x17", y: "y16" },
PathCommandDef::LineTo { x: "x16", y: "y17" },
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x19", y: "vc" },
PathCommandDef::ArcTo {
wr: "wR",
hr: "hR",
st_ang: "cd2",
sw_ang: "21600000",
},
PathCommandDef::Close,
];
static SUN_PATHS: &[PathDef] = &[PathDef {
commands: SUN_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static SUN_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "12500", "adj", "46875"),
gd!("g0", AddSub, "50000", "0", "a"),
gd!("g1", MulDiv, "g0", "30274", "32768"),
gd!("g2", MulDiv, "g0", "12540", "32768"),
gd!("g3", AddSub, "g1", "50000", "0"),
gd!("g4", AddSub, "g2", "50000", "0"),
gd!("g5", AddSub, "50000", "0", "g1"),
gd!("g6", AddSub, "50000", "0", "g2"),
gd!("g7", MulDiv, "g0", "23170", "32768"),
gd!("g8", AddSub, "50000", "g7", "0"),
gd!("g9", AddSub, "50000", "0", "g7"),
gd!("g10", MulDiv, "g5", "3", "4"),
gd!("g11", MulDiv, "g6", "3", "4"),
gd!("g12", AddSub, "g10", "3662", "0"),
gd!("g13", AddSub, "g11", "3662", "0"),
gd!("g14", AddSub, "g11", "12500", "0"),
gd!("g15", AddSub, "100000", "0", "g10"),
gd!("g16", AddSub, "100000", "0", "g12"),
gd!("g17", AddSub, "100000", "0", "g13"),
gd!("g18", AddSub, "100000", "0", "g14"),
gd!("ox1", MulDiv, "w", "18436", "21600"),
gd!("oy1", MulDiv, "h", "3163", "21600"),
gd!("ox2", MulDiv, "w", "3163", "21600"),
gd!("oy2", MulDiv, "h", "18436", "21600"),
gd!("x8", MulDiv, "w", "g8", "100000"),
gd!("x9", MulDiv, "w", "g9", "100000"),
gd!("x10", MulDiv, "w", "g10", "100000"),
gd!("x12", MulDiv, "w", "g12", "100000"),
gd!("x13", MulDiv, "w", "g13", "100000"),
gd!("x14", MulDiv, "w", "g14", "100000"),
gd!("x15", MulDiv, "w", "g15", "100000"),
gd!("x16", MulDiv, "w", "g16", "100000"),
gd!("x17", MulDiv, "w", "g17", "100000"),
gd!("x18", MulDiv, "w", "g18", "100000"),
gd!("x19", MulDiv, "w", "a", "100000"),
gd!("wR", MulDiv, "w", "g0", "100000"),
gd!("hR", MulDiv, "h", "g0", "100000"),
gd!("y8", MulDiv, "h", "g8", "100000"),
gd!("y9", MulDiv, "h", "g9", "100000"),
gd!("y10", MulDiv, "h", "g10", "100000"),
gd!("y12", MulDiv, "h", "g12", "100000"),
gd!("y13", MulDiv, "h", "g13", "100000"),
gd!("y14", MulDiv, "h", "g14", "100000"),
gd!("y15", MulDiv, "h", "g15", "100000"),
gd!("y16", MulDiv, "h", "g16", "100000"),
gd!("y17", MulDiv, "h", "g17", "100000"),
gd!("y18", MulDiv, "h", "g18", "100000"),
];
static SUN: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: SUN_GUIDES,
paths: SUN_PATHS,
text_rect: Some(TextRectDef {
l: "x9",
t: "y9",
r: "x8",
b: "y8",
}),
};
static SWOOSH_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::QuadBezTo {
x1: "xP1",
y1: "yP1",
x2: "xB",
y2: "yB",
},
PathCommandDef::LineTo { x: "xC", y: "t" },
PathCommandDef::LineTo { x: "r", y: "yD" },
PathCommandDef::LineTo { x: "xE", y: "yE" },
PathCommandDef::LineTo { x: "xF", y: "yF" },
PathCommandDef::QuadBezTo {
x1: "xP2",
y1: "yP2",
x2: "l",
y2: "b",
},
PathCommandDef::Close,
];
static SWOOSH_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: SWOOSH_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static SWOOSH_ARROW_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "1", "adj1", "75000"),
gd!("maxAdj2", MulDiv, "70000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("ad1", MulDiv, "h", "a1", "100000"),
gd!("ad2", MulDiv, "ss", "a2", "100000"),
gd!("xB", AddSub, "r", "0", "ad2"),
gd!("yB", AddSub, "t", "ssd8", "0"),
gd!("alfa", MulDiv, "cd4", "1", "14"),
gd!("dx0", Tan, "ssd8", "alfa", ""),
gd!("xC", AddSub, "xB", "0", "dx0"),
gd!("dx1", Tan, "ad1", "alfa", ""),
gd!("yF", AddSub, "yB", "ad1", "0"),
gd!("xF", AddSub, "xB", "dx1", "0"),
gd!("xE", AddSub, "xF", "dx0", "0"),
gd!("yE", AddSub, "yF", "ssd8", "0"),
gd!("dy2", AddSub, "yE", "0", "t"),
gd!("dy22", MulDiv, "dy2", "1", "2"),
gd!("dy3", MulDiv, "h", "1", "20"),
gd!("yD", AddSub, "t", "dy22", "dy3"),
gd!("dy4", MulDiv, "hd6", "1", "1"),
gd!("yP1", AddSub, "hd6", "dy4", "0"),
gd!("xP1", Val, "wd6", "", ""),
gd!("dy5", MulDiv, "hd6", "1", "2"),
gd!("yP2", AddSub, "yF", "dy5", "0"),
gd!("xP2", Val, "wd4", "", ""),
];
static SWOOSH_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 25000), ("adj2", 16667)],
guides: SWOOSH_ARROW_GUIDES,
paths: SWOOSH_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static TEARDROP_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "vc" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::QuadBezTo {
x1: "x2",
y1: "t",
x2: "x1",
y2: "y1",
},
PathCommandDef::QuadBezTo {
x1: "r",
y1: "y2",
x2: "r",
y2: "vc",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::Close,
];
static TEARDROP_PATHS: &[PathDef] = &[PathDef {
commands: TEARDROP_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static TEARDROP_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "200000"),
gd!("r2", Sqrt, "2", "", ""),
gd!("tw", MulDiv, "wd2", "r2", "1"),
gd!("th", MulDiv, "hd2", "r2", "1"),
gd!("sw", MulDiv, "tw", "a", "100000"),
gd!("sh", MulDiv, "th", "a", "100000"),
gd!("dx1", Cos, "sw", "2700000", ""),
gd!("dy1", Sin, "sh", "2700000", ""),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "0", "dy1"),
gd!("x2", AddDiv, "hc", "x1", "2"),
gd!("y2", AddDiv, "vc", "y1", "2"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static TEARDROP: PresetDef = PresetDef {
adjust_defaults: &[("adj", 100000)],
guides: TEARDROP_GUIDES,
paths: TEARDROP_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static TRAPEZOID_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "x3", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static TRAPEZOID_PATHS: &[PathDef] = &[PathDef {
commands: TRAPEZOID_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static TRAPEZOID_GUIDES: &[GuideDef] = &[
gd!("maxAdj", MulDiv, "50000", "w", "ss"),
gd!("a", Pin, "0", "adj", "maxAdj"),
gd!("x1", MulDiv, "ss", "a", "200000"),
gd!("x2", MulDiv, "ss", "a", "100000"),
gd!("x3", AddSub, "r", "0", "x2"),
gd!("x4", AddSub, "r", "0", "x1"),
gd!("il", MulDiv, "wd3", "a", "maxAdj"),
gd!("it", MulDiv, "hd3", "a", "maxAdj"),
gd!("ir", AddSub, "r", "0", "il"),
];
static TRAPEZOID: PresetDef = PresetDef {
adjust_defaults: &[("adj", 25000)],
guides: TRAPEZOID_GUIDES,
paths: TRAPEZOID_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "b",
}),
};
static TRIANGLE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::Close,
];
static TRIANGLE_PATHS: &[PathDef] = &[PathDef {
commands: TRIANGLE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static TRIANGLE_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "100000"),
gd!("x1", MulDiv, "w", "a", "200000"),
gd!("x2", MulDiv, "w", "a", "100000"),
gd!("x3", AddSub, "x1", "wd2", "0"),
];
static TRIANGLE: PresetDef = PresetDef {
adjust_defaults: &[("adj", 50000)],
guides: TRIANGLE_GUIDES,
paths: TRIANGLE_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "vc",
r: "x3",
b: "b",
}),
};
static UP_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::Close,
];
static UP_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: UP_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static UP_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", MulDiv, "100000", "h", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "ss", "h"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("dx1", MulDiv, "ss", "a2", "100000"),
gd!("dx2", MulDiv, "ss", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", MulDiv, "ss", "a3", "100000"),
gd!("dy2", MulDiv, "h", "a4", "100000"),
gd!("y2", AddSub, "b", "0", "dy2"),
gd!("y3", AddDiv, "y2", "b", "2"),
];
static UP_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 64977),
],
guides: UP_ARROW_CALLOUT_GUIDES,
paths: UP_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y2",
r: "r",
b: "b",
}),
};
static UP_DOWN_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "r", y: "y3" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "l", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y3" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
];
static UP_DOWN_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: UP_DOWN_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static UP_DOWN_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "h", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("y2", MulDiv, "ss", "a2", "100000"),
gd!("y3", AddSub, "b", "0", "y2"),
gd!("dx1", MulDiv, "w", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
gd!("dy1", MulDiv, "x1", "y2", "wd2"),
gd!("y1", AddSub, "y2", "0", "dy1"),
gd!("y4", AddSub, "y3", "dy1", "0"),
];
static UP_DOWN_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: UP_DOWN_ARROW_GUIDES,
paths: UP_DOWN_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x2",
b: "y4",
}),
};
static UP_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y2" },
PathCommandDef::Close,
];
static UP_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: UP_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static UP_ARROW_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "100000", "h", "ss"),
gd!("a1", Pin, "0", "adj1", "100000"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("dy2", MulDiv, "ss", "a2", "100000"),
gd!("y2", AddSub, "t", "dy2", "0"),
gd!("dx1", MulDiv, "w", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "dx1", "0"),
gd!("dy1", MulDiv, "x1", "dy2", "wd2"),
gd!("y1", AddSub, "y2", "0", "dy1"),
];
static UP_ARROW: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 50000), ("adj2", 50000)],
guides: UP_ARROW_GUIDES,
paths: UP_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "x1",
t: "y1",
r: "x2",
b: "b",
}),
};
static UP_DOWN_ARROW_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y2" },
PathCommandDef::LineTo { x: "x2", y: "y1" },
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::LineTo { x: "hc", y: "t" },
PathCommandDef::LineTo { x: "x4", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y1" },
PathCommandDef::LineTo { x: "x3", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y3" },
PathCommandDef::LineTo { x: "x3", y: "y4" },
PathCommandDef::LineTo { x: "x4", y: "y4" },
PathCommandDef::LineTo { x: "hc", y: "b" },
PathCommandDef::LineTo { x: "x1", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y4" },
PathCommandDef::LineTo { x: "x2", y: "y3" },
PathCommandDef::LineTo { x: "l", y: "y3" },
PathCommandDef::Close,
];
static UP_DOWN_ARROW_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: UP_DOWN_ARROW_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static UP_DOWN_ARROW_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("maxAdj2", MulDiv, "50000", "w", "ss"),
gd!("a2", Pin, "0", "adj2", "maxAdj2"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("maxAdj3", MulDiv, "50000", "h", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q2", MulDiv, "a3", "ss", "hd2"),
gd!("maxAdj4", AddSub, "100000", "0", "q2"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("dx1", MulDiv, "ss", "a2", "100000"),
gd!("dx2", MulDiv, "ss", "a1", "200000"),
gd!("x1", AddSub, "hc", "0", "dx1"),
gd!("x2", AddSub, "hc", "0", "dx2"),
gd!("x3", AddSub, "hc", "dx2", "0"),
gd!("x4", AddSub, "hc", "dx1", "0"),
gd!("y1", MulDiv, "ss", "a3", "100000"),
gd!("y4", AddSub, "b", "0", "y1"),
gd!("dy2", MulDiv, "h", "a4", "200000"),
gd!("y2", AddSub, "vc", "0", "dy2"),
gd!("y3", AddSub, "vc", "dy2", "0"),
];
static UP_DOWN_ARROW_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 48123),
],
guides: UP_DOWN_ARROW_CALLOUT_GUIDES,
paths: UP_DOWN_ARROW_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "y2",
r: "r",
b: "y3",
}),
};
static UTURN_ARROW_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "l", y: "bd" },
PathCommandDef::ArcTo {
wr: "bd",
hr: "bd",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x4", y: "t" },
PathCommandDef::ArcTo {
wr: "bd",
hr: "bd",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x9", y: "y4" },
PathCommandDef::LineTo { x: "r", y: "y4" },
PathCommandDef::LineTo { x: "x8", y: "y5" },
PathCommandDef::LineTo { x: "x6", y: "y4" },
PathCommandDef::LineTo { x: "x7", y: "y4" },
PathCommandDef::LineTo { x: "x7", y: "x3" },
PathCommandDef::ArcTo {
wr: "bd2",
hr: "bd2",
st_ang: "0",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "x3", y: "th" },
PathCommandDef::ArcTo {
wr: "bd2",
hr: "bd2",
st_ang: "3cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "th", y: "b" },
PathCommandDef::Close,
];
static UTURN_ARROW_PATHS: &[PathDef] = &[PathDef {
commands: UTURN_ARROW_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static UTURN_ARROW_GUIDES: &[GuideDef] = &[
gd!("a2", Pin, "0", "adj2", "25000"),
gd!("maxAdj1", MulDiv, "a2", "2", "1"),
gd!("a1", Pin, "0", "adj1", "maxAdj1"),
gd!("q2", MulDiv, "a1", "ss", "h"),
gd!("q3", AddSub, "100000", "0", "q2"),
gd!("maxAdj3", MulDiv, "q3", "h", "ss"),
gd!("a3", Pin, "0", "adj3", "maxAdj3"),
gd!("q1", AddSub, "a3", "a1", "0"),
gd!("minAdj5", MulDiv, "q1", "ss", "h"),
gd!("a5", Pin, "minAdj5", "adj5", "100000"),
gd!("th", MulDiv, "ss", "a1", "100000"),
gd!("aw2", MulDiv, "ss", "a2", "100000"),
gd!("th2", MulDiv, "th", "1", "2"),
gd!("dh2", AddSub, "aw2", "0", "th2"),
gd!("y5", MulDiv, "h", "a5", "100000"),
gd!("ah", MulDiv, "ss", "a3", "100000"),
gd!("y4", AddSub, "y5", "0", "ah"),
gd!("x9", AddSub, "r", "0", "dh2"),
gd!("bw", MulDiv, "x9", "1", "2"),
gd!("bs", Min, "bw", "y4", ""),
gd!("maxAdj4", MulDiv, "bs", "100000", "ss"),
gd!("a4", Pin, "0", "adj4", "maxAdj4"),
gd!("bd", MulDiv, "ss", "a4", "100000"),
gd!("bd3", AddSub, "bd", "0", "th"),
gd!("bd2", Max, "bd3", "0", ""),
gd!("x3", AddSub, "th", "bd2", "0"),
gd!("x8", AddSub, "r", "0", "aw2"),
gd!("x6", AddSub, "x8", "0", "aw2"),
gd!("x7", AddSub, "x6", "dh2", "0"),
gd!("x4", AddSub, "x9", "0", "bd"),
gd!("x5", AddSub, "x7", "0", "bd2"),
gd!("cx", AddDiv, "th", "x7", "2"),
];
static UTURN_ARROW: PresetDef = PresetDef {
adjust_defaults: &[
("adj1", 25000),
("adj2", 25000),
("adj3", 25000),
("adj4", 43750),
("adj5", 75000),
],
guides: UTURN_ARROW_GUIDES,
paths: UTURN_ARROW_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static VERTICAL_SCROLL_P0_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "ch2", y: "b" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "ch2", y: "y4" },
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "cd4",
sw_ang: "-10800000",
},
PathCommandDef::LineTo { x: "ch", y: "y3" },
PathCommandDef::LineTo { x: "ch", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x7", y: "t" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x6", y: "ch" },
PathCommandDef::LineTo { x: "x6", y: "y4" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x4", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static VERTICAL_SCROLL_P1_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x4", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "ch", y: "y4" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "3cd4",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
];
static VERTICAL_SCROLL_P2_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "ch", y: "y3" },
PathCommandDef::LineTo { x: "ch", y: "ch2" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x7", y: "t" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x6", y: "ch" },
PathCommandDef::LineTo { x: "x6", y: "y4" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "ch2", y: "b" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::Close,
PathCommandDef::MoveTo { x: "x3", y: "t" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "x4", y: "ch2" },
PathCommandDef::MoveTo { x: "x6", y: "ch" },
PathCommandDef::LineTo { x: "x3", y: "ch" },
PathCommandDef::MoveTo { x: "ch2", y: "y3" },
PathCommandDef::ArcTo {
wr: "ch4",
hr: "ch4",
st_ang: "3cd4",
sw_ang: "cd2",
},
PathCommandDef::LineTo { x: "ch", y: "y4" },
PathCommandDef::MoveTo { x: "ch2", y: "b" },
PathCommandDef::ArcTo {
wr: "ch2",
hr: "ch2",
st_ang: "cd4",
sw_ang: "-5400000",
},
PathCommandDef::LineTo { x: "ch", y: "y3" },
];
static VERTICAL_SCROLL_PATHS: &[PathDef] = &[
PathDef {
commands: VERTICAL_SCROLL_P0_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: VERTICAL_SCROLL_P1_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: false,
},
PathDef {
commands: VERTICAL_SCROLL_P2_CMDS,
w: None,
h: None,
fill: PathFill::None,
stroke: true,
},
];
static VERTICAL_SCROLL_GUIDES: &[GuideDef] = &[
gd!("a", Pin, "0", "adj", "25000"),
gd!("ch", MulDiv, "ss", "a", "100000"),
gd!("ch2", MulDiv, "ch", "1", "2"),
gd!("ch4", MulDiv, "ch", "1", "4"),
gd!("x3", AddSub, "ch", "ch2", "0"),
gd!("x4", AddSub, "ch", "ch", "0"),
gd!("x6", AddSub, "r", "0", "ch"),
gd!("x7", AddSub, "r", "0", "ch2"),
gd!("x5", AddSub, "x6", "0", "ch2"),
gd!("y3", AddSub, "b", "0", "ch"),
gd!("y4", AddSub, "b", "0", "ch2"),
];
static VERTICAL_SCROLL: PresetDef = PresetDef {
adjust_defaults: &[("adj", 12500)],
guides: VERTICAL_SCROLL_GUIDES,
paths: VERTICAL_SCROLL_PATHS,
text_rect: Some(TextRectDef {
l: "ch",
t: "ch",
r: "x6",
b: "y4",
}),
};
static WAVE_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "x2", y: "y1" },
PathCommandDef::CubicBezTo {
x1: "x3",
y1: "y2",
x2: "x4",
y2: "y3",
x3: "x5",
y3: "y1",
},
PathCommandDef::LineTo { x: "x10", y: "y4" },
PathCommandDef::CubicBezTo {
x1: "x8",
y1: "y6",
x2: "x7",
y2: "y5",
x3: "x6",
y3: "y4",
},
PathCommandDef::Close,
];
static WAVE_PATHS: &[PathDef] = &[PathDef {
commands: WAVE_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static WAVE_GUIDES: &[GuideDef] = &[
gd!("a1", Pin, "0", "adj1", "20000"),
gd!("a2", Pin, "-10000", "adj2", "10000"),
gd!("y1", MulDiv, "h", "a1", "100000"),
gd!("dy2", MulDiv, "y1", "10", "3"),
gd!("y2", AddSub, "y1", "0", "dy2"),
gd!("y3", AddSub, "y1", "dy2", "0"),
gd!("y4", AddSub, "b", "0", "y1"),
gd!("y5", AddSub, "y4", "0", "dy2"),
gd!("y6", AddSub, "y4", "dy2", "0"),
gd!("dx1", MulDiv, "w", "a2", "100000"),
gd!("of2", MulDiv, "w", "a2", "50000"),
gd!("x1", Abs, "dx1", "", ""),
gd!("dx2", IfElse, "of2", "0", "of2"),
gd!("x2", AddSub, "l", "0", "dx2"),
gd!("dx5", IfElse, "of2", "of2", "0"),
gd!("x5", AddSub, "r", "0", "dx5"),
gd!("dx3", AddDiv, "dx2", "x5", "3"),
gd!("x3", AddSub, "x2", "dx3", "0"),
gd!("x4", AddDiv, "x3", "x5", "2"),
gd!("x6", AddSub, "l", "dx5", "0"),
gd!("x10", AddSub, "r", "dx2", "0"),
gd!("x7", AddSub, "x6", "dx3", "0"),
gd!("x8", AddDiv, "x7", "x10", "2"),
gd!("x9", AddSub, "r", "0", "x1"),
gd!("xAdj", AddSub, "hc", "dx1", "0"),
gd!("xAdj2", AddSub, "hc", "0", "dx1"),
gd!("il", Max, "x2", "x6", ""),
gd!("ir", Min, "x5", "x10", ""),
gd!("it", MulDiv, "h", "a1", "50000"),
gd!("ib", AddSub, "b", "0", "it"),
];
static WAVE: PresetDef = PresetDef {
adjust_defaults: &[("adj1", 12500), ("adj2", 0)],
guides: WAVE_GUIDES,
paths: WAVE_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static WEDGE_ELLIPSE_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo {
x: "xPos",
y: "yPos",
},
PathCommandDef::LineTo { x: "x1", y: "y1" },
PathCommandDef::ArcTo {
wr: "wd2",
hr: "hd2",
st_ang: "stAng1",
sw_ang: "swAng",
},
PathCommandDef::Close,
];
static WEDGE_ELLIPSE_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: WEDGE_ELLIPSE_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static WEDGE_ELLIPSE_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("dxPos", MulDiv, "w", "adj1", "100000"),
gd!("dyPos", MulDiv, "h", "adj2", "100000"),
gd!("xPos", AddSub, "hc", "dxPos", "0"),
gd!("yPos", AddSub, "vc", "dyPos", "0"),
gd!("sdx", MulDiv, "dxPos", "h", "1"),
gd!("sdy", MulDiv, "dyPos", "w", "1"),
gd!("pang", Atan2, "sdx", "sdy", ""),
gd!("stAng", AddSub, "pang", "660000", "0"),
gd!("enAng", AddSub, "pang", "0", "660000"),
gd!("dx1", Cos, "wd2", "stAng", ""),
gd!("dy1", Sin, "hd2", "stAng", ""),
gd!("x1", AddSub, "hc", "dx1", "0"),
gd!("y1", AddSub, "vc", "dy1", "0"),
gd!("dx2", Cos, "wd2", "enAng", ""),
gd!("dy2", Sin, "hd2", "enAng", ""),
gd!("x2", AddSub, "hc", "dx2", "0"),
gd!("y2", AddSub, "vc", "dy2", "0"),
gd!("stAng1", Atan2, "dx1", "dy1", ""),
gd!("enAng1", Atan2, "dx2", "dy2", ""),
gd!("swAng1", AddSub, "enAng1", "0", "stAng1"),
gd!("swAng2", AddSub, "swAng1", "21600000", "0"),
gd!("swAng", IfElse, "swAng1", "swAng1", "swAng2"),
gd!("idx", Cos, "wd2", "2700000", ""),
gd!("idy", Sin, "hd2", "2700000", ""),
gd!("il", AddSub, "hc", "0", "idx"),
gd!("ir", AddSub, "hc", "idx", "0"),
gd!("it", AddSub, "vc", "0", "idy"),
gd!("ib", AddSub, "vc", "idy", "0"),
];
static WEDGE_ELLIPSE_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", -20833), ("adj2", 62500)],
guides: WEDGE_ELLIPSE_CALLOUT_GUIDES,
paths: WEDGE_ELLIPSE_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "it",
r: "ir",
b: "ib",
}),
};
static WEDGE_RECT_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "t" },
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "xt", y: "yt" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "r", y: "t" },
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "xr", y: "yr" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "b" },
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "xb", y: "yb" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "l", y: "b" },
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "xl", y: "yl" },
PathCommandDef::LineTo { x: "l", y: "y1" },
PathCommandDef::Close,
];
static WEDGE_RECT_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: WEDGE_RECT_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static WEDGE_RECT_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("dxPos", MulDiv, "w", "adj1", "100000"),
gd!("dyPos", MulDiv, "h", "adj2", "100000"),
gd!("xPos", AddSub, "hc", "dxPos", "0"),
gd!("yPos", AddSub, "vc", "dyPos", "0"),
gd!("dx", AddSub, "xPos", "0", "hc"),
gd!("dy", AddSub, "yPos", "0", "vc"),
gd!("dq", MulDiv, "dxPos", "h", "w"),
gd!("ady", Abs, "dyPos", "", ""),
gd!("adq", Abs, "dq", "", ""),
gd!("dz", AddSub, "ady", "0", "adq"),
gd!("xg1", IfElse, "dxPos", "7", "2"),
gd!("xg2", IfElse, "dxPos", "10", "5"),
gd!("x1", MulDiv, "w", "xg1", "12"),
gd!("x2", MulDiv, "w", "xg2", "12"),
gd!("yg1", IfElse, "dyPos", "7", "2"),
gd!("yg2", IfElse, "dyPos", "10", "5"),
gd!("y1", MulDiv, "h", "yg1", "12"),
gd!("y2", MulDiv, "h", "yg2", "12"),
gd!("t1", IfElse, "dxPos", "l", "xPos"),
gd!("xl", IfElse, "dz", "l", "t1"),
gd!("t2", IfElse, "dyPos", "x1", "xPos"),
gd!("xt", IfElse, "dz", "t2", "x1"),
gd!("t3", IfElse, "dxPos", "xPos", "r"),
gd!("xr", IfElse, "dz", "r", "t3"),
gd!("t4", IfElse, "dyPos", "xPos", "x1"),
gd!("xb", IfElse, "dz", "t4", "x1"),
gd!("t5", IfElse, "dxPos", "y1", "yPos"),
gd!("yl", IfElse, "dz", "y1", "t5"),
gd!("t6", IfElse, "dyPos", "t", "yPos"),
gd!("yt", IfElse, "dz", "t6", "t"),
gd!("t7", IfElse, "dxPos", "yPos", "y1"),
gd!("yr", IfElse, "dz", "y1", "t7"),
gd!("t8", IfElse, "dyPos", "yPos", "b"),
gd!("yb", IfElse, "dz", "t8", "b"),
];
static WEDGE_RECT_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", -20833), ("adj2", 62500)],
guides: WEDGE_RECT_CALLOUT_GUIDES,
paths: WEDGE_RECT_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "l",
t: "t",
r: "r",
b: "b",
}),
};
static WEDGE_ROUND_RECT_CALLOUT_CMDS: &[PathCommandDef] = &[
PathCommandDef::MoveTo { x: "l", y: "u1" },
PathCommandDef::ArcTo {
wr: "u1",
hr: "u1",
st_ang: "cd2",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x1", y: "t" },
PathCommandDef::LineTo { x: "xt", y: "yt" },
PathCommandDef::LineTo { x: "x2", y: "t" },
PathCommandDef::LineTo { x: "u2", y: "t" },
PathCommandDef::ArcTo {
wr: "u1",
hr: "u1",
st_ang: "3cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "r", y: "y1" },
PathCommandDef::LineTo { x: "xr", y: "yr" },
PathCommandDef::LineTo { x: "r", y: "y2" },
PathCommandDef::LineTo { x: "r", y: "v2" },
PathCommandDef::ArcTo {
wr: "u1",
hr: "u1",
st_ang: "0",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "x2", y: "b" },
PathCommandDef::LineTo { x: "xb", y: "yb" },
PathCommandDef::LineTo { x: "x1", y: "b" },
PathCommandDef::LineTo { x: "u1", y: "b" },
PathCommandDef::ArcTo {
wr: "u1",
hr: "u1",
st_ang: "cd4",
sw_ang: "cd4",
},
PathCommandDef::LineTo { x: "l", y: "y2" },
PathCommandDef::LineTo { x: "xl", y: "yl" },
PathCommandDef::LineTo { x: "l", y: "y1" },
PathCommandDef::Close,
];
static WEDGE_ROUND_RECT_CALLOUT_PATHS: &[PathDef] = &[PathDef {
commands: WEDGE_ROUND_RECT_CALLOUT_CMDS,
w: None,
h: None,
fill: PathFill::Norm,
stroke: true,
}];
static WEDGE_ROUND_RECT_CALLOUT_GUIDES: &[GuideDef] = &[
gd!("dxPos", MulDiv, "w", "adj1", "100000"),
gd!("dyPos", MulDiv, "h", "adj2", "100000"),
gd!("xPos", AddSub, "hc", "dxPos", "0"),
gd!("yPos", AddSub, "vc", "dyPos", "0"),
gd!("dq", MulDiv, "dxPos", "h", "w"),
gd!("ady", Abs, "dyPos", "", ""),
gd!("adq", Abs, "dq", "", ""),
gd!("dz", AddSub, "ady", "0", "adq"),
gd!("xg1", IfElse, "dxPos", "7", "2"),
gd!("xg2", IfElse, "dxPos", "10", "5"),
gd!("x1", MulDiv, "w", "xg1", "12"),
gd!("x2", MulDiv, "w", "xg2", "12"),
gd!("yg1", IfElse, "dyPos", "7", "2"),
gd!("yg2", IfElse, "dyPos", "10", "5"),
gd!("y1", MulDiv, "h", "yg1", "12"),
gd!("y2", MulDiv, "h", "yg2", "12"),
gd!("t1", IfElse, "dxPos", "l", "xPos"),
gd!("xl", IfElse, "dz", "l", "t1"),
gd!("t2", IfElse, "dyPos", "x1", "xPos"),
gd!("xt", IfElse, "dz", "t2", "x1"),
gd!("t3", IfElse, "dxPos", "xPos", "r"),
gd!("xr", IfElse, "dz", "r", "t3"),
gd!("t4", IfElse, "dyPos", "xPos", "x1"),
gd!("xb", IfElse, "dz", "t4", "x1"),
gd!("t5", IfElse, "dxPos", "y1", "yPos"),
gd!("yl", IfElse, "dz", "y1", "t5"),
gd!("t6", IfElse, "dyPos", "t", "yPos"),
gd!("yt", IfElse, "dz", "t6", "t"),
gd!("t7", IfElse, "dxPos", "yPos", "y1"),
gd!("yr", IfElse, "dz", "y1", "t7"),
gd!("t8", IfElse, "dyPos", "yPos", "b"),
gd!("yb", IfElse, "dz", "t8", "b"),
gd!("u1", MulDiv, "ss", "adj3", "100000"),
gd!("u2", AddSub, "r", "0", "u1"),
gd!("v2", AddSub, "b", "0", "u1"),
gd!("il", MulDiv, "u1", "29289", "100000"),
gd!("ir", AddSub, "r", "0", "il"),
gd!("ib", AddSub, "b", "0", "il"),
];
static WEDGE_ROUND_RECT_CALLOUT: PresetDef = PresetDef {
adjust_defaults: &[("adj1", -20833), ("adj2", 62500), ("adj3", 16667)],
guides: WEDGE_ROUND_RECT_CALLOUT_GUIDES,
paths: WEDGE_ROUND_RECT_CALLOUT_PATHS,
text_rect: Some(TextRectDef {
l: "il",
t: "il",
r: "ir",
b: "ib",
}),
};
#[cfg(test)]
mod tests {
use super::*;
use crate::geometry::evaluate_preset;
#[test]
fn test_all_original_11_shapes_are_registered() {
let names = [
"rect",
"ellipse",
"roundRect",
"corner",
"triangle",
"notchedRightArrow",
"leftCircularArrow",
"circularArrow",
"line",
"arc",
"straightConnector1",
];
for name in names {
assert!(lookup(name).is_some(), "Shape '{name}' not found in lookup");
}
}
#[test]
fn test_187_shapes_registered() {
let names = [
"accentBorderCallout1",
"bentArrow",
"chevron",
"diamond",
"ellipse",
"flowChartProcess",
"gear6",
"heart",
"irregularSeal1",
"leftArrow",
"mathPlus",
"noSmoking",
"octagon",
"parallelogram",
"rect",
"roundRect",
"star5",
"trapezoid",
"uturnArrow",
"wave",
];
for name in names {
assert!(lookup(name).is_some(), "Shape '{name}' not found in lookup");
}
}
#[test]
fn test_rect_produces_4_lines_and_close() {
let shape = evaluate_preset("rect", 100.0, 50.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert_eq!(shape.paths[0].commands.len(), 5);
}
#[test]
fn test_ellipse_produces_arcs() {
let shape = evaluate_preset("ellipse", 100.0, 80.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert!(shape.paths[0].commands.len() >= 6);
}
#[test]
fn test_round_rect_has_arcs() {
let shape = evaluate_preset("roundRect", 200.0, 100.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert!(shape.paths[0].commands.len() >= 9);
}
#[test]
fn test_triangle_3_vertices() {
let shape = evaluate_preset("triangle", 100.0, 80.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert_eq!(shape.paths[0].commands.len(), 4);
}
#[test]
fn test_corner_l_shape() {
let shape = evaluate_preset("corner", 100.0, 100.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert_eq!(shape.paths[0].commands.len(), 7);
}
#[test]
fn test_notched_right_arrow() {
let shape = evaluate_preset("notchedRightArrow", 200.0, 100.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert_eq!(shape.paths[0].commands.len(), 9);
}
#[test]
fn test_line_has_two_commands() {
let shape = evaluate_preset("line", 100.0, 50.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert_eq!(shape.paths[0].commands.len(), 2);
assert!(shape.paths[0].stroke);
}
#[test]
fn test_arc_has_two_paths() {
let shape = evaluate_preset("arc", 100.0, 100.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 2);
assert!(shape.paths[0].fill.is_filled());
assert!(!shape.paths[0].stroke);
assert!(!shape.paths[1].fill.is_filled());
assert!(shape.paths[1].stroke);
}
#[test]
fn test_circular_arrow_evaluates() {
let shape = evaluate_preset("circularArrow", 200.0, 200.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert!(shape.paths[0].commands.len() >= 3);
}
#[test]
fn test_left_circular_arrow_evaluates() {
let shape = evaluate_preset("leftCircularArrow", 200.0, 200.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert!(shape.paths[0].commands.len() >= 3);
}
#[test]
fn test_round_rect_custom_adjustment() {
let shape = evaluate_preset("roundRect", 100.0, 50.0, &[("adj".into(), 0)]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert!(shape.paths[0].commands.len() >= 5);
}
#[test]
fn test_straight_connector1() {
let shape = evaluate_preset("straightConnector1", 100.0, 50.0, &[]).unwrap();
assert_eq!(shape.paths.len(), 1);
assert_eq!(shape.paths[0].commands.len(), 2);
assert!(!shape.paths[0].fill.is_filled());
}
#[test]
fn test_text_rect_present() {
for name in [
"rect",
"ellipse",
"roundRect",
"triangle",
"corner",
"notchedRightArrow",
] {
let shape = evaluate_preset(name, 100.0, 80.0, &[]).unwrap();
assert!(
shape.text_rect.is_some(),
"Shape '{name}' should have a text rect"
);
}
let line = evaluate_preset("line", 100.0, 50.0, &[]).unwrap();
assert!(line.text_rect.is_none());
}
}