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

165 lines
5.2 KiB
PostScript

/box-table-row-create { % =>
box-container-create % => Box
dup box-table-row-setup-methods % => Box
dup /box-table-row add-type % => Box
} def
/box-table-row-get-baseline { % => Row
{ box-table-cell-get-baseline max }
0
2 index get-content
reduce % => Row RowBaseline
exch pop
} def
/box-table-row-get-colspans { % => RowIndex Row
[] 0 % => RowIndex Row Spans I
2 index get-content { % => RowIndex Row Spans I Cell
dup box-table-cell-get-colspan
1 gt {
4 index % => RowIndex Row Spans I Cell Row
2 index % => RowIndex Row Spans I Cell Row Col
2 index
box-table-cell-get-colspan % => RowIndex Row Spans I Cell Row Col Size
cellspan-create % => RowIndex Row Spans I Cell Span
exch pop % => RowIndex Row Spans I Span
3 2 roll
array-prepend
exch % => RowIndex Row Spans' I
} { pop } ifelse
1 add
} forall % => RowIndex Row Spans I
pop % => RowIndex Row Spans
exch pop
exch pop
} def
/box-table-row-get-rowspans { % => RowIndex Row
[] 0 % => RowIndex Row Spans I
2 index get-content { % => RowIndex Row Spans I Cell
dup box-table-cell-get-rowspan
1 gt {
4 index % => RowIndex Row Spans I Cell Row
2 index % => RowIndex Row Spans I Cell Row Col
2 index
box-table-cell-get-rowspan % => RowIndex Row Spans I Cell Row Col Size
cellspan-create % => RowIndex Row Spans I Cell Span
exch pop % => RowIndex Row Spans I Span
3 2 roll
array-prepend
exch % => RowIndex Row Spans' I
} { pop } ifelse
1 add
} forall % => RowIndex Row Spans I
pop % => RowIndex Row Spans
exch pop
exch pop
} def
/box-table-row-get-table-columns-max-widths {
2 copy /get-max-width box-table-row-get-table-columns-xxx-widths
exch pop
exch pop
} def
/box-table-row-get-table-columns-min-widths {
2 copy /get-min-width box-table-row-get-table-columns-xxx-widths
exch pop
exch pop
} def
/box-table-row-get-table-columns-xxx-widths { % => Context Row Method
[] % => Context Row Method Widths
2 index get-content { % => Context Row Method Widths Cell
dup box-table-cell-get-colspan
1 gt { % => Context Row Method Widths Cell
pop 0 % => Context Row Method Widths 0
} { % => Context Row Method Widths Cell
4 index exch % => Context Row Method Widths Context Cell
3 index call-method % => Context Row Method Widths W
} ifelse
exch array-prepend % => Context Row Method Widths'
} forall % => Context Row Method Widths'
exch pop
exch pop
exch pop
} def
/box-table-row-height { % => Row
0
1 index get-content { % => Row Height Cell
dup box-table-cell-get-rowspan
1 le {
get-full-height
max % => Row Height
} {
pop
} ifelse
} forall % => Row Height
exch pop
} def
/box-table-row-resize { % => Top Height Row
% Do cell vertical-align
% Calculate row baseline
dup box-table-row-get-baseline % => Top Height Row Baseline
% Process cells contained in current row
1 index get-content { % => Top Height Row Baseline Cell
% Offset cell if needed
4 index
1 index get-top-margin sub
0
2 index /offset call-method % => Top Height Row Baseline Cell
% Vertical-align cell (do not apply to rowspans)
dup box-table-cell-get-rowspan 1 eq {
1 index
4 index
2 index % => Top Height Row Baseline Cell Baseline Height Cell
box-table-cell-apply-vertical-align
% => Top Height Row Baseline Cell
% Expand cell to full row height
3 index
1 index
put-full-height % => Top Height Row Baseline Cell
} if % => Top Height Row Baseline Cell
pop % => Top Height Row Baseline
} forall % => Top Height Row Baseline
pop pop pop pop
} def
/box-table-row-setup-methods { % => Box
dup /Methods get
dup /show {box-table-row-show} put
pop pop
} def
% Note that we SHOULD owerride the show method inherited from GenericContainerBox,
% as it MAY draw row background in case it was set via CSS rules. As row box
% is a "fake" box and will never have reasonable size and/or position in the layout,
% we should prevent this
/box-table-row-show { % => Viewport Box
dup get-content { % => Viewport Box Element
dup /visibility get-css-value
/visible eq {
2 index 1 index
/show call-method
} if % => Viewport Box Element
pop
} forall
pop pop
} def