1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
%D \module
%D [ file=mp-butt.mpii,
%D version=2000.05.31,
%D title=\CONTEXT\ \METAPOST\ graphics,
%D subtitle=buttons,
%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_butt : endinput ; fi ;
boolean context_butt ; context_butt := true ;
def predefinedbutton (expr button_type, button_size, button_linecolor, button_fillcolor) =
begingroup ;
save button_linewidth, p, d, l ;
numeric button_linewidth ; button_linewidth := button_size/10 ;
drawoptions (withpen pencircle scaled button_linewidth withcolor button_linecolor) ;
path p ; p := unitsquare scaled button_size ;
numeric d ; d := button_size ;
numeric l ; l := button_linewidth ;
fill p withcolor button_fillcolor ;
draw p ;
if button_type = 101 :
draw (d-2l,2l)--(2l,.5d)--(d-2l,d-2l)--cycle ;
elseif button_type = 102 :
draw (2l,2l)--(d-2l,.5d)--(2l,d-2l)--cycle ;
elseif button_type = 103 :
for i=2l step 2l until d-2l :
draw (2l,i)--(2l ,i) ;
draw (4l,i)--(d-2l,i) ;
endfor ;
elseif button_type = 104 :
for i=2l step 2l until d-2l :
draw (2l ,i)--(d/2-l,i) ;
draw (d/2+l,i)--(d-2l ,i) ;
endfor ;
elseif button_type = 105 :
fill fullcircle scaled (.2d) shifted (.5d,.7d) ;
fill fullcircle xscaled (.6d) yscaled d shifted (.5d,0) ;
clip currentpicture to p ;
draw p ;
elseif button_type = 106 :
draw (2l,2l)--(d-2l,d-2l) ;
draw (d-2l,2l)--(2l,d-2l) ;
elseif button_type = 107 :
p := (3l,d-2l)--(d-3l,d-2l)--(.5d,4l)--cycle ;
fill p ; draw p ;
draw (.5d,2l) ;
elseif button_type = 108 :
draw (.5d,2l)--(d-2l,d-2l)--(2l,d-2l)--cycle ;
elseif button_type = 109 :
draw (.5d,d-2l)--(d-2l,2l)--(2l,2l)--cycle ;
elseif button_type = 110 :
button_linewidth := button_linewidth/2 ;
draw p enlarged (-2l,-l) ;
for i=2l step l until d-2l :
draw (3l,i)--(d-3l,i) ;
endfor ;
fi ;
endgroup ;
enddef ;
let some_button = predefinedbutton
|