97 lines
2.2 KiB
PostScript
97 lines
2.2 KiB
PostScript
/radiobutton-size 15 px def
|
|
|
|
/box-radiobutton-create {
|
|
box-generic-create
|
|
dup box-radiobutton-setup-methods
|
|
|
|
dup /checked false put
|
|
radiobutton-size 1 index put-default-baseline
|
|
radiobutton-size 1 index put-height
|
|
radiobutton-size 1 index put-width
|
|
|
|
dup /box-radionbutton add-type
|
|
} def
|
|
|
|
/box-radiobutton-get-min-width { % => Context This
|
|
dup get-full-width
|
|
exch pop
|
|
exch pop
|
|
} def
|
|
|
|
/box-radiobutton-get-max-width { % => Context This
|
|
dup get-full-width
|
|
exch pop
|
|
exch pop
|
|
} def
|
|
|
|
/box-radiobutton-put-checked { % => Value Box
|
|
exch /checked exch put
|
|
} def
|
|
|
|
/box-radiobutton-reflow { % => Context Parent This
|
|
% Set default baseline
|
|
dup get-default-baseline
|
|
1 index put-baseline
|
|
|
|
% Append to parent line box
|
|
dup 2 index box-container-append-line
|
|
|
|
% Deterine coordinates of upper-left _margin_ corner
|
|
2 copy
|
|
box-generic-guess-corner % => Context Parent This
|
|
|
|
% Offset parent current X coordinate
|
|
1 index get-current-x
|
|
1 index get-full-width add
|
|
2 index put-current-x
|
|
|
|
% Extend parent height
|
|
dup get-bottom-margin
|
|
2 index box-generic-extend-height
|
|
|
|
pop pop pop
|
|
} def
|
|
|
|
/box-radiobutton-setup-methods {
|
|
dup /Methods get
|
|
dup /get-min-width {box-radiobutton-get-min-width} put
|
|
dup /get-max-width {box-radiobutton-get-max-width} put
|
|
dup /reflow {box-radiobutton-reflow} put
|
|
dup /show {box-radiobutton-show} put
|
|
pop pop
|
|
} def
|
|
|
|
/box-radiobutton-show { % => Viewport This
|
|
% Get check center
|
|
dup get-left
|
|
1 index get-right add 2 div
|
|
|
|
1 index get-top
|
|
2 index get-bottom add 2 div % => Viewport This X Y
|
|
|
|
% Calculate checkbox size
|
|
2 index /get-width call-method
|
|
3 div % => Viewport This X Y Size
|
|
|
|
2 index exch
|
|
2 index exch % => Viewport This X Y X Y Size
|
|
|
|
0 360
|
|
|
|
% Draw checkbox
|
|
newpath
|
|
0.25 setlinewidth
|
|
arc stroke % => Viewport This X Y
|
|
|
|
% Draw checkmark if needed
|
|
2 index /checked get {
|
|
2 index /get-width call-method
|
|
6 div % => Viewport This X Y CheckSize
|
|
|
|
0 360
|
|
newpath
|
|
arc fill % => Viewport This
|
|
} { pop pop } ifelse
|
|
|
|
pop pop
|
|
} def |