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

117 lines
3.2 KiB
PostScript

% $Header: /cvsroot/html2ps/postscript/flow.inline.ps,v 1.1 2005/12/18 07:21:38 Konstantin Exp $
% Check if given point is inside some alredy-layout floating box
/maybe-line-break-1 { % => Parent Child
% Check for right-floating boxes
% If upper-right corner of this inline box is inside of some float, wrap the line
context-floats % => Parent Child Floats
1 index get-full-width
3 index get-current-x add % => Parent Child Floats X
3 index get-current-y % => Parent Child Floats X Y
point-in-floats % => Parent Child Float/false
false ne % => Parent Chils true/false
exch pop
exch pop
} def % => true/false
/maybe-line-break-2 { % => Parent Child
dup get-full-width
2 index get-current-x add % => Parent Child X
2 index get-right-internal
rounding-epsilon add % => Parent Child X R
3 index get-current-x % => Parent Child X R CX
4 index get-left-internal % => Parent Child X R CX Left
gt 3 1 roll gt and % => Parent Child (X>R)&&(CX>Left)
exch pop
exch pop % => true/false
} def
/maybe-line-break-in { % => Parent Child
2 copy maybe-line-break-1 {
pop pop true
} {
2 copy maybe-line-break-2 {
pop pop true
} {
pop pop false
} ifelse
} ifelse
} def
/maybe-line-break { % => Parent Child
2 copy maybe-line-break-in dup { % => Parent Child Break
% break is needed
% check if parent line box containg any boxes
2 index get-line length 0 eq {
1 index get-height
3 index get-current-y
exch sub % => Parent Child Break CY'
3 index put-current-y
} if % => Parent Child Break
2 index close-line
} if % => Parent Child Break
exch pop
exch pop % => Break
} def
/line-break-allowed { % => Box
dup get-box-dict /Display get
dup /-text ne
exch pop
exch pop
} def % => true/false
/flow-inline { % => Parent Child
1 index line-break-allowed {
{
2 copy maybe-line-break not
{ exit } if
} loop
} if
% set default baseline
dup get-default-baseline
1 index put-baseline
% Determine the baseline position and height of the text-box using line-height CSS property
dup get-box-dict
/Display get
/inline-text eq {
apply-line-height
} if
dup get-vertical-align exec
dup 2 index append-line
% Determine coordinates of upper-left corner
1 index get-current-x
2 index get-current-y % => Parent Child X Y
2 index
move-to-box % => Parent Child
% ???
dup
0 1 index get-margin-top
offset-box
% Offset parent current X value
1 index get-current-x % => Parent Child PCX
1 index get-full-width % => Parent Child PCX CW
add % => Parent Child PCX+CW
2 index put-current-x % => Parent Child
% extend parent's height
dup get-full-height
exch pop
extend-height % => Parent
pop
} def