% $Header: /cvsroot/html2ps/postscript/box.table.cell.ps,v 1.1 2005/12/18 07:21:37 Konstantin Exp $ /box-table-cell-apply-vertical-align { % => Baseline Height Cell dup /vertical-align get-css-value % => Baseline Height Cell Valign { % => Baseline Height Cell Valign dup /baseline eq { pop % => Baseline Height Cell 2 index 1 index box-table-cell-get-baseline sub % => Baseline Height Cell Delta 1 index get-top % => Baseline Height Cell Delta OldTop 1 index neg 0 4 index /offset call-method % => Baseline Height Cell Delta OldTop 2 index put-top % => Baseline Height Cell Delta pop exit } if dup /bottom eq { pop % => Baseline Height Cell 1 index 1 index box-container-get-real-full-height sub % => Baseline Height Cell Delta 1 index get-top % => Baseline Height Cell Delta OldTop 1 index neg 0 4 index /offset call-method % => Baseline Height Cell Delta OldTop 2 index put-top % => Baseline Height Cell Delta pop exit } if dup /middle eq { pop % => Baseline Height Cell 1 index 1 index box-container-get-real-full-height sub 2 div 0 max % => Baseline Height Cell Delta 1 index get-top % => Baseline Height Cell Delta OldTop 1 index neg 0 4 index /offset call-method % => Baseline Height Cell Delta OldTop 2 index put-top % => Baseline Height Cell Delta pop exit } if dup /super eq { pop exit } if dup /sub eq { pop exit } if dup /text-top eq { pop exit } if dup /text-bottom eq { pop % => Baseline Height Cell 2 index 1 index box-table-cell-get-baseline sub % => Baseline Height Cell Delta 1 index get-top % => Baseline Height Cell Delta OldTop 1 index neg 0 4 index /offset call-method % => Baseline Height Cell Delta OldTop 2 index put-top % => Baseline Height Cell Delta pop exit } if dup /top eq { pop exit } if pop exit } loop pop pop pop } def /box-table-cell-create { box-container-create dup box-table-cell-setup-methods dup /box-table-cell add-type dup /Colspan 1 put dup /Rowspan 1 put dup /column 0 put dup /row 0 put } def /box-table-cell-get-baseline { % => Cell dup box-container-get-first-data % => Cell First dup /null eq { pop pop 0 } { get-baseline exch pop } ifelse } def /box-table-cell-get-colspan { /Colspan get } def /box-table-cell-get-rowspan { /Rowspan get } def /box-table-cell-put-colspan { exch /Colspan exch put } def /box-table-cell-put-rowspan { exch /Rowspan exch put } def /box-table-cell-reflow { % => Context Parent Cell % Determine upper-left _content_ corner position of current box 1 index get-current-x 1 index get-extra-left add 1 index put-left % => Content Parent Cell % NOTE: Table cell margin is used as a cell-spacing value 1 index get-current-y 1 index get-border-top-width sub 1 index get-padding-top sub 1 index put-top % => Content Parent Cell % CSS 2.1: % Floats, absolutely positioned elements, inline-blocks, table-cells, and elements with 'overflow' other than % 'visible' establish new block formatting contexts. 2 index context-push dup get-uid 3 index context-push-container-uid % Reflow cell content 2 index 1 index box-container-reflow-content % => Content Parent Cell % Extend the table cell height to fit all contained floats % Determine the bottom edge corrdinate of the bottommost float 2 index context-float-bottom % => Content Parent Cell FloatBottom dup /null ne { 1 index box-generic-extend-height } { pop } ifelse % => Content Parent Cell % Restore old context 2 index context-pop-container-uid 2 index context-pop pop pop pop } def /box-table-cell-setup-methods { dup /Methods get dup /reflow {box-table-cell-reflow} put pop pop } def