diff options
author | Jeffrey H. Kingston <jeff@it.usyd.edu.au> | 2010-09-14 20:40:57 +0000 |
---|---|---|
committer | Jeffrey H. Kingston <jeff@it.usyd.edu.au> | 2010-09-14 20:40:57 +0000 |
commit | 26230a416563decd82a0af827c0987b8628c5ef9 (patch) | |
tree | ff226c95db8ba7104bc0f8b1d16a3a4b481c6949 /include | |
parent | 51fe0cfa3e3ba27f55ff7d14a7fe077cc31ed0b7 (diff) | |
download | lout-26230a416563decd82a0af827c0987b8628c5ef9.tar.gz |
Lout 3.34.
git-svn-id: http://svn.savannah.nongnu.org/svn/lout/trunk@37 9365b830-b601-4143-9ba8-b4a8e2c3339c
Diffstat (limited to 'include')
-rw-r--r-- | include/bsf | 38 | ||||
-rw-r--r-- | include/diag | 170 | ||||
-rw-r--r-- | include/diagf | 1144 | ||||
-rw-r--r-- | include/diagf.lpg | 11 | ||||
-rw-r--r-- | include/dsf | 5 | ||||
-rw-r--r-- | include/npf | 11 |
6 files changed, 1362 insertions, 17 deletions
diff --git a/include/bsf b/include/bsf index dbd903f..0b40f3e 100644 --- a/include/bsf +++ b/include/bsf @@ -104,6 +104,8 @@ export @ListLabelWidth @ListLabelRight @ListLabelRightGap @ListFont @ListBreak @NumberSeparator + @Pipe @PipeVerbatim @PipeRawVerbatim + @Word @Roman @UCRoman @Alpha @UCAlpha @FnBullets @FnSymbols @Months @ShortMonths @WeekDays @ShortWeekDays @TwelveHours @ShortHours @MeriDiems @ShortMeriDiems @@ -282,6 +284,42 @@ def @BasicSetup ########################################################################### # # + # @Pipe, @PipeVerbatim, and @PipeRawVerbatim # + # # + ########################################################################### + + def @Pipe + left command + right x + { + def @Filter { "cat" @FilterIn "|" command ">" @FilterOut } + + x + } + + def @PipeVerbatim + left command + right x + { + def @Filter { + "(echo @Verbatim @Begin ; (cat" @FilterIn "|" command "); echo @End @Verbatim ) >" @FilterOut } + + x + } + + def @PipeRawVerbatim + left command + right x + { + def @Filter { + "(echo @RawVerbatim @Begin ; (cat" @FilterIn "|" command "); echo @End @Verbatim ) >" @FilterOut } + + x + } + + + ########################################################################### + # # # @Sym, @Ding font symbols, and miscellaneous special characters. # # # ########################################################################### diff --git a/include/diag b/include/diag index a7c2de3..0f57ba3 100644 --- a/include/diag +++ b/include/diag @@ -377,6 +377,176 @@ ############################################################################# # # + # @DNode options # + # # + ############################################################################# + + # doutline { box } + # dmargin { 0.6f } + # dshadow { 0.4f } + # dsides { 3 } + # dangle { "dup 180 exch div" } # 180d / sides + # dtranslate { } + # doutlinestyle { solid } + # doutlinedashlength { 0.2f } + # doutlinewidth { thin } + # dpaint { none } + # dtexture { solid } + # dfont { } + # dbreak { } + # dformat { @Body } + # dvalign { ctr } + # dvsize { } + # dvindent { ctr } + # dvstrut { no } + # dvmargin { } + # dtopmargin { } + # dfootmargin { } + # dhalign { ctr } + # dhsize { } + # dhindent { ctr } + # dhstrut { no } + # dhmargin { } + # dleftmargin { } + # drightmargin { } + # dnodelabel { } + # dnodelabelmargin { 0.2f } + # dnodelabelfont { "-2p" } + # dnodelabelbreak { ragged nohyphen } + # dnodelabelformat { @Body } + # dnodelabelpos { } + # dnodelabelangle { horizontal } + # dnodelabelprox { outside } + # dnodelabelctr { no } + # dnodelabeladjust { 0 0 } + # dalabel { } + # dalabelmargin { } + # dalabelfont { } + # dalabelbreak { } + # dalabelformat { } + # dalabelpos { NE } + # dalabelangle { } + # dalabelprox { } + # dalabelctr { } + # dalabeladjust { } + # dblabel { } + # dblabelmargin { } + # dblabelfont { } + # dblabelbreak { } + # dblabelformat { } + # dblabelpos { NW } + # dblabelangle { } + # dblabelprox { } + # dblabelctr { } + # dblabeladjust { } + # dclabel { } + # dclabelmargin { } + # dclabelfont { } + # dclabelbreak { } + # dclabelformat { } + # dclabelpos { SW } + # dclabelangle { } + # dclabelprox { } + # dclabelctr { } + # dclabeladjust { } + # ddlabel { } + # ddlabelmargin { } + # ddlabelfont { } + # ddlabelbreak { } + # ddlabelformat { } + # ddlabelpos { SE } + # ddlabelangle { } + # ddlabelprox { } + # ddlabelctr { } + # ddlabeladjust { } + + ############################################################################# + # # + # @ENode options # + # # + ############################################################################# + + # eoutline { box } + # emargin { 0.6f } + # eshadow { 0.4f } + # esides { 3 } + # eangle { "dup 180 exch div" } # 180d / sides + # etranslate { } + # eoutlinestyle { solid } + # eoutlinedashlength { 0.2f } + # eoutlinewidth { thin } + # epaint { none } + # etexture { solid } + # efont { } + # ebreak { } + # eformat { @Body } + # evalign { ctr } + # evsize { } + # evindent { ctr } + # evstrut { no } + # evmargin { } + # etopmargin { } + # efootmargin { } + # ehalign { ctr } + # ehsize { } + # ehindent { ctr } + # ehstrut { no } + # ehmargin { } + # eleftmargin { } + # erightmargin { } + # enodelabel { } + # enodelabelmargin { 0.2f } + # enodelabelfont { "-2p" } + # enodelabelbreak { ragged nohyphen } + # enodelabelformat { @Body } + # enodelabelpos { } + # enodelabelangle { horizontal } + # enodelabelprox { outside } + # enodelabelctr { no } + # enodelabeladjust { 0 0 } + # ealabel { } + # ealabelmargin { } + # ealabelfont { } + # ealabelbreak { } + # ealabelformat { } + # ealabelpos { NE } + # ealabelangle { } + # ealabelprox { } + # ealabelctr { } + # ealabeladjust { } + # eblabel { } + # eblabelmargin { } + # eblabelfont { } + # eblabelbreak { } + # eblabelformat { } + # eblabelpos { NW } + # eblabelangle { } + # eblabelprox { } + # eblabelctr { } + # eblabeladjust { } + # eclabel { } + # eclabelmargin { } + # eclabelfont { } + # eclabelbreak { } + # eclabelformat { } + # eclabelpos { SW } + # eclabelangle { } + # eclabelprox { } + # eclabelctr { } + # eclabeladjust { } + # edlabel { } + # edlabelmargin { } + # edlabelfont { } + # edlabelbreak { } + # edlabelformat { } + # edlabelpos { SE } + # edlabelangle { } + # edlabelprox { } + # edlabelctr { } + # edlabeladjust { } + + ############################################################################# + # # # Link options # # # ############################################################################# diff --git a/include/diagf b/include/diagf index 5c9cbfe..cdff1a9 100644 --- a/include/diagf +++ b/include/diagf @@ -509,6 +509,244 @@ def @DiagSetup ########################################################################### # # + # @DNode options of @DiagSetup # + # # + ########################################################################### + + import @Geometry named doutline + named margin {} + named shadow {} + named sides {} + named angle {} + { box } + named dmargin { 0.6f } + import @Geometry named dshadow { 0.4f } + import @Geometry named dsides { 3 } + import @Geometry named dangle { "dup 180 exch div" } + named dtranslate { } + named doutlinestyle + named solid { "/ldiagsolid" } + named dashed { "/ldiagdashed" } + named cdashed { "/ldiagcdashed" } + named dotdashed { "/ldiagdotdashed" } + named dotcdashed { "/ldiagdotcdashed" } + named dotdotdashed { "/ldiagdotdotdashed" } + named dotdotcdashed { "/ldiagdotdotcdashed" } + named dotdotdotdashed { "/ldiagdotdotdotdashed" } + named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } + named dotted { "/ldiagdotted" } + named noline { "/ldiagnoline" } + { solid } + import @Geometry named doutlinedashlength { 0.2f } + import @Geometry named doutlinewidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { thin } + named dpaint { none } + import @TextureImport named dtexture{ solid } + named dfont { } + named dbreak { } + named dformat right @Body { @Body } + + named dvalign { ctr } + named dvsize { } + named dvindent { ctr } + named dvstrut + named no { 0.0f } + named yes { 1.0f } + { no } + named dvmargin { } + named dtopmargin { } + named dfootmargin { } + + named dhalign { ctr } + named dhsize { } + named dhindent { ctr } + named dhstrut + named no { 0.0f } + named yes { 1.0f } + { no } + named dhmargin { } + named dleftmargin { } + named drightmargin { } + + named dnodelabel { } + named dnodelabelmargin { 0.2f } + named dnodelabelfont { -2p } + named dnodelabelbreak { ragged nohyphen } + named dnodelabelformat right @Body { @Body } + import @Geometry named dnodelabelpos{ } + import @Geometry named dnodelabelangle { horizontal } + named dnodelabelprox { outside } + named dnodelabelctr { no } + import @Geometry named dnodelabeladjust { 0 0 } + + named dalabel { } + named dalabelmargin { } + named dalabelfont { } + named dalabelbreak { } + named dalabelformat right @Body { } + import @Geometry named dalabelpos { NE } + import @Geometry named dalabelangle { } + named dalabelprox { } + named dalabelctr { } + import @Geometry named dalabeladjust{ } + + named dblabel { } + named dblabelmargin { } + named dblabelfont { } + named dblabelbreak { } + named dblabelformat right @Body { } + import @Geometry named dblabelpos { NW } + import @Geometry named dblabelangle { } + named dblabelprox { } + named dblabelctr { } + import @Geometry named dblabeladjust{ } + + named dclabel { } + named dclabelmargin { } + named dclabelfont { } + named dclabelbreak { } + named dclabelformat right @Body { } + import @Geometry named dclabelpos { SW } + import @Geometry named dclabelangle { } + named dclabelprox { } + named dclabelctr { } + import @Geometry named dclabeladjust{ } + + named ddlabel { } + named ddlabelmargin { } + named ddlabelfont { } + named ddlabelbreak { } + named ddlabelformat right @Body { } + import @Geometry named ddlabelpos { SE } + import @Geometry named ddlabelangle { } + named ddlabelprox { } + named ddlabelctr { } + import @Geometry named ddlabeladjust{ } + + ########################################################################### + # # + # @ENode options of @DiagSetup # + # # + ########################################################################### + + import @Geometry named eoutline + named margin {} + named shadow {} + named sides {} + named angle {} + { box } + named emargin { 0.6f } + import @Geometry named eshadow { 0.4f } + import @Geometry named esides { 3 } + import @Geometry named eangle { "dup 180 exch div" } + named etranslate { } + named eoutlinestyle + named solid { "/ldiagsolid" } + named dashed { "/ldiagdashed" } + named cdashed { "/ldiagcdashed" } + named dotdashed { "/ldiagdotdashed" } + named dotcdashed { "/ldiagdotcdashed" } + named dotdotdashed { "/ldiagdotdotdashed" } + named dotdotcdashed { "/ldiagdotdotcdashed" } + named dotdotdotdashed { "/ldiagdotdotdotdashed" } + named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } + named dotted { "/ldiagdotted" } + named noline { "/ldiagnoline" } + { solid } + import @Geometry named eoutlinedashlength { 0.2f } + import @Geometry named eoutlinewidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { thin } + named epaint { none } + import @TextureImport named etexture{ solid } + named efont { } + named ebreak { } + named eformat right @Body { @Body } + + named evalign { ctr } + named evsize { } + named evindent { ctr } + named evstrut + named no { 0.0f } + named yes { 1.0f } + { no } + named evmargin { } + named etopmargin { } + named efootmargin { } + + named ehalign { ctr } + named ehsize { } + named ehindent { ctr } + named ehstrut + named no { 0.0f } + named yes { 1.0f } + { no } + named ehmargin { } + named eleftmargin { } + named erightmargin { } + + named enodelabel { } + named enodelabelmargin { 0.2f } + named enodelabelfont { -2p } + named enodelabelbreak { ragged nohyphen } + named enodelabelformat right @Body { @Body } + import @Geometry named enodelabelpos{ } + import @Geometry named enodelabelangle { horizontal } + named enodelabelprox { outside } + named enodelabelctr { no } + import @Geometry named enodelabeladjust { 0 0 } + + named ealabel { } + named ealabelmargin { } + named ealabelfont { } + named ealabelbreak { } + named ealabelformat right @Body { } + import @Geometry named ealabelpos { NE } + import @Geometry named ealabelangle { } + named ealabelprox { } + named ealabelctr { } + import @Geometry named ealabeladjust{ } + + named eblabel { } + named eblabelmargin { } + named eblabelfont { } + named eblabelbreak { } + named eblabelformat right @Body { } + import @Geometry named eblabelpos { NW } + import @Geometry named eblabelangle { } + named eblabelprox { } + named eblabelctr { } + import @Geometry named eblabeladjust{ } + + named eclabel { } + named eclabelmargin { } + named eclabelfont { } + named eclabelbreak { } + named eclabelformat right @Body { } + import @Geometry named eclabelpos { SW } + import @Geometry named eclabelangle { } + named eclabelprox { } + named eclabelctr { } + import @Geometry named eclabeladjust{ } + + named edlabel { } + named edlabelmargin { } + named edlabelfont { } + named edlabelbreak { } + named edlabelformat right @Body { } + import @Geometry named edlabelpos { SE } + import @Geometry named edlabelangle { } + named edlabelprox { } + named edlabelctr { } + import @Geometry named edlabeladjust{ } + + ########################################################################### + # # # @Link options of @DiagSetup # # # ########################################################################### @@ -673,12 +911,12 @@ def @DiagSetup export "::" @ShowPoints @ShowTags @ShowDirections @CatchTags @Transform - @Node @ANode @BNode @CNode + @Node @ANode @BNode @CNode @DNode @ENode @Box @CurveBox @ShadowBox @Square @Diamond @Polygon @Isosceles @Ellipse @Circle - @ArrowHead @SolidArrowHead @OpenArrowHead @HalfOpenArrowHead - @SolidCurvedArrowHead @OpenCurvedArrowHead @HalfOpenCurvedArrowHead - @CircleArrowHead @BoxArrowHead + @ArrowHead @SolidArrowHead @SolidWithBarArrowHead @OpenArrowHead + @HalfOpenArrowHead @SolidCurvedArrowHead @OpenCurvedArrowHead + @HalfOpenCurvedArrowHead @CircleArrowHead @BoxArrowHead @Link @Line @DoubleLine @Arrow @DoubleArrow @Curve @CurveArrow @@ -687,6 +925,7 @@ def @DiagSetup @HVLine @HVArrow @VHLine @VHArrow @HVCurve @HVCurveArrow @VHCurve @VHCurveArrow @LVRLine @LVRArrow @RVLLine @RVLArrow + @DHULine @DHUArrow @UHDLine @UHDArrow @LVRCurve @LVRCurveArrow @RVLCurve @RVLCurveArrow @DHUCurve @DHUCurveArrow @UHDCurve @UHDCurveArrow @HVHLine @HVHArrow @VHVLine @VHVArrow @@ -698,7 +937,7 @@ def @DiagSetup @StartRight @StartUp @StartLeft @StartDown @StartRightRight @StartRightRightRight @StartRightDown - @Skip @XCell @ACell @BCell @CCell + @Skip @XCell @ACell @BCell @CCell @DCell @ECell @Sequence @OneOrBoth @Select @Optional @OptionalDiverted @Diverted @Loop @LoopOpposite @Repeat @RepeatOpposite @RepeatDiverted @@ -985,6 +1224,142 @@ def @DiagSetup ####################################################################### # # + # @DNode options of @Diag # + # # + ####################################################################### + + import @Geometry named doutline + named margin {} + named shadow {} + named sides {} + named angle {} + { doutline + margin { margin } + shadow { shadow } + sides { sides } + angle { angle } + } + named dmargin { dmargin } + import @Geometry named dshadow { dshadow } + import @Geometry named dsides { dsides } + import @Geometry named dangle { dangle } + named dtranslate { dtranslate } + named dnodetag { } + named doutlinestyle + named solid { "/ldiagsolid" } + named dashed { "/ldiagdashed" } + named cdashed { "/ldiagcdashed" } + named dotdashed { "/ldiagdotdashed" } + named dotcdashed { "/ldiagdotcdashed" } + named dotdotdashed { "/ldiagdotdotdashed" } + named dotdotcdashed { "/ldiagdotdotcdashed" } + named dotdotdotdashed { "/ldiagdotdotdotdashed" } + named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } + named dotted { "/ldiagdotted" } + named noline { "/ldiagnoline" } + { doutlinestyle } + import @Geometry named doutlinedashlength{ doutlinedashlength } + import @Geometry named doutlinewidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { doutlinewidth } + named dpaint { dpaint } + import @TextureImport named dtexture { dtexture } + named dfont { dfont } + named dbreak { dbreak } + named dformat right @Body { dformat @Body } + named dvalign { dvalign } + named dvsize { dvsize } + named dvindent { dvindent } + named dvstrut + named no { 0.0f } + named yes { 1.0f } + { dvstrut } + named dvmargin { dvmargin } + named dtopmargin { dtopmargin } + named dfootmargin { dfootmargin } + named dhalign { dhalign } + named dhsize { dhsize } + named dhindent { dhindent } + named dhstrut + named no { 0.0f } + named yes { 1.0f } + { dhstrut } + named dhmargin { dhmargin } + named dleftmargin { dleftmargin } + named drightmargin { drightmargin } + + ####################################################################### + # # + # @ENode options of @Diag # + # # + ####################################################################### + + import @Geometry named eoutline + named margin {} + named shadow {} + named sides {} + named angle {} + { eoutline + margin { margin } + shadow { shadow } + sides { sides } + angle { angle } + } + named emargin { emargin } + import @Geometry named eshadow { eshadow } + import @Geometry named esides { esides } + import @Geometry named eangle { eangle } + named etranslate { etranslate } + named enodetag { } + named eoutlinestyle + named solid { "/ldiagsolid" } + named dashed { "/ldiagdashed" } + named cdashed { "/ldiagcdashed" } + named dotdashed { "/ldiagdotdashed" } + named dotcdashed { "/ldiagdotcdashed" } + named dotdotdashed { "/ldiagdotdotdashed" } + named dotdotcdashed { "/ldiagdotdotcdashed" } + named dotdotdotdashed { "/ldiagdotdotdotdashed" } + named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } + named dotted { "/ldiagdotted" } + named noline { "/ldiagnoline" } + { eoutlinestyle } + import @Geometry named eoutlinedashlength{ eoutlinedashlength } + import @Geometry named eoutlinewidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { eoutlinewidth } + named epaint { epaint } + import @TextureImport named etexture { etexture } + named efont { efont } + named ebreak { ebreak } + named eformat right @Body { eformat @Body } + named evalign { evalign } + named evsize { evsize } + named evindent { evindent } + named evstrut + named no { 0.0f } + named yes { 1.0f } + { evstrut } + named evmargin { evmargin } + named etopmargin { etopmargin } + named efootmargin { efootmargin } + named ehalign { ehalign } + named ehsize { ehsize } + named ehindent { ehindent } + named ehstrut + named no { 0.0f } + named yes { 1.0f } + { ehstrut } + named ehmargin { ehmargin } + named eleftmargin { eleftmargin } + named erightmargin { erightmargin } + + ####################################################################### + # # # @Link options of @Diag # # # ####################################################################### @@ -3697,6 +4072,706 @@ def @DiagSetup ####################################################################### # # + # @DNode # + # # + ####################################################################### + + def @DNode + import @Geometry named translate + named to precedence 10 left x right y { + @BackEnd @Case { + PostScript @Yield { x y "ldiagpsub" } + PDF @Yield {""} + } + } + {} + import @Geometry named rotate { 0d } + import @Geometry named outline + named margin {} + named shadow {} + named sides {} + named angle {} + { doutline + margin { margin } + shadow { shadow } + sides { sides } + angle { angle } + } + named margin { dmargin } + import @Geometry named shadow { dshadow } + import @Geometry named sides { dsides } + import @Geometry named angle { dangle } + named nodetag { dnodetag } + named outlinestyle + named solid { "/ldiagsolid" } + named dashed { "/ldiagdashed" } + named cdashed { "/ldiagcdashed" } + named dotdashed { "/ldiagdotdashed" } + named dotcdashed { "/ldiagdotcdashed" } + named dotdotdashed { "/ldiagdotdotdashed" } + named dotdotcdashed { "/ldiagdotdotcdashed" } + named dotdotdotdashed { "/ldiagdotdotdotdashed" } + named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } + named dotted { "/ldiagdotted" } + named noline { "/ldiagnoline" } + { doutlinestyle } + import @Geometry named outlinedashlength { doutlinedashlength} + import @Geometry named outlinewidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { doutlinewidth } + named paint { dpaint } + import @TextureImport named texture { dtexture } + named font { dfont } + named break { dbreak } + named format right @Body { dformat @Body } + named valign { dvalign } + named vsize { dvsize } + named vindent { dvindent } + named vstrut + named no { 0.0f } + named yes { 1.0f } + { dvstrut } + named vmargin { dvmargin } + named topmargin { dtopmargin } + named footmargin { dfootmargin } + + named halign { dhalign } + named hsize { dhsize } + named hindent { dhindent } + named hstrut + named no { 0.0f } + named yes { 1.0f } + { dhstrut } + named hmargin { dhmargin } + named leftmargin { dleftmargin } + named rightmargin { drightmargin } + + named nodelabel { dnodelabel } + named nodelabelmargin { dnodelabelmargin } + named nodelabelfont { dnodelabelfont } + named nodelabelbreak { dnodelabelbreak } + named nodelabelformat right @Body { dnodelabelformat @Body } + import @Geometry named nodelabelpos { dnodelabelpos } + named nodelabelprox { dnodelabelprox } + import @Geometry named nodelabelangle { dnodelabelangle } + named nodelabelctr { dnodelabelctr } + import @Geometry named nodelabeladjust { dnodelabeladjust } + + named alabel { dalabel } + named alabelmargin { dalabelmargin } + named alabelfont { dalabelfont } + named alabelbreak { dalabelbreak } + named alabelformat right @Body { dalabelformat @Body } + import @Geometry named alabelpos { dalabelpos } + named alabelprox { dalabelprox } + import @Geometry named alabelangle { dalabelangle } + named alabelctr { dalabelctr } + import @Geometry named alabeladjust { calabeladjust } + + named blabel { dblabel } + named blabelmargin { dblabelmargin } + named blabelfont { dblabelfont } + named blabelbreak { dblabelbreak } + named blabelformat right @Body { dblabelformat @Body } + import @Geometry named blabelpos { dblabelpos } + named blabelprox { dblabelprox } + import @Geometry named blabelangle { dblabelangle } + named blabelctr { dblabelctr } + import @Geometry named blabeladjust { dblabeladjust } + + named clabel { dclabel } + named clabelmargin { dclabelmargin } + named clabelfont { dclabelfont } + named clabelbreak { dclabelbreak } + named clabelformat right @Body { dclabelformat @Body } + import @Geometry named clabelpos { dclabelpos } + named clabelprox { dclabelprox } + import @Geometry named clabelangle { dclabelangle } + named clabelctr { dclabelctr } + import @Geometry named clabeladjust { dclabeladjust } + + named dlabel { ddlabel } + named dlabelmargin { ddlabelmargin } + named dlabelfont { ddlabelfont } + named dlabelbreak { ddlabelbreak } + named dlabelformat right @Body { ddlabelformat @Body } + import @Geometry named dlabelpos { ddlabelpos } + named dlabelprox { ddlabelprox } + import @Geometry named dlabelangle { ddlabelangle } + named dlabelctr { ddlabelctr } + import @Geometry named dlabeladjust { ddlabeladjust } + + right @Body + { + + def @LabelPos + left x + right y + { + nodelabelpos @Case { + x @Yield y + else @Yield "" + } + } + + def @If + left cond + right x + { + cond @Case { + { yes Yes } @Yield x + else @Yield "" + } + } + + + def @Strut right x + { + def vs { 0.5w @VShift { vstrut @High } } + def hs { hstrut @Wide } + + @HContract @VContract { + @HContract @VContract x | vs / hs | + } + } + + def @Indent right x + { + x @Case { + { top left } @Yield 0.0rt + { ctr } @Yield 0.5rt + { foot right } @Yield 1.0rt + { mctr } @Yield 0.5bx + else @Yield x + } + } + + def @VSize right x + { + vsize @Case { + "" @Yield x + else @Yield { vsize @High { /{@Indent vindent} x / } } + } + } + + def @HSize right x + { + hsize @Case { + "" @Yield x + else @Yield { hsize @Wide { |{@Indent hindent} x | } } + } + } + + def @Align right x + { + x @Case { + { top left } @Yield 0.0w + { ctr } @Yield 0.5w + { foot right } @Yield 1.0w + { mark } @Yield "+0i" + else @Yield x + } + } + + def @ALabel + { + @DoLabel + which { "a" } + label { alabel @Else nodelabel } + labelmargin { alabelmargin @Else nodelabelmargin } + labelfont { alabelfont @Else nodelabelfont } + labelbreak { alabelbreak @Else nodelabelbreak } + labelformat { alabelformat @Body @Else nodelabelformat @Body} + labelpos { alabelpos @Else nodelabelpos } + labelprox { alabelprox @Else nodelabelprox } + labelangle { alabelangle @Else nodelabelangle } + labelctr { alabelctr @Else nodelabelctr } + labeladjust { alabeladjust @Else nodelabeladjust } + } + + def @BLabel + { + @DoLabel + which { "b" } + label { blabel @Else nodelabel } + labelmargin { blabelmargin @Else nodelabelmargin } + labelfont { blabelfont @Else nodelabelfont } + labelbreak { blabelbreak @Else nodelabelbreak } + labelformat { blabelformat @Body @Else nodelabelformat @Body} + labelpos { blabelpos @Else nodelabelpos } + labelprox { blabelprox @Else nodelabelprox } + labelangle { blabelangle @Else nodelabelangle } + labelctr { blabelctr @Else nodelabelctr } + labeladjust { blabeladjust @Else nodelabeladjust } + } + + def @CLabel + { + @DoLabel + which { "c" } + label { clabel @Else nodelabel } + labelmargin { clabelmargin @Else nodelabelmargin } + labelfont { clabelfont @Else nodelabelfont } + labelbreak { clabelbreak @Else nodelabelbreak } + labelformat { clabelformat @Body @Else nodelabelformat @Body} + labelpos { clabelpos @Else nodelabelpos } + labelprox { clabelprox @Else nodelabelprox } + labelangle { clabelangle @Else nodelabelangle } + labelctr { clabelctr @Else nodelabelctr } + labeladjust { clabeladjust @Else nodelabeladjust } + } + + def @DLabel + { + @DoLabel + which { "d" } + label { dlabel @Else nodelabel } + labelmargin { dlabelmargin @Else nodelabelmargin } + labelfont { dlabelfont @Else nodelabelfont } + labelbreak { dlabelbreak @Else nodelabelbreak } + labelformat { dlabelformat @Body @Else nodelabelformat @Body} + labelpos { dlabelpos @Else nodelabelpos } + labelprox { dlabelprox @Else nodelabelprox } + labelangle { dlabelangle @Else nodelabelangle } + labelctr { dlabelctr @Else nodelabelctr } + labeladjust { dlabeladjust @Else nodelabeladjust } + } + + import @Geometry + def @OutLine + { + @BackEnd @Case { + PostScript @Yield { + outline @Case { + box @Yield { "ldiagbox" } + curvebox @Yield { "("margin") ldiagcurvebox" } + shadowbox @Yield { shadow "ldiagshadow ldiagbox" } + square @Yield { "ldiagsquare" } + diamond @Yield { "ldiagdiamond" } + polygon @Yield { sides angle "ldiagpolygon" } + isosceles @Yield { "ldiagisosceles" } + ellipse @Yield { "ldiagellipse" } + circle @Yield { "ldiagcircle" } + else @Yield { + outline + margin { "("margin") ldiagdecodelength" } + shadow { shadow } + sides { sides } + angle { angle } + } + } + } + PDF @Yield {} + } + } + + def @Value + { + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + { + "ldiagnodebegin [" @OutLine "]" + outlinedashlength "[" outlinestyle "]" + outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "(IN) ldiagpushtagdict" + // + "ldiagpopuptagdict" + } + @Graphic + { + {@Align valign} @VShift {@Align halign} @HShift + @AddMargins + mtop { topmargin @Else vmargin @Else margin } + mfoot { footmargin @Else vmargin @Else margin } + mleft { leftmargin @Else hmargin @Else margin } + mright { rightmargin @Else hmargin @Else margin } + @HSize @VSize @HContract @VContract + font @Font break @Break format @Strut @Body + } + / {alabel @Else nodelabel} @IfNonEmpty @ALabel + / {blabel @Else nodelabel} @IfNonEmpty @BLabel + / {clabel @Else nodelabel} @IfNonEmpty @CLabel + / {dlabel @Else nodelabel} @IfNonEmpty @DLabel + } + } + PDF @Yield {} + } + } + + def @TValue + { + nodetag @Case { + "" @Yield @Value + else @Yield { nodetag:: @Value } + } + } + + translate @Case { + "" @Yield @TValue + else @Yield { + @Null & # so that preceding space gets chewed up + @Transform translate { translate } rotate { rotate } @TValue + } + } + } + + + ####################################################################### + # # + # @ENode # + # # + ####################################################################### + + def @ENode + import @Geometry named translate + named to precedence 10 left x right y { + @BackEnd @Case { + PostScript @Yield { x y "ldiagpsub" } + PDF @Yield {""} + } + } + {} + import @Geometry named rotate { 0d } + import @Geometry named outline + named margin {} + named shadow {} + named sides {} + named angle {} + { eoutline + margin { margin } + shadow { shadow } + sides { sides } + angle { angle } + } + named margin { emargin } + import @Geometry named shadow { eshadow } + import @Geometry named sides { esides } + import @Geometry named angle { eangle } + named nodetag { enodetag } + named outlinestyle + named solid { "/ldiagsolid" } + named dashed { "/ldiagdashed" } + named cdashed { "/ldiagcdashed" } + named dotdashed { "/ldiagdotdashed" } + named dotcdashed { "/ldiagdotcdashed" } + named dotdotdashed { "/ldiagdotdotdashed" } + named dotdotcdashed { "/ldiagdotdotcdashed" } + named dotdotdotdashed { "/ldiagdotdotdotdashed" } + named dotdotdotcdashed { "/ldiagdotdotdotcdashed" } + named dotted { "/ldiagdotted" } + named noline { "/ldiagnoline" } + { eoutlinestyle } + import @Geometry named outlinedashlength { eoutlinedashlength} + import @Geometry named outlinewidth + named thin { 0.04 ft } + named medium { 0.08 ft } + named thick { 0.12 ft } + { eoutlinewidth } + named paint { epaint } + import @TextureImport named texture { etexture } + named font { efont } + named break { ebreak } + named format right @Body { eformat @Body } + named valign { evalign } + named vsize { evsize } + named vindent { evindent } + named vstrut + named no { 0.0f } + named yes { 1.0f } + { evstrut } + named vmargin { evmargin } + named topmargin { etopmargin } + named footmargin { efootmargin } + + named halign { ehalign } + named hsize { ehsize } + named hindent { ehindent } + named hstrut + named no { 0.0f } + named yes { 1.0f } + { ehstrut } + named hmargin { ehmargin } + named leftmargin { eleftmargin } + named rightmargin { erightmargin } + + named nodelabel { enodelabel } + named nodelabelmargin { enodelabelmargin } + named nodelabelfont { enodelabelfont } + named nodelabelbreak { enodelabelbreak } + named nodelabelformat right @Body { enodelabelformat @Body } + import @Geometry named nodelabelpos { enodelabelpos } + named nodelabelprox { enodelabelprox } + import @Geometry named nodelabelangle { enodelabelangle } + named nodelabelctr { enodelabelctr } + import @Geometry named nodelabeladjust { enodelabeladjust } + + named alabel { ealabel } + named alabelmargin { ealabelmargin } + named alabelfont { ealabelfont } + named alabelbreak { ealabelbreak } + named alabelformat right @Body { ealabelformat @Body } + import @Geometry named alabelpos { ealabelpos } + named alabelprox { ealabelprox } + import @Geometry named alabelangle { ealabelangle } + named alabelctr { ealabelctr } + import @Geometry named alabeladjust { ealabeladjust } + + named blabel { eblabel } + named blabelmargin { eblabelmargin } + named blabelfont { eblabelfont } + named blabelbreak { eblabelbreak } + named blabelformat right @Body { eblabelformat @Body } + import @Geometry named blabelpos { eblabelpos } + named blabelprox { eblabelprox } + import @Geometry named blabelangle { eblabelangle } + named blabelctr { eblabelctr } + import @Geometry named blabeladjust { eblabeladjust } + + named clabel { eclabel } + named clabelmargin { eclabelmargin } + named clabelfont { eclabelfont } + named clabelbreak { eclabelbreak } + named clabelformat right @Body { eclabelformat @Body } + import @Geometry named clabelpos { eclabelpos } + named clabelprox { eclabelprox } + import @Geometry named clabelangle { eclabelangle } + named clabelctr { eclabelctr } + import @Geometry named clabeladjust { eclabeladjust } + + named dlabel { edlabel } + named dlabelmargin { edlabelmargin } + named dlabelfont { edlabelfont } + named dlabelbreak { edlabelbreak } + named dlabelformat right @Body { edlabelformat @Body } + import @Geometry named dlabelpos { edlabelpos } + named dlabelprox { edlabelprox } + import @Geometry named dlabelangle { edlabelangle } + named dlabelctr { edlabelctr } + import @Geometry named dlabeladjust { edlabeladjust } + + right @Body + { + + def @LabelPos + left x + right y + { + nodelabelpos @Case { + x @Yield y + else @Yield "" + } + } + + def @If + left cond + right x + { + cond @Case { + { yes Yes } @Yield x + else @Yield "" + } + } + + + def @Strut right x + { + def vs { 0.5w @VShift { vstrut @High } } + def hs { hstrut @Wide } + + @HContract @VContract { + @HContract @VContract x | vs / hs | + } + } + + def @Indent right x + { + x @Case { + { top left } @Yield 0.0rt + { ctr } @Yield 0.5rt + { foot right } @Yield 1.0rt + { mctr } @Yield 0.5bx + else @Yield x + } + } + + def @VSize right x + { + vsize @Case { + "" @Yield x + else @Yield { vsize @High { /{@Indent vindent} x / } } + } + } + + def @HSize right x + { + hsize @Case { + "" @Yield x + else @Yield { hsize @Wide { |{@Indent hindent} x | } } + } + } + + def @Align right x + { + x @Case { + { top left } @Yield 0.0w + { ctr } @Yield 0.5w + { foot right } @Yield 1.0w + { mark } @Yield "+0i" + else @Yield x + } + } + + def @ALabel + { + @DoLabel + which { "a" } + label { alabel @Else nodelabel } + labelmargin { alabelmargin @Else nodelabelmargin } + labelfont { alabelfont @Else nodelabelfont } + labelbreak { alabelbreak @Else nodelabelbreak } + labelformat { alabelformat @Body @Else nodelabelformat @Body} + labelpos { alabelpos @Else nodelabelpos } + labelprox { alabelprox @Else nodelabelprox } + labelangle { alabelangle @Else nodelabelangle } + labelctr { alabelctr @Else nodelabelctr } + labeladjust { alabeladjust @Else nodelabeladjust } + } + + def @BLabel + { + @DoLabel + which { "b" } + label { blabel @Else nodelabel } + labelmargin { blabelmargin @Else nodelabelmargin } + labelfont { blabelfont @Else nodelabelfont } + labelbreak { blabelbreak @Else nodelabelbreak } + labelformat { blabelformat @Body @Else nodelabelformat @Body} + labelpos { blabelpos @Else nodelabelpos } + labelprox { blabelprox @Else nodelabelprox } + labelangle { blabelangle @Else nodelabelangle } + labelctr { blabelctr @Else nodelabelctr } + labeladjust { blabeladjust @Else nodelabeladjust } + } + + def @CLabel + { + @DoLabel + which { "c" } + label { clabel @Else nodelabel } + labelmargin { clabelmargin @Else nodelabelmargin } + labelfont { clabelfont @Else nodelabelfont } + labelbreak { clabelbreak @Else nodelabelbreak } + labelformat { clabelformat @Body @Else nodelabelformat @Body} + labelpos { clabelpos @Else nodelabelpos } + labelprox { clabelprox @Else nodelabelprox } + labelangle { clabelangle @Else nodelabelangle } + labelctr { clabelctr @Else nodelabelctr } + labeladjust { clabeladjust @Else nodelabeladjust } + } + + def @DLabel + { + @DoLabel + which { "d" } + label { dlabel @Else nodelabel } + labelmargin { dlabelmargin @Else nodelabelmargin } + labelfont { dlabelfont @Else nodelabelfont } + labelbreak { dlabelbreak @Else nodelabelbreak } + labelformat { dlabelformat @Body @Else nodelabelformat @Body} + labelpos { dlabelpos @Else nodelabelpos } + labelprox { dlabelprox @Else nodelabelprox } + labelangle { dlabelangle @Else nodelabelangle } + labelctr { dlabelctr @Else nodelabelctr } + labeladjust { dlabeladjust @Else nodelabeladjust } + } + + import @Geometry + def @OutLine + { + @BackEnd @Case { + PostScript @Yield { + outline @Case { + box @Yield { "ldiagbox" } + curvebox @Yield { "("margin") ldiagcurvebox" } + shadowbox @Yield { shadow "ldiagshadow ldiagbox" } + square @Yield { "ldiagsquare" } + diamond @Yield { "ldiagdiamond" } + polygon @Yield { sides angle "ldiagpolygon" } + isosceles @Yield { "ldiagisosceles" } + ellipse @Yield { "ldiagellipse" } + circle @Yield { "ldiagcircle" } + else @Yield { + outline + margin { "("margin") ldiagdecodelength" } + shadow { shadow } + sides { sides } + angle { angle } + } + } + } + PDF @Yield {} + } + } + + def @Value + { + @BackEnd @Case { + PostScript @Yield { + @HContract @VContract + { + { + "ldiagnodebegin [" @OutLine "]" + outlinedashlength "[" outlinestyle "]" + outlinewidth paint @PSAddPaint texture "ldiagnodeend" + "(IN) ldiagpushtagdict" + // + "ldiagpopuptagdict" + } + @Graphic + { + {@Align valign} @VShift {@Align halign} @HShift + @AddMargins + mtop { topmargin @Else vmargin @Else margin } + mfoot { footmargin @Else vmargin @Else margin } + mleft { leftmargin @Else hmargin @Else margin } + mright { rightmargin @Else hmargin @Else margin } + @HSize @VSize @HContract @VContract + font @Font break @Break format @Strut @Body + } + / {alabel @Else nodelabel} @IfNonEmpty @ALabel + / {blabel @Else nodelabel} @IfNonEmpty @BLabel + / {clabel @Else nodelabel} @IfNonEmpty @CLabel + / {dlabel @Else nodelabel} @IfNonEmpty @DLabel + } + } + PDF @Yield {} + } + } + + def @TValue + { + nodetag @Case { + "" @Yield @Value + else @Yield { nodetag:: @Value } + } + } + + translate @Case { + "" @Yield @TValue + else @Yield { + @Null & # so that preceding space gets chewed up + @Transform translate { translate } rotate { rotate } @TValue + } + } + } + + + ####################################################################### + # # # @Box, @CurveBox, and other standard node abbreviations # # # ####################################################################### @@ -3759,6 +4834,30 @@ def @DiagSetup } } + def @SolidWithBarArrowHead + named width { arrowwidth } + named length { arrowlength } + named pathwidth { pathwidth } + { + @InsulatedNode + paint { nochange } + texture { solid } + outlinestyle { noline } + outlinewidth { pathwidth } + outline { + @BackEnd @Case { + PostScript @Yield { + pathwidth "ldiagsolidwithbararrowhead" + # 0 0 xsize ysize * 0.5 0 ysize + } + PDF @Yield {} + } + } + { + length @Wide width @High + } + } + def @OpenArrowHead named width { arrowwidth } named length { arrowlength } @@ -3985,6 +5084,9 @@ def @DiagSetup solid @Yield @SolidArrowHead width { width } length { length } pathwidth { pathwidth } + solidwithbar @Yield @SolidWithBarArrowHead + width { width } length { length } + pathwidth { pathwidth } halfopen @Yield @HalfOpenArrowHead width { width } length { length } pathwidth { pathwidth } @@ -6018,17 +7120,29 @@ def @DiagSetup macro @LineUpFrom { no @ArrowUpFrom } macro @LineDownFrom { no @ArrowDownFrom } - macro @Right { "1p" } - macro @Up { "2p" } - macro @Left { "3p" } - macro @Down { "4p" } + macro @Right { "right" } + macro @Up { "up" } + macro @Left { "left" } + macro @Down { "down" } + + def @CurrDirection { @GetContext "diag_dirn" } + + def @GoRight right x { {"diag_dirn" @Yield @Right} @SetContext x } + def @GoUp right x { {"diag_dirn" @Yield @Up } @SetContext x } + def @GoLeft right x { {"diag_dirn" @Yield @Left } @SetContext x } + def @GoDown right x { {"diag_dirn" @Yield @Down } @SetContext x } + + # macro @Right { "1p" } + # macro @Up { "2p" } + # macro @Left { "3p" } + # macro @Down { "4p" } - macro @CurrDirection { @CurrZUnit } + # macro @CurrDirection { @CurrZUnit } - def @GoRight right x { @Right @ZUnit x } - def @GoUp right x { @Up @ZUnit x } - def @GoLeft right x { @Left @ZUnit x } - def @GoDown right x { @Down @ZUnit x } + # def @GoRight right x { @Right @ZUnit x } + # def @GoUp right x { @Up @ZUnit x } + # def @GoLeft right x { @Left @ZUnit x } + # def @GoDown right x { @Down @ZUnit x } def @GoReverse right x { @@ -6289,6 +7403,8 @@ def @DiagSetup macro @ACell { @XCell @ANode } macro @BCell { @XCell @BNode } macro @CCell { @XCell @CNode } + macro @DCell { @XCell @DNode } + macro @ECell { @XCell @ENode } ####################################################################### diff --git a/include/diagf.lpg b/include/diagf.lpg index 76bb0b5..63cd684 100644 --- a/include/diagf.lpg +++ b/include/diagf.lpg @@ -3187,6 +3187,17 @@ ldiagdict begin 0 0 xsize ysize 0.5 mul 0 ysize } def +% shape and labels of the @SolidWithBarArrowHead symbol +% <pathwidth> ldiagsolidwithbararrowhead - +/ldiagsolidwithbararrowhead +{ + /pathwidth exch def + /XBK [ xsize pathwidth 0.5 mul sub ] cvx def + /XFW [ xsize pathwidth 0.5 mul add ] cvx def + 0 0 XBK ysize 0.5 mul XBK 0 XFW 0 XFW ysize + XBK ysize XBK ysize 0.5 mul 0 ysize 0 0 +} def + % shape and labels of the @OpenArrowHead symbol % <pathwidth> ldiagopenarrowhead - /ldiagopenarrowhead diff --git a/include/dsf b/include/dsf index 619ab9b..dc757a1 100644 --- a/include/dsf +++ b/include/dsf @@ -931,8 +931,9 @@ def @DocumentSetup named @Owner {} named @Prefix {} named @Tag {} - { @Null - # "(@Runner:"@Start":"@MajorTitle")" + { + @Null + # red @Colour "(@Runner:"@Start":"@MajorTitle":"@MinorTitle")" } def @DupRunner # duplicate previous runner diff --git a/include/npf b/include/npf index aa2230f..7c04721 100644 --- a/include/npf +++ b/include/npf @@ -102,7 +102,7 @@ def @NonpareilSetup export - @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD + @PI @PK @PO @PN @PS @PC @PL @PA @PM @PD @PDD @A "$>" def @Nonpareil @@ -405,6 +405,15 @@ def @NonpareilSetup } + def @PDD # for formatting double dots, if wanted larger + { + @PO @BackEnd @Case { + PlainText @Yield ".." + else @Yield { "1.4f" @Font "+0.04f" @VShift ".." &"0.05f" } + } + } + + def @A # get characters from the Adobe Symbol font named sym {} right x |