From 8ce9c33634056a6c8b9673c7f14a27cef1f3348f Mon Sep 17 00:00:00 2001
From: Hans Hagen <pragma@wxs.nl>
Date: Thu, 25 Feb 2010 19:46:00 +0100
Subject: beta 2010.02.25 19:46

---
 metapost/context/base/mp-back.mp | 232 +++++++++++++++++++--------------------
 metapost/context/base/mp-page.mp |  27 +++++
 2 files changed, 143 insertions(+), 116 deletions(-)

(limited to 'metapost')

diff --git a/metapost/context/base/mp-back.mp b/metapost/context/base/mp-back.mp
index 99e88554b..f49474cf7 100644
--- a/metapost/context/base/mp-back.mp
+++ b/metapost/context/base/mp-back.mp
@@ -1,6 +1,6 @@
 %D \module
 %D   [       file=mp-back.mp,
-%D        version=2000.05.31, 
+%D        version=2000.05.31,
 %D          title=\CONTEXT\ \METAPOST\ graphics,
 %D       subtitle=backgrounds,
 %D         author=Hans Hagen,
@@ -8,199 +8,199 @@
 %D      copyright={PRAGMA / Hans Hagen \& Ton Otten}]
 %C
 %C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See licen-en.pdf for 
-%C details. 
+%C therefore copyrighted by \PRAGMA. See licen-en.pdf for
+%C details.
 
-if unknown context_tool :    input mp-tool ; fi ; 
-if   known context_back : endinput         ; fi ; 
+if unknown context_tool :    input mp-tool ; fi ;
+if   known context_back : endinput         ; fi ;
 
-boolean context_back ; context_back := true ; 
+boolean context_back ; context_back := true ;
 
-def some_hash ( expr hash_width     , 
-                     hash_height    ,    
-                     hash_linewidth , 
-                     hash_linecolor , 
-                     hash_angle     , 
-                     hash_gap       ) = 
+def some_hash ( expr hash_width     ,
+                     hash_height    ,
+                     hash_linewidth ,
+                     hash_linecolor ,
+                     hash_angle     ,
+                     hash_gap       ) =
 
   stripe_gap := hash_gap ;
   stripe_angle := hash_angle ;
