summaryrefslogtreecommitdiffstats
path: root/svgbob
diff options
context:
space:
mode:
authorJovansonlee Cesar <ivanceras@gmail.com>2018-09-02 00:57:46 +0800
committerJovansonlee Cesar <ivanceras@gmail.com>2018-09-02 00:57:46 +0800
commit5591a4e13b7d17a12da0651f5cb25065b3002221 (patch)
tree1820ae49b7c1ade78e1eb46d2416c4f4a3994a94 /svgbob
parent7cf9d0470e5912091071d9e7948de27ba150a2fa (diff)
re-code arrow marker to make use of polygon and corrected it's positioning to have a more crisp sharp edge
Diffstat (limited to 'svgbob')
-rw-r--r--svgbob/src/enhance.rs4
-rw-r--r--svgbob/src/grid.rs42
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);