diff options
author | Jovansonlee Cesar <ivanceras@gmail.com> | 2018-09-02 00:57:46 +0800 |
---|---|---|
committer | Jovansonlee Cesar <ivanceras@gmail.com> | 2018-09-02 00:57:46 +0800 |
commit | 5591a4e13b7d17a12da0651f5cb25065b3002221 (patch) | |
tree | 1820ae49b7c1ade78e1eb46d2416c4f4a3994a94 | |
parent | 7cf9d0470e5912091071d9e7948de27ba150a2fa (diff) |
re-code arrow marker to make use of polygon and corrected it's positioning to have a more crisp sharp edge
-rw-r--r-- | svgbob/src/enhance.rs | 4 | ||||
-rw-r--r-- | svgbob/src/grid.rs | 42 |
2 files changed, 37 insertions, 9 deletions
diff --git a/svgbob/src/enhance.rs b/svgbob/src/enhance.rs index adfc7e8..19cc815 100644 --- a/svgbob/src/enhance.rs +++ b/svgbob/src/enhance.rs @@ -2,7 +2,7 @@ use focus_char::FocusChar; use fragments::Fragment; use location::Location; use location::Direction::{Bottom, BottomLeft, BottomRight, Left, Right, Top, TopLeft, TopRight}; -use block::Block::{A, C, E, F, J, K, M, O, P, R, S, T, U, W, Y}; +use block::Block::{A, C, E, F, J, K, M, O, P, Q, R, S, T, U, W, Y}; use point_block::PointBlock; use fragments::{line, arc, arrow_line, open_circle}; @@ -31,7 +31,7 @@ impl<'g> Enhance for FocusChar<'g> { //let _n = &PointBlock::block(N); let o = &PointBlock::block(O); let p = &PointBlock::block(P); - //let _q = &PointBlock::block(Q); + let q = &PointBlock::block(Q); let r = &PointBlock::block(R); let s = &PointBlock::block(S); let t = &PointBlock::block(T); diff --git a/svgbob/src/grid.rs b/svgbob/src/grid.rs index bcf3513..cbdaedb 100644 --- a/svgbob/src/grid.rs +++ b/svgbob/src/grid.rs @@ -11,6 +11,7 @@ use svg::node::element::{ Rectangle as SvgRect, Style, Circle as SvgCircle, + Polygon as SvgPolygon, Group, }; use element::Element; @@ -339,7 +340,7 @@ fn get_defs() -> Definitions { fn get_styles(settings: &Settings) -> Style { let style = format!( r#" - line, path {{ + line,path {{ stroke: {stroke_color}; stroke-width: {stroke_width}; stroke-opacity: 1; @@ -382,14 +383,37 @@ fn get_styles(settings: &Settings) -> Style { fn arrow_marker() -> Marker { let mut marker = Marker::new() .set("id", "triangle") - .set("viewBox", "0 0 50 20") - .set("refX", 15) - .set("refY", 10) + .set("viewBox", "0 0 8 4") + .set("refX", 4) + .set("refY", 2) + .set("orient", "auto") + .set("markerWidth", 8) + .set("markerHeight", 8); + + let path = SvgPolygon::new() + .set("points", "0,0 0,4 8,2 z") + .set("fill", "black"); + + marker.append(path); + marker +} + +fn clear_arrow_marker() -> Marker { + let mut marker = Marker::new() + .set("id", "clear_triangle") + .set("viewBox", "0 0 20 14") + .set("refX", 1) + .set("refY", 7) + .set("orient", "auto") .set("markerWidth", 10) - .set("markerHeight", 10) - .set("orient", "auto"); + .set("markerHeight", 10); + + let path = SvgPolygon::new() + .set("points", "2,2 2,12 18,7 z") + .set("fill", "none") + .set("stroke-width", 2) + .set("stroke", "black"); - let path = SvgPath::new().set("d", "M 0 0 L 30 10 L 0 20 z"); marker.append(path); marker } @@ -405,6 +429,7 @@ fn circle_marker() -> Marker { .set("viewBox", "0 0 20 20") .set("refX", 10) .set("refY", 10) + .set("orient", "auto") .set("markerWidth", 5) .set("markerHeight", 5); @@ -423,6 +448,7 @@ fn square_marker() -> Marker { .set("viewBox", "0 0 20 20") .set("refX", 10) .set("refY", 10) + .set("orient", "auto") .set("markerWidth", 5) .set("markerHeight", 5); @@ -442,6 +468,7 @@ fn open_circle_marker() -> Marker { .set("viewBox", "0 0 20 20") .set("refX", 10) .set("refY", 10) + .set("orient", "auto") .set("markerWidth", 10) .set("markerHeight", 10); @@ -461,6 +488,7 @@ fn big_open_circle_marker() -> Marker { .set("viewBox", "0 0 40 40") .set("refX", 20) .set("refY", 20) + .set("orient", "auto") .set("markerWidth", 20) .set("markerHeight", 20); |