-  drawoptions (withpen pencircle scaled hash_linewidth 
+  drawoptions (withpen pencircle scaled hash_linewidth
                withcolor hash_linecolor) ;
   path p ; p := unitsquare xscaled hash_width yscaled hash_height ;
   stripe_path_a () (draw) p ;  % next we move it all to quadrant 1
-  currentpicture := currentpicture shifted urcorner currentpicture ; 
+  currentpicture := currentpicture shifted urcorner currentpicture ;
 
-enddef ; 
+enddef ;
 
-def some_double_back (expr back_type        , 
+def some_double_back (expr back_type        ,
                            back_width       ,
                            back_height      ,
-                           back_delta       , 
-                           back_linewidth   , 
-                           back_linecolor   , 
-                           back_fillcolor   , 
-                           back_topcolor    , 
+                           back_delta       ,
+                           back_linewidth   ,
+                           back_linecolor   ,
+                           back_fillcolor   ,
+                           back_topcolor    ,
                            back_bottomcolor ,
-                           back_leftcolor   , 
-                           back_rightcolor  ) = 
+                           back_leftcolor   ,
+                           back_rightcolor  ) =
 
-  numeric ww ; ww := back_width  ; 
-  numeric hh ; hh := back_height ; 
-  numeric dd ; dd := back_delta  ; 
+  numeric ww ; ww := back_width  ;
+  numeric hh ; hh := back_height ;
+  numeric dd ; dd := back_delta  ;
 
-  color back_nillcolor ; back_nillcolor := back_topcolor ; 
+  color back_nillcolor ; back_nillcolor := back_topcolor ;
 
-  path p ; p := fullsquare xscaled  ww      yscaled  hh      ;  
-  path q ; q := fullsquare xscaled (ww-2dd) yscaled (hh-2dd) ; 
-  path r ; r := llcorner p -- 
-                lrcorner p shifted (-3dd,0) .. controls lrcorner p .. 
-                lrcorner p shifted (0, 3dd) -- 
-                urcorner p shifted (0,-3dd) .. controls urcorner p .. 
+  path p ; p := fullsquare xscaled  ww      yscaled  hh      ;
+  path q ; q := fullsquare xscaled (ww-2dd) yscaled (hh-2dd) ;
+  path r ; r := llcorner p --
+                lrcorner p shifted (-3dd,0) .. controls lrcorner p ..
+                lrcorner p shifted (0, 3dd) --
+                urcorner p shifted (0,-3dd) .. controls urcorner p ..
                 urcorner p shifted (-3dd,0) --
                 ulcorner p -- cycle ;
   path s ; s := r xscaled ((ww-2dd)/ww) yscaled ((hh-2dd)/hh) ;
-  path t ; t := llcorner p -- 
-                lrcorner p -- 
-                urcorner p shifted (0,-3dd) .. controls urcorner p .. 
-                urcorner p shifted (-3dd,0) -- 
-                ulcorner p shifted ( 3dd,0) .. controls ulcorner p .. 
+  path t ; t := llcorner p --
+                lrcorner p --
+                urcorner p shifted (0,-3dd) .. controls urcorner p ..
+                urcorner p shifted (-3dd,0) --
+                ulcorner p shifted ( 3dd,0) .. controls ulcorner p ..
                 ulcorner p shifted (0,-3dd) --
                 llcorner p -- cycle ;
   path u ; u := t xscaled ((ww-2dd)/ww) yscaled ((hh-2dd)/hh) ;
-  path v ; v := llcorner p shifted ( 3dd,0) -- 
-                lrcorner p shifted (-3dd,0) .. controls lrcorner p .. 
-                lrcorner p shifted (0, 3dd) -- 
-                urcorner p shifted (0,-3dd) .. controls urcorner p .. 
+  path v ; v := llcorner p shifted ( 3dd,0) --
+                lrcorner p shifted (-3dd,0) .. controls lrcorner p ..
+                lrcorner p shifted (0, 3dd) --
+                urcorner p shifted (0,-3dd) .. controls urcorner p ..
                 urcorner p shifted (-3dd,0) --
-                ulcorner p shifted ( 3dd,0) .. controls ulcorner p .. 
+                ulcorner p shifted ( 3dd,0) .. controls ulcorner p ..
                 ulcorner p shifted (0,-3dd) ..
                 llcorner p shifted (0, 3dd) .. controls llcorner p .. cycle ; % {down}  .. cycle ;
   path w ; w := t xscaled ((ww-2dd)/ww) yscaled ((hh-2dd)/hh) ;
-  path a ; a := llcorner p -- ulcorner p -- 
+  path a ; a := llcorner p -- ulcorner p --
                 ulcorner q -- llcorner q -- cycle ;
-  path b ; b := llcorner p -- lrcorner p -- 
+  path b ; b := llcorner p -- lrcorner p --
                 lrcorner q -- llcorner q -- cycle ;
-  path c ; c := lrcorner p -- urcorner p -- 
+  path c ; c := lrcorner p -- urcorner p --
                 urcorner q -- lrcorner q -- cycle ;
-  path d ; d := ulcorner p -- urcorner p -- 
+  path d ; d := ulcorner p -- urcorner p --
                 urcorner q -- ulcorner q -- cycle ;
-  path e ; e := llcorner p -- lrcorner p -- 
-                urcorner p -- urcorner q -- 
+  path e ; e := llcorner p -- lrcorner p --
+                urcorner p -- urcorner q --
                 lrcorner q -- llcorner q -- cycle ;
-  path f ; f := llcorner p -- ulcorner p -- 
-                urcorner p -- urcorner q -- 
+  path f ; f := llcorner p -- ulcorner p --
+                urcorner p -- urcorner q --
                 ulcorner q -- llcorner q -- cycle ;
 
-  linecap := butt ; pickup pencircle scaled back_linewidth ; 
+  linecap := butt ; pickup pencircle scaled back_linewidth ;
 
-  if back_type=1 : 
+  if back_type=1 :
 
-    fill p withcolor back_fillcolor   ; 
-    fill a withcolor back_leftcolor   ; 
-    fill b withcolor back_bottomcolor ;  
-    fill c withcolor back_rightcolor  ; 
-    fill d withcolor back_topcolor    ; 
-    draw a withcolor back_linecolor   ; 
-    draw d withcolor back_linecolor   ; 
-    draw b withcolor back_linecolor   ; 
-    draw c withcolor back_linecolor   ; 
+    fill p withcolor back_fillcolor   ;
+    fill a withcolor back_leftcolor   ;
+    fill b withcolor back_bottomcolor ;
+    fill c withcolor back_rightcolor  ;
+    fill d withcolor back_topcolor    ;
+    draw a withcolor back_linecolor   ;
+    draw d withcolor back_linecolor   ;
+    draw b withcolor back_linecolor   ;
+    draw c withcolor back_linecolor   ;
 
-  elseif back_type=2 : 
+  elseif back_type=2 :
 
-    fill p withcolor back_fillcolor   ; 
-    fill e withcolor back_bottomcolor ; 
-    fill f withcolor back_topcolor    ; 
-    draw e withcolor back_linecolor   ; 
-    draw f withcolor back_linecolor   ; 
+    fill p withcolor back_fillcolor   ;
+    fill e withcolor back_bottomcolor ;
+    fill f withcolor back_topcolor    ;
+    draw e withcolor back_linecolor   ;
+    draw f withcolor back_linecolor   ;
 
-  elseif back_type=3 : 
+  elseif back_type=3 :
 
-    fill v withcolor back_nillcolor   ; 
-    fill w withcolor back_fillcolor   ; 
-    draw v withcolor back_linecolor   ; 
-    draw w withcolor back_linecolor   ; 
+    fill v withcolor back_nillcolor   ;
+    fill w withcolor back_fillcolor   ;
+    draw v withcolor back_linecolor   ;
+    draw w withcolor back_linecolor   ;
 
-  elseif back_type=4 : 
+  elseif back_type=4 :
 
-    fill t withcolor back_nillcolor   ; 
-    fill u withcolor back_fillcolor   ; 
-    draw t withcolor back_linecolor   ; 
-    draw u withcolor back_linecolor   ; 
+    fill t withcolor back_nillcolor   ;
+    fill u withcolor back_fillcolor   ;
+    draw t withcolor back_linecolor   ;
+    draw u withcolor back_linecolor   ;
 
-  elseif back_type=5 : 
+  elseif back_type=5 :
 
-    t := t rotatedaround(center t,180) ; 
-    u := u rotatedaround(center u,180) ; 
+    t := t rotatedaround(center t,180) ;
+    u := u rotatedaround(center u,180) ;
 
-    fill t withcolor back_nillcolor   ; 
-    fill u withcolor back_fillcolor   ; 
-    draw t withcolor back_linecolor   ; 
-    draw u withcolor back_linecolor   ; 
+    fill t withcolor back_nillcolor   ;
+    fill u withcolor back_fillcolor   ;
+    draw t withcolor back_linecolor   ;
+    draw u withcolor back_linecolor   ;
 
-  elseif back_type=6 : 
+  elseif back_type=6 :
 
-    r := r rotatedaround(center r,180) ; 
-    s := s rotatedaround(center s,180) ; 
+    r := r rotatedaround(center r,180) ;
+    s := s rotatedaround(center s,180) ;
 
-    fill r withcolor back_nillcolor   ; 
-    fill s withcolor back_fillcolor   ; 
-    draw r withcolor back_linecolor   ; 
-    draw s withcolor back_linecolor   ; 
+    fill r withcolor back_nillcolor   ;
+    fill s withcolor back_fillcolor   ;
+    draw r withcolor back_linecolor   ;
+    draw s withcolor back_linecolor   ;
 
-  elseif back_type=7 : 
+  elseif back_type=7 :
 
-    fill r withcolor back_nillcolor   ; 
-    fill s withcolor back_fillcolor   ; 
-    draw r withcolor back_linecolor   ; 
-    draw s withcolor back_linecolor   ; 
+    fill r withcolor back_nillcolor   ;
+    fill s withcolor back_fillcolor   ;
+    draw r withcolor back_linecolor   ;
+    draw s withcolor back_linecolor   ;
 
-fi ; 
+fi ;
 
-enddef ; 
+enddef ;
 
 endinput ;
 
-beginfig (1) ; 
+beginfig (1) ;
 
-some_double_back (1, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (1, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, .6white, .7white, .6white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (2, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (2, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, .6white, white, white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (3, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (3, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, white, white, white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (4, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (4, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, white, white, white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (5, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (5, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, white, white, white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (6, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (6, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, white, white, white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (7, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (7, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, white, white, white)
 
-currentpicture := currentpicture shifted (0,-3cm) ; 
+currentpicture := currentpicture shifted (0,-3cm) ;
 
-some_double_back (8, 4.5cm, 1.5cm, .25cm, 1mm, 
+some_double_back (8, 4.5cm, 1.5cm, .25cm, 1mm,
            .5white, .8white, .7white, white, white, white)
 
-endfig ; 
+endfig ;
 
 end .
diff --git a/metapost/context/base/mp-page.mp b/metapost/context/base/mp-page.mp
index 71ca12aa0..60bfb1417 100644
--- a/metapost/context/base/mp-page.mp
+++ b/metapost/context/base/mp-page.mp
@@ -444,4 +444,31 @@ def Enlarged (expr p, d) =
    ulEnlarged (p,d) -- cycle)
 enddef ;
 
+% New:
+
+def position_anchor_bar(expr p_b_self, p_e_self, y_b_self, y_e_self, h_b_self, d_e_self,
+        distance, linewidth, linecolor) =
+    StartPage ;
+      path p ; p :=
+      if p_b_self=p_e_self :
+        (xpart ulcorner Field[Text][Text],y_b_self+h_b_self) --
+        (xpart llcorner Field[Text][Text],y_e_self-d_e_self) ;
+      elseif RealPageNumber=p_b_self :
+        (xpart ulcorner Field[Text][Text],y_b_self+h_b_self) --
+        (llcorner Field[Text][Text]) ;
+      elseif RealPageNumber=p_e_self :
+        (ulcorner Field[Text][Text]) --
+        (xpart llcorner Field[Text][Text],y_e_self-d_e_self) ;
+      else :
+        (ulcorner Field[Text][Text]) --
+        (llcorner Field[Text][Text]) ;
+      fi ;
+      p := p shifted (-llcorner Field[Text][Text]-(distance,0)) ;
+      interim linecap := butt ;
+      draw p
+        withpen pencircle scaled linewidth
+        withcolor linecolor ;
+    StopPage ;
+enddef ;
+
 endinput ;
-- 
cgit v1.2.3