michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: Table Reflow Tech Talk, 2002-08-05 michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0: michael@0:
michael@0:
michael@0:

Table Reflow Internals
Tech Talk

michael@0:

Aug 5, 2002

michael@0:

Chris Karnaze

michael@0:
michael@0:
michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Overview

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Review of Reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Review of Reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Review of Reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Review of Reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Review of Reflow

michael@0:
michael@0: michael@0:
michael@0: michael@0: michael@0:

Kinds of reflows

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Kinds of reflows

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table Frames

michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0:
michael@0: nsTableOuter Frame
nsTable
Frame
nsTableCaption
Frame
nsTableCol
GroupFrame
nsTableRow
GroupFrame
nsBlockFrame
nsTableCol
Frame
nsTableRow
Frame
nsTableCell
Frame
nsBlock
Frame
michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table Reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table Reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table Reflow Example

michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0:
michael@0: tblO 030176CC r=0 a=8940,UC c=0,0 cnt=429
michael@0:   tbl 030178C4 r=0 a=8940,UC c=4470,UC cnt=430
michael@0:    rowG 03017A7C r=0 a=UC,UC c=UC,UC cnt=431 
michael@0:     row 03017C08 r=0 a=UC,UC c=UC,UC cnt=432
michael@0:      cell 03017DA8 r=0 a=UC,UC c=UC,UC cnt=433
michael@0:       block 03017E08 r=0 a=UC,UC c=UC,UC cnt=434
michael@0:       block 03017E08 d=870,300 me=480
michael@0:      cell 03017DA8 d=930,360 me=540
michael@0:      cell 0301A8CC r=0 a=UC,UC c=UC,UC cnt=436
michael@0:       block 0301A92C r=0 a=UC,UC c=UC,UC cnt=437
michael@0:       block 0301A92C d=1335,300 me=465
michael@0:      cell 0301A8CC d=1395,360 me=525
michael@0:     row 03017C08 d=UC,360
michael@0:    rowG 03017A7C d=UC,360
michael@0:    rowG 03017A7C r=2 a=4470,UC c=4470,UC cnt=442
michael@0:     row 03017C08 r=2 a=4470,UC c=4470,UC cnt=443
michael@0:      cell 03017DA8 r=2 a=1755,UC c=1695,UC cnt=444
michael@0:       block 03017E08 r=2 a=1695,UC c=1695,UC cnt=445
michael@0:       block 03017E08 d=1695,300
michael@0:      cell 03017DA8 d=1755,360
michael@0:      cell 0301A8CC r=2 a=2625,UC c=2565,UC cnt=446
michael@0:       block 0301A92C r=2 a=2565,UC c=2565,UC cnt=447
michael@0:       block 0301A92C d=2565,300
michael@0:      cell 0301A8CC d=2625,360
michael@0:     row 03017C08 d=4470,360
michael@0:    rowG 03017A7C d=4470,360
michael@0:   tbl 030178C4 d=4500,450
michael@0:  tblO 030176CC d=4500,450
michael@0: 
michael@0:  frame reflow debugging gives instructions 
michael@0:  for turning this on.
michael@0:  
michael@0:
michael@0:
michael@0: <table width=300>
michael@0:   <tr>
michael@0:     <td>foo</td>
michael@0:     <td>bar zap</td>
michael@0:   </tr>
michael@0: </table>
michael@0:      
michael@0:
michael@0:
michael@0:
michael@0: Key:
michael@0: 
michael@0:   r  = reflow reason, 
michael@0:        0 (initial),
michael@0:        2 (resize) 
michael@0:   a  = avail w, h
michael@0:   c  = computed w, h
michael@0:   d  = desired w, h
michael@0:   me = max elem w
michael@0:      
michael@0: 	
michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table reflow optimizations

michael@0: michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table incremental reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table incremental reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Special height reflow

michael@0: michael@0:
michael@0: michael@0: michael@0:
michael@0: michael@0:

Special Reflow Example

michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0:
michael@0: <table border=2 width=300>
michael@0:   <tr>
michael@0:     <td>
michael@0:       This cell's width is 
michael@0:       constrained by the 
michael@0:       table and image widths. 
michael@0:       Its exact height is 
michael@0:       hard to determine.
michael@0:     </td>
michael@0:     <td>
michael@0:       <img src=raptor.jpg
michael@0:        width=200 height=100%>
michael@0:     </td>
michael@0:   </tr>
michael@0: </table>
michael@0:      
michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0:
This cell's width is constrained michael@0: by the table and image widths.

Its height michael@0: is hard to determine.

The image needs to be as high as the cell. michael@0:
michael@0: michael@0: michael@0:
michael@0: michael@0:
michael@0:
michael@0: michael@0: michael@0:
michael@0: michael@0:

Special height reflow

michael@0:
michael@0: michael@0:
michael@0: michael@0:

Special height reflow

michael@0:
michael@0: michael@0:
michael@0: michael@0:

Intro to paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Pagination Illustration

michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
nsSimplePageSequence
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
nsPageFrame
michael@0: michael@0: michael@0: michael@0: michael@0:
nsPageContentFrame
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
areaFrame (html)
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
blockFrame (body)
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
nsTableOuterFrame
michael@0:
michael@0:
michael@0:
michael@0:
michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
michael@0: michael@0: michael@0: michael@0: michael@0: michael@0:
nsTableOuterFrame
michael@0:
blockFrame (body)
michael@0:
areaFrame (html)
michael@0:
nsPageContentFrame continued
michael@0:
nsPageFrame continued
michael@0:
michael@0:
michael@0: michael@0:
michael@0: michael@0:

Intro to paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Intro to paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Intro to paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table paginated reflow

michael@0: michael@0:
michael@0: michael@0:
michael@0: michael@0:

Table paginated reflow

michael@0: michael@0:
michael@0: michael@0: michael@0: michael@0: