Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
/checkbutton-size 15 px def
2
 
3
/box-checkbutton-create {
4
  box-generic-create
5
  dup box-checkbutton-setup-methods
6
 
7
  dup /checked false put
8
  checkbutton-size 1 index put-default-baseline
9
  checkbutton-size 1 index put-height
10
  checkbutton-size 1 index put-width
11
 
12
  dup /box-checkbutton add-type
13
} def
14
 
15
/box-checkbutton-get-max-width {   % => Context Box
16
  dup get-full-width
17
  exch pop
18
  exch pop
19
} def
20
 
21
/box-checkbutton-get-min-width {   % => Context Box
22
  dup get-full-width
23
  exch pop
24
  exch pop
25
} def
26
 
27
/box-checkbutton-put-checked {     % => Value Box
28
  exch /checked exch put
29
} def
30
 
31
/box-checkbutton-reflow {          % => Context Parent Box
32
% Set default baseline
33
  dup get-default-baseline
34
  1 index put-baseline
35
 
36
% append to parent line box
37
  dup 2 index box-container-append-line
38
 
39
% Determine coordinates of upper-left _margin_ corner
40
  1 index 1 index box-generic-guess-corner
41
 
42
% Offset parent current X coordinate
43
  1 index get-current-x
44
  1 index get-full-width
45
  add
46
  2 index put-current-x
47
 
48
% Extend parent height
49
  dup get-bottom-margin
50
  2 index box-generic-extend-height
51
 
52
  pop pop pop
53
} def
54
 
55
/box-checkbutton-setup-methods {
56
  dup /Methods get
57
  dup /get-max-width {box-checkbutton-get-max-width} put
58
  dup /get-min-width {box-checkbutton-get-min-width} put
59
  dup /reflow {box-checkbutton-reflow} put
60
  dup /show {box-checkbutton-show} put
61
  pop pop
62
} def
63
 
64
/box-checkbutton-show {            % => Viewport Box
65
% Get check center
66
  dup get-left
67
  1 index get-right add
68
  2 div                            % => Viewport Box X
69
 
70
  1 index get-top
71
  2 index get-bottom add
72
  2 div                            % => Viewport Box X Y
73
 
74
% Calculate checkbox size
75
  2 index /get-width call-method
76
  3 div                            % => Viewport Box X Y Size
77
 
78
% Draw checkbox
79
  0.25 setlinewidth
80
 
81
  2 index 1 index sub
82
  2 index 2 index add moveto
83
 
84
  2 index 1 index add
85
  2 index 2 index add lineto
86
 
87
  2 index 1 index add
88
  2 index 2 index sub lineto
89
 
90
  2 index 1 index sub
91
  2 index 2 index sub lineto
92
 
93
  closepath
94
  stroke
95
 
96
% Draw checkmark if needed
97
  3 index /checked get {
98
    dup 2 div                      % => Viewport Box X Y Size CheckSize
99
 
100
    3 index 1 index sub
101
    3 index 2 index add moveto
102
    3 index 1 index add
103
    3 index 2 index sub lineto
104
    stroke
105
 
106
    3 index 1 index add
107
    3 index 2 index add moveto
108
    3 index 1 index sub
109
    3 index 2 index sub lineto
110
    stroke
111
 
112
    pop
113
  } if                             % => Viewport Box X Y Size
114
 
115
  pop pop pop
116
  pop pop
117
} def