Files
luos/thirdparty/html2ps_pdf/postscript/box.checkbutton.ps
Paula Quispe 9eb7d6cac2 HOR-2689
2017-08-03 17:00:30 -04:00

117 lines
2.5 KiB
PostScript

/checkbutton-size 15 px def
/box-checkbutton-create {
box-generic-create
dup box-checkbutton-setup-methods
dup /checked false put
checkbutton-size 1 index put-default-baseline
checkbutton-size 1 index put-height
checkbutton-size 1 index put-width
dup /box-checkbutton add-type
} def
/box-checkbutton-get-max-width { % => Context Box
dup get-full-width
exch pop
exch pop
} def
/box-checkbutton-get-min-width { % => Context Box
dup get-full-width
exch pop
exch pop
} def
/box-checkbutton-put-checked { % => Value Box
exch /checked exch put
} def
/box-checkbutton-reflow { % => Context Parent Box
% Set default baseline
dup get-default-baseline
1 index put-baseline
% append to parent line box
dup 2 index box-container-append-line
% Determine coordinates of upper-left _margin_ corner
1 index 1 index box-generic-guess-corner
% 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-checkbutton-setup-methods {
dup /Methods get
dup /get-max-width {box-checkbutton-get-max-width} put
dup /get-min-width {box-checkbutton-get-min-width} put
dup /reflow {box-checkbutton-reflow} put
dup /show {box-checkbutton-show} put
pop pop
} def
/box-checkbutton-show { % => Viewport Box
% Get check center
dup get-left
1 index get-right add
2 div % => Viewport Box X
1 index get-top
2 index get-bottom add
2 div % => Viewport Box X Y
% Calculate checkbox size
2 index /get-width call-method
3 div % => Viewport Box X Y Size
% Draw checkbox
0.25 setlinewidth
2 index 1 index sub
2 index 2 index add moveto
2 index 1 index add
2 index 2 index add lineto
2 index 1 index add
2 index 2 index sub lineto
2 index 1 index sub
2 index 2 index sub lineto
closepath
stroke
% Draw checkmark if needed
3 index /checked get {
dup 2 div % => Viewport Box X Y Size CheckSize
3 index 1 index sub
3 index 2 index add moveto
3 index 1 index add
3 index 2 index sub lineto
stroke
3 index 1 index add
3 index 2 index add moveto
3 index 1 index sub
3 index 2 index sub lineto
stroke
pop
} if % => Viewport Box X Y Size
pop pop pop
pop pop
} def