%D \module %D [ file=mp-back.mp, %D version=2000.05.31, %D title=\CONTEXT\ \METAPOST\ graphics, %D subtitle=backgrounds, %D author=Hans Hagen, %D date=\currentdate, %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. if known context_back : endinput ; fi ; boolean context_back ; context_back := true ; def some_hash ( expr hash_width , hash_height , hash_linewidth , hash_linecolor , hash_angle , hash_gap ) = begingroup ; stripe_gap := hash_gap ; stripe_angle := hash_angle ; 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 ; endgroup ; enddef ; % \starttext % % \startMPpage % input "mp-back" % % some_double_back (1, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, .6white, .7white, .6white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (2, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, .6white, white, white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (3, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, white, white, white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (4, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, white, white, white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (5, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, white, white, white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (6, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, white, white, white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (7, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, white, white, white) currentpicture := currentpicture shifted (0,-3cm) ; % some_double_back (8, 4.5cm, 1.5cm, .25cm, 1mm, .5white, .8white, .7white, white, white, white) % \stopMPpage % \stoptext def some_double_back (expr back_type , back_width , back_height , back_delta , back_linewidth , back_linecolor , back_fillcolor , back_topcolor , back_bottomcolor , back_leftcolor , back_rightcolor ) = begingroup ; save ww, hh, dd, p, q, r, s, t, u, v, w, a, c, d, e, f, back_nillcolor ; numeric ww ; ww := back_width ; numeric hh ; hh := back_height ; numeric dd ; dd := back_delta ; 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 .. 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 .. 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 .. urcorner p shifted (-3dd,0) -- 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 -- ulcorner q -- llcorner q -- cycle ; path b ; b := llcorner p -- lrcorner p -- lrcorner q -- llcorner q -- cycle ; path c ; c := lrcorner p -- urcorner p -- urcorner q -- lrcorner q -- cycle ; path d ; d := ulcorner p -- urcorner p -- urcorner q -- ulcorner q -- cycle ; 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 -- ulcorner q -- llcorner q -- cycle ; linecap := butt ; pickup pencircle scaled back_linewidth ; 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 ; 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 ; elseif back_type = 3 : fill v withcolor back_nillcolor ; fill w withcolor back_fillcolor ; draw v withcolor back_linecolor ; draw w withcolor back_linecolor ; elseif back_type = 4 : fill t withcolor back_nillcolor ; fill u withcolor back_fillcolor ; draw t withcolor back_linecolor ; draw u withcolor back_linecolor ; elseif back_type = 5 : 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 ; elseif back_type = 6 : 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 ; elseif back_type = 7 : fill r withcolor back_nillcolor ; fill s withcolor back_fillcolor ; draw r withcolor back_linecolor ; draw s withcolor back_linecolor ; fi ; endgroup; enddef ;