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

199 lines
4.8 KiB
PostScript

/box-image-broken-create { % =>
box-image-generic-create
dup box-image-broken-setup-methods
dup /box-image-broken add-type
} def
/box-image-broken-setup-methods {
dup /Methods get
dup /show {box-image-broken-show} put
pop pop
} def
/box-image-broken-show { % => Viewport This
gsave
0.1 setlinewidth
dup get-left 1 index get-top moveto
dup get-right 1 index get-top lineto
dup get-right 1 index get-bottom lineto
dup get-left 1 index get-bottom lineto
closepath
stroke
dup get-left 1 index get-top moveto
dup get-right 1 index get-top lineto
dup get-right 1 index get-bottom lineto
dup get-left 1 index get-bottom lineto
closepath
clip
% TODO: output ALT attribute
grestore
pop pop
} def
/box-image-create { % => Mask Image Init SY SX
image-create
box-image-generic-create
dup box-image-setup-methods
dup /box-image add-type % => Image Box
dup /Image 3 index put
exch pop
} def
/box-image-setup-methods { % =>
dup /Methods get
dup /show {box-image-show} put
pop pop
} def
/box-image-show { % => Viewport Box
2 copy box-generic-show
% Check if "designer" set the height or width of this image to zero; in this there will be no reason
% in drawing the image at all
dup /get-width call-method 1 lt
1 index get-height 1 lt or {
} {
dup /Image get % => Viewport Box Image
1 index get-left
2 index get-bottom moveto % => Viewport Box Image
1 index /get-width call-method
2 index get-height % => Viewport Box Image W H
3 2 roll
image-show % => Viewport Box
} ifelse % => Viewport Box
pop pop
} def
/box-image-generic-create { % =>
box-generic-inline-create
dup box-image-generic-setup-methods
dup /box-image-generic add-type
dup /scale /none put
dup /src-width 1 put
dup /src-height 1 put
} def
/box-image-generic-get-max-width { % => Context This
dup get-full-width
exch pop
exch pop
} def
/box-image-generic-get-min-width { % => Context This
dup get-full-width
exch pop
exch pop
} def
/box-image-generic-get-scale { % => This
/scale get
} def
/box-image-generic-get-src-height {
/src-height get
} def
/box-image-generic-get-src-width {
/src-width get
} def
/box-image-generic-pre-reflow-images { % => This
dup box-image-generic-get-scale % => This Scale
dup /width eq { % => This Scale
1 index box-image-generic-get-src-width
2 index box-image-generic-get-src-height div
2 index /get-width
call-method mul % => This Scale Size
dup 3 index put-height % => This Scale Size
2 index put-default-baseline % => This Scale
} if
dup /height eq { % => This Scale
1 index box-image-generic-get-src-height
2 index box-image-generic-get-src-width div
2 index get-height mul % => This Scale Size
dup 3 index put-width % => This Scale Size
dup wc-create-constant
3 index put-width-constraint % => This Scale Size
2 index put-default-baseline % => This Scale
} if
pop pop
} def
/box-image-generic-put-scale { % => Scale This
exch % => This Scale
/scale exch % => This /scale Scale
put
} def
/box-image-generic-put-src-height {% => Scale This
exch % => This Scale
/src-height exch % => This /src-height Scale
put
} def
/box-image-generic-put-src-width { % => Scale This
exch % => This Scale
/src-width exch % => This /src-width Scale
put
} def
/box-image-generic-reflow { % => Context Parent This
dup box-image-generic-pre-reflow-images
% => Context Parent This
% Check if we need a line break here
2 index
2 index
2 index
/maybe-line-break call-method
pop
% set default baseline
dup get-default-baseline
1 index put-baseline
% append to parent line box
dup 2 index
box-container-append-line
% Move box to the parent current point
1 index
1 index
box-generic-guess-corner % => Context Parent This
% Move parent's X coordinate
1 index get-current-x
1 index get-full-width
add
2 index put-current-x % => Context Parent This
% Extend parent height
dup get-bottom-margin
2 index
box-generic-extend-height % => Context Parent This
pop pop pop
} def
/box-image-generic-setup-methods {
dup /Methods get
dup /get-max-width { box-image-generic-get-max-width } put
dup /get-min-width { box-image-generic-get-min-width } put
dup /pre-reflow-images { box-image-generic-pre-reflow-images } put
dup /reflow { box-image-generic-reflow } put
pop pop
} def