From: John Ellson Date: Tue, 12 Aug 2014 16:35:06 +0000 (-0400) Subject: add icurve arrow shape X-Git-Tag: TRAVIS_CI_BUILD_EXPERIMENTAL~177 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cd1c4623b48430bdbf3d835ed0ef20665cd4c944;p=graphviz add icurve arrow shape --- diff --git a/doc/info/a_box.gif b/doc/info/a_box.gif index f49639f19..6e4daef7b 100644 Binary files a/doc/info/a_box.gif and b/doc/info/a_box.gif differ diff --git a/doc/info/a_crow.gif b/doc/info/a_crow.gif index 624d7b0b5..b2f2a3c59 100644 Binary files a/doc/info/a_crow.gif and b/doc/info/a_crow.gif differ diff --git a/doc/info/a_curve.gif b/doc/info/a_curve.gif index 86c4cac4c..0fe67bc74 100644 Binary files a/doc/info/a_curve.gif and b/doc/info/a_curve.gif differ diff --git a/doc/info/a_diamond.gif b/doc/info/a_diamond.gif index 7b69d6921..ab183994c 100644 Binary files a/doc/info/a_diamond.gif and b/doc/info/a_diamond.gif differ diff --git a/doc/info/a_dot.gif b/doc/info/a_dot.gif index f48be06aa..c98a4d5ff 100644 Binary files a/doc/info/a_dot.gif and b/doc/info/a_dot.gif differ diff --git a/doc/info/a_ediamond.gif b/doc/info/a_ediamond.gif index a65aa06bd..35ec06696 100644 Binary files a/doc/info/a_ediamond.gif and b/doc/info/a_ediamond.gif differ diff --git a/doc/info/a_empty.gif b/doc/info/a_empty.gif index 42f372fc8..f6d71e783 100644 Binary files a/doc/info/a_empty.gif and b/doc/info/a_empty.gif differ diff --git a/doc/info/a_forward.dot b/doc/info/a_forward.dot new file mode 100644 index 000000000..d6132a593 --- /dev/null +++ b/doc/info/a_forward.dot @@ -0,0 +1,6 @@ +digraph G { +graph [pad="0.05" rankdir=LR] +a [label="" shape=point] +b [label=""] +a -> b [arrowhead=forward] +} diff --git a/doc/info/a_forward.gif b/doc/info/a_forward.gif index 23c365c07..468325015 100644 Binary files a/doc/info/a_forward.gif and b/doc/info/a_forward.gif differ diff --git a/doc/info/a_halfopen.gif b/doc/info/a_halfopen.gif index 0abefbd35..3b351afd9 100644 Binary files a/doc/info/a_halfopen.gif and b/doc/info/a_halfopen.gif differ diff --git a/doc/info/a_icurve.gif b/doc/info/a_icurve.gif new file mode 100644 index 000000000..80f7950df Binary files /dev/null and b/doc/info/a_icurve.gif differ diff --git a/doc/info/a_inv.gif b/doc/info/a_inv.gif index 6eaaa4278..8347de63e 100644 Binary files a/doc/info/a_inv.gif and b/doc/info/a_inv.gif differ diff --git a/doc/info/a_invdot.gif b/doc/info/a_invdot.gif index 933ced311..ecfae0eda 100644 Binary files a/doc/info/a_invdot.gif and b/doc/info/a_invdot.gif differ diff --git a/doc/info/a_invempty.gif b/doc/info/a_invempty.gif index c2a823a88..665937e6f 100644 Binary files a/doc/info/a_invempty.gif and b/doc/info/a_invempty.gif differ diff --git a/doc/info/a_invodot.gif b/doc/info/a_invodot.gif index 68feb1518..f3e5ae10c 100644 Binary files a/doc/info/a_invodot.gif and b/doc/info/a_invodot.gif differ diff --git a/doc/info/a_lteeoldiamond.gif b/doc/info/a_lteeoldiamond.gif index 7de42ac7c..ec4c8aeb5 100644 Binary files a/doc/info/a_lteeoldiamond.gif and b/doc/info/a_lteeoldiamond.gif differ diff --git a/doc/info/a_nohead.dot b/doc/info/a_nohead.dot new file mode 100644 index 000000000..31fc1a082 --- /dev/null +++ b/doc/info/a_nohead.dot @@ -0,0 +1,6 @@ +digraph G { +graph [pad="0.05" rankdir=LR] +a [label="" shape=point] +b [label=""] +a -> b [arrowhead=nohead] +} diff --git a/doc/info/a_nohead.gif b/doc/info/a_nohead.gif index 23c365c07..468325015 100644 Binary files a/doc/info/a_nohead.gif and b/doc/info/a_nohead.gif differ diff --git a/doc/info/a_none.gif b/doc/info/a_none.gif index 63544d04d..468325015 100644 Binary files a/doc/info/a_none.gif and b/doc/info/a_none.gif differ diff --git a/doc/info/a_normal.gif b/doc/info/a_normal.gif index 9a1d54fd0..98472a2d4 100644 Binary files a/doc/info/a_normal.gif and b/doc/info/a_normal.gif differ diff --git a/doc/info/a_obox.gif b/doc/info/a_obox.gif index 19939d7ff..fac61661d 100644 Binary files a/doc/info/a_obox.gif and b/doc/info/a_obox.gif differ diff --git a/doc/info/a_odiamond.gif b/doc/info/a_odiamond.gif index a65aa06bd..35ec06696 100644 Binary files a/doc/info/a_odiamond.gif and b/doc/info/a_odiamond.gif differ diff --git a/doc/info/a_odot.gif b/doc/info/a_odot.gif index 3e26ad0d0..84d3e3611 100644 Binary files a/doc/info/a_odot.gif and b/doc/info/a_odot.gif differ diff --git a/doc/info/a_open.gif b/doc/info/a_open.gif index a61e06d4c..394fe2a4f 100644 Binary files a/doc/info/a_open.gif and b/doc/info/a_open.gif differ diff --git a/doc/info/a_tee.gif b/doc/info/a_tee.gif index bbe8bc368..fd0696793 100644 Binary files a/doc/info/a_tee.gif and b/doc/info/a_tee.gif differ diff --git a/doc/info/aa_box.gif b/doc/info/aa_box.gif index 6afb89cb9..974bcd7b5 100644 Binary files a/doc/info/aa_box.gif and b/doc/info/aa_box.gif differ diff --git a/doc/info/aa_crow.gif b/doc/info/aa_crow.gif index ca2bafef4..e4dd24e1c 100644 Binary files a/doc/info/aa_crow.gif and b/doc/info/aa_crow.gif differ diff --git a/doc/info/aa_curve.gif b/doc/info/aa_curve.gif index 5e97a301e..7c892783e 100644 Binary files a/doc/info/aa_curve.gif and b/doc/info/aa_curve.gif differ diff --git a/doc/info/aa_diamond.gif b/doc/info/aa_diamond.gif index 140eeb65c..d40a4c47b 100644 Binary files a/doc/info/aa_diamond.gif and b/doc/info/aa_diamond.gif differ diff --git a/doc/info/aa_dot.gif b/doc/info/aa_dot.gif index 8ac4ecefd..8615e280c 100644 Binary files a/doc/info/aa_dot.gif and b/doc/info/aa_dot.gif differ diff --git a/doc/info/aa_icurve.gif b/doc/info/aa_icurve.gif new file mode 100644 index 000000000..e6138146e Binary files /dev/null and b/doc/info/aa_icurve.gif differ diff --git a/doc/info/aa_inv.gif b/doc/info/aa_inv.gif index 4ade7b582..21a24676f 100644 Binary files a/doc/info/aa_inv.gif and b/doc/info/aa_inv.gif differ diff --git a/doc/info/aa_lbox.gif b/doc/info/aa_lbox.gif index 120eeb86f..d3af77efa 100644 Binary files a/doc/info/aa_lbox.gif and b/doc/info/aa_lbox.gif differ diff --git a/doc/info/aa_lcrow.gif b/doc/info/aa_lcrow.gif index e4dc88efe..52933a00e 100644 Binary files a/doc/info/aa_lcrow.gif and b/doc/info/aa_lcrow.gif differ diff --git a/doc/info/aa_lcurve.gif b/doc/info/aa_lcurve.gif index 8fa598156..d18ba53b0 100644 Binary files a/doc/info/aa_lcurve.gif and b/doc/info/aa_lcurve.gif differ diff --git a/doc/info/aa_ldiamond.gif b/doc/info/aa_ldiamond.gif index 421ff6a2a..c094009db 100644 Binary files a/doc/info/aa_ldiamond.gif and b/doc/info/aa_ldiamond.gif differ diff --git a/doc/info/aa_licurve.gif b/doc/info/aa_licurve.gif new file mode 100644 index 000000000..7b8c185b0 Binary files /dev/null and b/doc/info/aa_licurve.gif differ diff --git a/doc/info/aa_linv.gif b/doc/info/aa_linv.gif index 82d02d139..f31629a12 100644 Binary files a/doc/info/aa_linv.gif and b/doc/info/aa_linv.gif differ diff --git a/doc/info/aa_lnormal.gif b/doc/info/aa_lnormal.gif index b60bb2ba8..353854073 100644 Binary files a/doc/info/aa_lnormal.gif and b/doc/info/aa_lnormal.gif differ diff --git a/doc/info/aa_ltee.gif b/doc/info/aa_ltee.gif index 471f01ce4..325bf22db 100644 Binary files a/doc/info/aa_ltee.gif and b/doc/info/aa_ltee.gif differ diff --git a/doc/info/aa_lvee.gif b/doc/info/aa_lvee.gif index fbc20c36a..6c99b8026 100644 Binary files a/doc/info/aa_lvee.gif and b/doc/info/aa_lvee.gif differ diff --git a/doc/info/aa_none.gif b/doc/info/aa_none.gif index 9910e0e61..dbe95dc12 100644 Binary files a/doc/info/aa_none.gif and b/doc/info/aa_none.gif differ diff --git a/doc/info/aa_normal.gif b/doc/info/aa_normal.gif index 0f27bf3bc..67d0db375 100644 Binary files a/doc/info/aa_normal.gif and b/doc/info/aa_normal.gif differ diff --git a/doc/info/aa_obox.gif b/doc/info/aa_obox.gif index 7a64fe029..7573b77e3 100644 Binary files a/doc/info/aa_obox.gif and b/doc/info/aa_obox.gif differ diff --git a/doc/info/aa_odiamond.gif b/doc/info/aa_odiamond.gif index 590fcfed7..e731dc0fc 100644 Binary files a/doc/info/aa_odiamond.gif and b/doc/info/aa_odiamond.gif differ diff --git a/doc/info/aa_odot.gif b/doc/info/aa_odot.gif index f235019cb..d0474f3a0 100644 Binary files a/doc/info/aa_odot.gif and b/doc/info/aa_odot.gif differ diff --git a/doc/info/aa_oinv.gif b/doc/info/aa_oinv.gif index 70f014f68..ced179e65 100644 Binary files a/doc/info/aa_oinv.gif and b/doc/info/aa_oinv.gif differ diff --git a/doc/info/aa_olbox.gif b/doc/info/aa_olbox.gif index 3e5506ca1..b1166c1df 100644 Binary files a/doc/info/aa_olbox.gif and b/doc/info/aa_olbox.gif differ diff --git a/doc/info/aa_oldiamond.gif b/doc/info/aa_oldiamond.gif index 00ba07bf0..2521a7ffc 100644 Binary files a/doc/info/aa_oldiamond.gif and b/doc/info/aa_oldiamond.gif differ diff --git a/doc/info/aa_olinv.gif b/doc/info/aa_olinv.gif index cbef41bcb..2e2384561 100644 Binary files a/doc/info/aa_olinv.gif and b/doc/info/aa_olinv.gif differ diff --git a/doc/info/aa_olnormal.gif b/doc/info/aa_olnormal.gif index 3e51b3f8a..14e43123b 100644 Binary files a/doc/info/aa_olnormal.gif and b/doc/info/aa_olnormal.gif differ diff --git a/doc/info/aa_onormal.gif b/doc/info/aa_onormal.gif index 8784657a9..7af649735 100644 Binary files a/doc/info/aa_onormal.gif and b/doc/info/aa_onormal.gif differ diff --git a/doc/info/aa_orbox.gif b/doc/info/aa_orbox.gif index 0c8621797..32f35e959 100644 Binary files a/doc/info/aa_orbox.gif and b/doc/info/aa_orbox.gif differ diff --git a/doc/info/aa_ordiamond.gif b/doc/info/aa_ordiamond.gif index 161e999f9..5bdcdf236 100644 Binary files a/doc/info/aa_ordiamond.gif and b/doc/info/aa_ordiamond.gif differ diff --git a/doc/info/aa_orinv.gif b/doc/info/aa_orinv.gif index 51236cbf8..ce5fc47c6 100644 Binary files a/doc/info/aa_orinv.gif and b/doc/info/aa_orinv.gif differ diff --git a/doc/info/aa_ornormal.gif b/doc/info/aa_ornormal.gif index 1b46ed431..800e5eafc 100644 Binary files a/doc/info/aa_ornormal.gif and b/doc/info/aa_ornormal.gif differ diff --git a/doc/info/aa_rbox.gif b/doc/info/aa_rbox.gif index 5f3a03206..5660515ac 100644 Binary files a/doc/info/aa_rbox.gif and b/doc/info/aa_rbox.gif differ diff --git a/doc/info/aa_rcrow.gif b/doc/info/aa_rcrow.gif index a623fc52e..876a48963 100644 Binary files a/doc/info/aa_rcrow.gif and b/doc/info/aa_rcrow.gif differ diff --git a/doc/info/aa_rcurve.gif b/doc/info/aa_rcurve.gif index 680605089..ab3a2a07e 100644 Binary files a/doc/info/aa_rcurve.gif and b/doc/info/aa_rcurve.gif differ diff --git a/doc/info/aa_rdiamond.gif b/doc/info/aa_rdiamond.gif index 5303d6fa8..6f78f3ab8 100644 Binary files a/doc/info/aa_rdiamond.gif and b/doc/info/aa_rdiamond.gif differ diff --git a/doc/info/aa_ricurve.gif b/doc/info/aa_ricurve.gif new file mode 100644 index 000000000..03230d1e3 Binary files /dev/null and b/doc/info/aa_ricurve.gif differ diff --git a/doc/info/aa_rinv.gif b/doc/info/aa_rinv.gif index 2e70b43ca..cc60b30fb 100644 Binary files a/doc/info/aa_rinv.gif and b/doc/info/aa_rinv.gif differ diff --git a/doc/info/aa_rnormal.gif b/doc/info/aa_rnormal.gif index af19dc6c1..6b9414c39 100644 Binary files a/doc/info/aa_rnormal.gif and b/doc/info/aa_rnormal.gif differ diff --git a/doc/info/aa_rtee.gif b/doc/info/aa_rtee.gif index 95d6ba5f1..ba1de16ef 100644 Binary files a/doc/info/aa_rtee.gif and b/doc/info/aa_rtee.gif differ diff --git a/doc/info/aa_rvee.gif b/doc/info/aa_rvee.gif index 0e5735d2e..6ff7fe446 100644 Binary files a/doc/info/aa_rvee.gif and b/doc/info/aa_rvee.gif differ diff --git a/doc/info/aa_tee.gif b/doc/info/aa_tee.gif index b374634a4..cde2a2dfd 100644 Binary files a/doc/info/aa_tee.gif and b/doc/info/aa_tee.gif differ diff --git a/doc/info/aa_vee.gif b/doc/info/aa_vee.gif index 4f5d73d28..6b3c347ad 100644 Binary files a/doc/info/aa_vee.gif and b/doc/info/aa_vee.gif differ diff --git a/doc/info/arrowgen.tcl b/doc/info/arrowgen.tcl index a2c95dd89..5c2df7240 100755 --- a/doc/info/arrowgen.tcl +++ b/doc/info/arrowgen.tcl @@ -3,12 +3,16 @@ set arrows { box crow + curve diamond dot + icurve inv lbox lcrow + lcurve ldiamond + licurve linv lnormal ltee @@ -30,7 +34,9 @@ set arrows { ornormal rbox rcrow + rcurve rdiamond + ricurve rinv rnormal rtee @@ -42,18 +48,18 @@ set arrows { set arrowexamples { box crow + curve diamond dot ediamond empty - forward halfopen + icurve inv invdot invempty invodot lteeoldiamond - nohead none normal obox diff --git a/doc/infosrc/Makefile.old b/doc/infosrc/Makefile.old index 42c4b681a..744c65f5b 100644 --- a/doc/infosrc/Makefile.old +++ b/doc/infosrc/Makefile.old @@ -61,7 +61,7 @@ SGIF = Mcircle.gif Mdiamond.gif Msquare.gif box.gif \ proteinstab.gif rpromoter.gif rarrow.gif larrow.gif lpromoter.gif AGIF = a_normal.gif a_inv.gif a_dot.gif a_invdot.gif a_odot.gif \ - a_invodot.gif a_curve.gif a_none.gif \ + a_invodot.gif a_curve.gif a_icurve.gif a_none.gif \ a_tee.gif a_empty.gif a_invempty.gif a_open.gif \ a_diamond.gif a_odiamond.gif a_box.gif a_obox.gif a_crow.gif \ a_halfopen.gif a_ediamond.gif a_lteeoldiamond.gif @@ -75,7 +75,9 @@ A2GIF= aa_box.gif aa_lbox.gif aa_rbox.gif aa_obox.gif aa_olbox.gif aa_orbox.gif\ aa_normal.gif aa_lnormal.gif aa_rnormal.gif aa_onormal.gif aa_olnormal.gif aa_ornormal.gif\ aa_tee.gif aa_ltee.gif aa_rtee.gif \ aa_vee.gif aa_lvee.gif aa_rvee.gif \ - aa_curve.gif aa_lcurve.gif aa_rcurve.gif + aa_curve.gif aa_lcurve.gif aa_rcurve.gif \ + aa_icurve.gif aa_licurve.gif aa_ricurve.gif + GIF = $(SGIF) $(AGIF) $(MGIF) $(A2GIF) $(XGIF) diff --git a/doc/infosrc/arrow_grammar b/doc/infosrc/arrow_grammar index 1cb3fad30..10714ac43 100644 --- a/doc/infosrc/arrow_grammar +++ b/doc/infosrc/arrow_grammar @@ -2,4 +2,4 @@ arrowname = aname [ aname [ aname [ aname ] ] ] aname = [ modifiers ] shape modifiers = [ 'o' ] [ side ] side = 'l' | 'r' -shape = T_box | T_crow | T_curve | T_diamond | T_dot | T_inv | T_none | T_normal | T_tee | T_vee +shape = T_box | T_crow | T_curve | T_icurve | T_diamond | T_dot | T_inv | T_none | T_normal | T_tee | T_vee diff --git a/doc/infosrc/arrows.2 b/doc/infosrc/arrows.2 index cd17351b5..7986d74b5 100644 --- a/doc/infosrc/arrows.2 +++ b/doc/infosrc/arrows.2 @@ -8,13 +8,18 @@ The primitive shapes are: "crow" "curve" "diamond" - "dot" + "dot" + "icurve" "inv" "none" + + + + "normal" "tee" "vee" @@ -58,6 +63,7 @@ The following table indicates which modifiers are allowed with which shapes. curve diamond dot + icurve inv none normal @@ -69,13 +75,13 @@ The following table indicates which modifiers are allowed with which shapes.

-This yields 39 different arrow shapes. The optional second, third, fourth shapes -can independently be any of the 39, except the last cannot be none as +This yields 42 different arrow shapes. The optional second, third, fourth shapes +can independently be any of the 42, except the last cannot be none as this would create a redundant shape. -Thus, there are 38 · 393 + 38 · 392 + 38 · 39 + 39 = 2,313,441 different combinations. +Thus, there are 41 · 423 + 41 · 422 + 41 · 42 + 42 = 3,111,696 different combinations.

-The following display contains the 39 combinations possible with a single +The following display contains the 42 combinations possible with a single arrow shape. The node attached to the arrow is not drawn but would appear on the right side of the edge.

diff --git a/graphs/directed/arrows.gv b/graphs/directed/arrows.gv index a05f566c4..1fcb3eff8 100644 --- a/graphs/directed/arrows.gv +++ b/graphs/directed/arrows.gv @@ -80,4 +80,10 @@ digraph G { lcurve -> lcurvelcurve [arrowhead=lcurvelcurve label=lcurvelcurve] _curve -> rcurve [arrowhead=rcurve label=rcurve] rcurve -> rcurvercurve [arrowhead=rcurvercurve label=rcurvercurve] + _icurve -> icurve [arrowhead=icurve label=icurve] + icurve -> icurveicurve [arrowhead=icurveicurve label=icurveicurve] + _icurve -> licurve [arrowhead=licurve label=licurve] + licurve -> licurvelicurve [arrowhead=licurvelicurve label=licurvelicurve] + _icurve -> ricurve [arrowhead=ricurve label=ricurve] + ricurve -> ricurvericurve [arrowhead=ricurvericurve label=ricurvericurve] } diff --git a/lib/common/arrows.c b/lib/common/arrows.c index 5dedb1ad6..989eb9e55 100644 --- a/lib/common/arrows.c +++ b/lib/common/arrows.c @@ -103,6 +103,7 @@ static arrowname_t Arrownames[] = { /* Note that ARR_MOD_OPEN has expected meaning for ARR_TYPE_NORM shape */ {"mpty", ARR_TYPE_NORM}, {"curve", ARR_TYPE_CURVE}, + {"icurve", (ARR_TYPE_CURVE | ARR_MOD_INV)}, {(char *) 0, ARR_TYPE_NONE} }; @@ -644,11 +645,20 @@ static void arrow_type_curve(GVJ_t* job, pointf p, pointf u, double arrowsize, d AF[3].x = p.x - v.x + w.x; AF[3].y = p.y - v.y + w.y; - AF[1].x = p.x + 0.95 * v.x + w.x - w.x * 4.0 / 3.0; - AF[1].y = AF[0].y - w.y * 4.0 / 3.0; + if (flag & ARR_MOD_INV) { /* ----(-| */ + AF[1].x = p.x + 0.95 * v.x + w.x + w.x * 4.0 / 3.0; + AF[1].y = AF[0].y + w.y * 4.0 / 3.0; - AF[2].x = p.x - 0.95 * v.x + w.x - w.x * 4.0 / 3.0; - AF[2].y = AF[3].y - w.y * 4.0 / 3.0; + AF[2].x = p.x - 0.95 * v.x + w.x + w.x * 4.0 / 3.0; + AF[2].y = AF[3].y + w.y * 4.0 / 3.0; + } + else { /* ----)-| */ + AF[1].x = p.x + 0.95 * v.x + w.x - w.x * 4.0 / 3.0; + AF[1].y = AF[0].y - w.y * 4.0 / 3.0; + + AF[2].x = p.x - 0.95 * v.x + w.x - w.x * 4.0 / 3.0; + AF[2].y = AF[3].y - w.y * 4.0 / 3.0; + } gvrender_polyline(job, a, 2); if (flag & ARR_MOD_LEFT)