<?xml version="1.0"?>
<!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd">
<abiword xmlns="http://www.abisource.com/awml.dtd" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.0.0" fileformat="1.0" styles="unlocked">
<!-- =====================================================================  -->
<!-- This file is an AbiWord document.                                      -->
<!-- AbiWord is a free, Open Source word processor.                         -->
<!-- You may obtain more information about AbiWord at www.abisource.com     -->
<!-- You should not edit this file by hand.                                 -->
<!-- =====================================================================  -->

<styles>
<s type="P" name="Section Heading" basedon="Numbered Heading 1" followedby="Normal" props="list-delim:Section %L.; list-style:Numbered List; start-value:1; field-color:transparent; field-font:Arial; margin-left:0.0in; text-indent:0.0in; line-height:1.000000; tabstops:1.100000in/L0"/>
<s type="P" name="Numbered Heading 1" basedon="Heading 1" followedby="Normal" props="list-delim:%L.; list-style:Numbered List; start-value:1; field-color:transparent; field-font:Arial; margin-left:0.0in; text-indent:0.0in; line-height:1.000000; tabstops:0.299306in/L0"/>
<s type="P" name="Heading 1" basedon="Normal" followedby="Normal" props="keep-with-next:1; font-size:17pt; margin-bottom:0.0417in; line-height:1.000000; font-weight:bold; font-family:Arial; margin-top:0.3056in"/>
<s type="P" name="Normal" basedon="" followedby="Current Settings" props="font-family:Times New Roman; margin-top:0pt; font-variant:normal; margin-left:0pt; text-indent:0in; widows:2; font-style:normal; font-weight:normal; text-decoration:none; color:000000; line-height:1.000000; text-align:left; margin-bottom:0pt; text-position:normal; margin-right:0pt; bgcolor:transparent; font-size:12pt; font-stretch:normal"/>
</styles>
<lists>
<l id="388365092" parentid="0" type="0" start-value="1" list-delim="Section %L." list-decimal=""/>
<l id="1942189962" parentid="0" type="0" start-value="1" list-delim="%L." list-decimal="."/>
</lists>
<pagesize pagetype="A4" orientation="portrait" width="8.267717" height="11.692913" units="in" page-scale="1.000000"/>
<section>
<p level="1" listid="388365092" parentid="0" style="Section Heading" props="start-value:1; text-indent:0.0000in; list-style:Numbered List; field-font:Arial; margin-left:0.0000in"><c props="list-tag:1483180255; lang:en-AU"></c><field type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-AU; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-AU; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal">	Container classes</c></p>
<p style="Normal">	Now is the time to start discussing the next generation layout code. The idea of course is to rewrite as little as possible of our current code. AbiWord 1.2 will support tables and footnotes but I think we should design our next gen code to easily handle other advanced layout objects like text frames, positioned images and to allow text to flow around images and other embedded objects.</p>
<p style="Normal"></p>
<p style="Normal">Here is one suggestion on how to acheive that.</p>
<p style="Normal"></p>
<p style="Normal">To start with I'll recap how text is layed out on fp_Page.</p>
<p style="Normal" props="tabstops:15.25cm/B0,0.50cm/B0"></p>
<p style="Normal" props="tabstops:15.25cm/B0,0.50cm/B0">  	<c props="text-decoration:topline">	</c></p>
<p style="Normal" props="tabstops:8.00cm/C0,0.50cm/B0,15.25cm/B0"><c props="text-decoration:none">			</c>  		Fixed size header             		</p>
<p style="Normal" props="tabstops:15.25cm/B0,0.50cm/B0"> 		</p>
<p style="Normal" props="tabstops:12.00cm/C0,0.50cm/B0,4.00cm/C0,7.00cm/B0,8.37cm/B0,15.25cm/B0">	<c props="text-decoration:topline">	-------Line 1------		 	----------Line 1----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	-------Line 2------		 	----------Line 2----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	-------Line 3------		 	----------Line 3----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 4------		 	----------Line 4----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Column 1------		 	----------Column2----------	  </c> </p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	-------Line 5------		 	----------Line 5----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 6------		 	----------Line 6----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 7------		 	----------Line 7----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	-------Line 8------		 	----------Line 8----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:topline ">	-------Line 1------		 	----------Line 1----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 2------		 	----------Line 2----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 3------		 	----------Line 3----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 4------		 	----------Line 4----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Column 3------		 	----------Column4----------	   </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 5------		 	----------Line 5----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 6------		 	----------Line 6----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 7------		 	----------Line 7----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:bottomline">	-------Line 8------		 	----------Line 8----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:7.50cm/C0,0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		Fixed size footer	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:7.50cm/C0,0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:7.50cm/C0,0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt"></c></p>
<p style="Normal">Images are embedded in lines. If an image is large it expands the height of a line.</p>
<p style="Normal"></p>
<p style="Normal">The lines are contained as a vector in the class fp_Column which derives from the base class fp_Container.</p>
<p style="Normal"></p>
<p style="Normal">Here is what we like to layout on a page.</p>
<p style="Normal"></p>
<p style="Normal"></p>
<p style="Normal">  </p>
<p style="Normal"><c></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">  	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:topline ">	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,3.149306in/C0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">			  		Fixed size header             		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"> 		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.003472in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:topline ">	-------Line 1------		 	----------Line 1----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 2------		 	----------Line 2----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 3------		 	----------Line 3----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:5.62cm/B0,0.196528in/B0,1.50cm/B0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:topline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"> 		----------Line 4----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:3.62cm/C0,0.196528in/B0,1.50cm/B0,5.62cm/B0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">			Embeded Container			 	----------Column2----------	   </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:5.62cm/B0,0.196528in/B0,1.50cm/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		 	----------Line 5----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 6------		 	----------Line 6----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 7------		 	----------Line 7----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:bottomline">	-------Line 8------		 	----------Line 8----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:14.50cm/B0,0.196528in/B0,0.491667in/B0,1.818750in/B0,3.345833in/B0,4.724306in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">				</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:14.50cm/B0,0.196528in/B0,0.491667in/B0,1.818750in/B0,3.345833in/B0,4.724306in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		Table		</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:14.50cm/B0,0.196528in/B0,0.491667in/B0,1.818750in/B0,3.345833in/B0,4.724306in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">				</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:14.50cm/B0,0.196528in/B0,0.491667in/B0,1.818750in/B0,3.345833in/B0,4.724306in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">				</c><c props="font-family:Times New Roman; text-decoration:none; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:14.50cm/B0,0.196528in/B0,0.491667in/B0,1.818750in/B0,3.345833in/B0,4.724306in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c><c props="font-family:Times New Roman; text-decoration:bottomline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">					</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:topline ">	-------Line 1------		 	----------Line 1----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 2------		 	----------Line 2----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 3------		 	----------Line 3----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 4------		 	----------Line 4----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Column 3------		 	----------Column4----------	   </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 5------		 	----------Line 5----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		-------Line 6------		 	----------Line 6----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; text-decoration:topline; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; font-size:12pt">		</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	 	----------Line 7----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,1.574306in/C0,2.755556in/B0,3.295139in/B0,4.724306in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:bottomline">	Footnote		 	----------Line 8----------	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,2.952083in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">		Fixed size footer	</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; tabstops:0.196528in/B0,2.952083in/C0,6.002778in/B0; margin-bottom:0.0000in; text-indent:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:bottomline">		</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; tabstops:0.196528in/B0,2.952083in/C0,6.002778in/B0; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:bottomline"></c></p>
<p style="Normal"></p>
<p style="Normal">OK so under the new scheme we continue to have a fp_Page class whose job it is to layout out fp_Columns on a page and place headers/footers in the margins.</p>
<p style="Normal"></p>
<p style="Normal">Now however fp_Columns can contain containers other than fp_Lines. fp_Columns can contain lines, other containers or footnote containers.</p>
<p style="Normal"></p>
<p style="Normal">In order to be able to continue to use a vector of void * pointers as the content of the column, this means that fp_line should become a subclass of a general container class. If we have getType() method in this class we can dynamically determine what sort of container is returned from a</p>
<p style="Normal"></p>
<p style="Normal">fp_ContainerObject * pCO = (fp_ContainerObject *) m_pLines.getNthItem(i);</p>
<p style="Normal"></p>
<p style="Normal">assignment.</p>
<p style="Normal"></p>
<p style="Normal">At present we have the following fp_* class heiracy.</p>
<p style="Normal"></p>
<p style="Normal">fp_Run --&gt; lots of run subclasses.</p>
<p style="Normal">fp_Line --&gt; no Line subclasses</p>
<p style="Normal" props="tabstops:3.00cm/B0">fp_Container ---&gt;	</p>
<p style="Normal" props="tabstops:3.00cm/B0">	-----&gt; fp_Column</p>
<p style="Normal" props="tabstops:3.00cm/B0">                 	-----&gt; fp_HdrFtrContainer</p>
<p style="Normal" props="tabstops:3.00cm/B0">              	-----&gt; fp_ShadowContainer</p>
<p style="Normal" props="tabstops:3.00cm/B0">                 	-----&gt; fp_EndNoteContainer</p>
<p style="Normal"></p>
<p style="Normal">For the next generation I propose this:</p>
<p style="Normal" props="tabstops:4.75cm/B0">fp_ContainerObject----	</p>
<p style="Normal" props="tabstops:4.75cm/B0">	--&gt; fp_Run ---&gt; Lots of subclasses</p>
<p style="Normal" props="tabstops:4.75cm/B0,8.25cm/B0"> 	--&gt; fp_Container --&gt;	</p>
<p style="Normal" props="tabstops:8.25cm/B0">	--&gt; fp_TableContainer</p>
<p style="Normal" props="tabstops:8.25cm/B0">	--&gt; fp_CellContainer</p>
<p style="Normal" props="tabstops:8.25cm/B0"> 	--&gt; fp_VerticalContainer</p>
<p style="Normal" props="tabstops:11.62cm/B0">	--&gt; fp_Column-	</p>
<p style="Normal" props="tabstops:11.62cm/B0">	-&gt;fp_ShadowColumn</p>
<p style="Normal" props="tabstops:11.62cm/B0">	 -&gt;fp_PositionedColumn</p>
<p style="Normal" props="tabstops:8.25cm/B0">	--&gt;fp_HdrFtrContainer</p>
<p style="Normal" props="tabstops:8.25cm/B0">	--&gt;fp_EndNoteContainer</p>
<p style="Normal" props="tabstops:8.25cm/B0">	--&gt;fp_FootnoteContainer</p>
<p style="Normal" props="tabstops:12.50cm/B0,8.25cm/B0">	--&gt; fp_RowContainer--&gt;	</p>
<p style="Normal" props="tabstops:12.50cm/B0">	-----&gt; fp_Line</p>
<p style="Normal"><c></c></p>
<p style="Normal">I've thought through a number of suggestions to make fp_Line derive from fp_RowContainer. They make sense if fp_Run also derives from fp_ContainerObject. Since fp_Run has all the required methods defined this is no problem at all.</p>
<p style="Normal"><c></c></p>
<p style="Normal">The big win from this is to be able to "pack" arbitary collections of containers, left,right, center and full justfied by using a generalized fb_LineBreaker class.</p>
<p style="Normal"><c></c></p>
<p style="Normal">Given this I thought we should have a fp_verticalContainer that enables the "breakSection" method in fl_DocSectionLayout to layout vertical containers. fp_Column now dervices this too since columns are vertical collections of containers.</p>
<p style="Normal"><c></c></p>
<p style="Normal">In answer to Tomas I think we want fp_Column to derive from fp_Container so we can cast a getContainer() to fp_Column. The getContainer method of fp_Column should always return NULL though.</p>
<p style="Normal"><c></c></p>
<p style="Normal">Further thought revealed that restricting the tableContainer to a vertical collection of rows is much too restrictive. </p>
<p style="Normal"><c></c></p>
<p style="Normal">So tables need to have their own layout algorithmn to size and position their containers. Such algorithms already exist. We could easily just grab the methods in GtkTable for a simple 4-pass algorithm.</p>
<p style="Normal"><c></c></p>
<p style="Normal">Then in addition to these methods available to all fp_ContainerObjects.</p>
<p style="Normal"><c></c></p>
<p style="Normal">getContainerType(void)</p>
<p style="Normal">draw( drawArgs)</p>
<p style="Normal">clearScreen()</p>
<p style="Normal">getX(void)</p>
<p style="Normal">getY(void)</p>
<p style="Normal">getWidth(void)</p>
<p style="Normal">getHeight(void)</p>
<p style="Normal">getXLayoutUnits(void)</p>
<p style="Normal">getYLayoutUnits(void)</p>
<p style="Normal">getWidthLayoutUnits(void)</p>
<p style="Normal">getHeightUnits(void)</p>
<p style="Normal">getNext(void)</p>
<p style="Normal">getPrev(void)</p>
<p style="Normal">getSectionLayout(void)</p>
<p style="Normal">setX(UT_sint32 )</p>
<p style="Normal">setY(UT_sint32 )</p>
<p style="Normal">setWidth(UT_uint32)</p>
<p style="Normal">setHeight(UT_uint32 )</p>
<p style="Normal">setXLayoutUnits(UT_uint32 )</p>
<p style="Normal">setYLayoutUnits(UT_uint32 )</p>
<p style="Normal">setWidthLayoutUnits(UT_uint32)</p>
<p style="Normal">setHeightUnits(UT_uint32)</p>
<p style="Normal">setNext(fp_ContainerObject *)</p>
<p style="Normal">setPrev(fp_ContainerObject *)</p>
<p style="Normal"><c></c></p>
<p style="Normal">The fp_Container class have:</p>
<p style="Normal"><c></c></p>
<p style="Normal">getColumn(void);</p>
<p style="Normal">getContainer(void);</p>
<p style="Normal">UT_Vector * (fp_ContainerObject *) getContainerChildren();</p>
<p style="Normal"><c></c></p>
<p style="Normal">The getColumn would work by just recursively calling getColumn until a column was obtained. The getContainer() would just return the holding container.</p>
<p style="Normal"><c></c></p>
<p style="Normal">The getContainerChilder(0 method returns a pointer to vector of pointers to the children of the container. This is a useful generic way of obtaining all the children of a given container.</p>
<p style="Normal"><c></c></p>
<p style="Normal"> fp_Column classes have:</p>
<p style="Normal"><c></c></p>
<p style="Normal">getPage()</p>
<p style="Normal">getColumnLeader()</p>
<p style="Normal">getFollower()</p>
<p style="Normal"><c></c></p>
<p style="Normal"></p>
<p style="Normal">The advantage of this aproach is that it makes it possible to nest containers inside each other while preserving the distinction of fp_Columns which get layed out right on a page.</p>
<p style="Normal"></p>
<p style="Normal">Ome further thought on this. Once we get allow positioned objects we have to start worrying about itterative layout on pages in conjunction with the new section breaker class. When we start to layout columns on the page we don't know whether there will be a positioned object on the page or container. If a positioned object is found, it should be placed on the current page and the  layed out around it. This means breaking the containers up into rectangular objects that get positioned</p>
<p style="Normal"></p>
<p level="1" listid="388365092" style="Section Heading" props="list-delim:Section %L.; list-style:Numbered List; start-value:1; margin-left:0.0000in; text-indent:0.0000in; field-font:Arial"><c props="list-tag:1768985456; lang:en-US"></c><field type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal">	Logical Layout Fl_* classes</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	To make the Tables/footnotes/positioned objects work we need additional fl_Layout classes as well as the fp_Container classes. The idea of course is to rewrite as little as possible of our current code. </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The fl_Layout classes contain the logical assembly of text and images in the document.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"> </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Currently our fl_Layout classes consist of:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_Layout - generic Base class.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_DocLayout     - 	overall class for the entire document - contains all </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">			the sectionlayouts and pages.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_SectionLayout - 	generic SectionLayout for collecting groups of </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                   		fl_BlockLayouts.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_DocSectionLayout - Collection of fl_BlockLayout's within a given </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                      		section of the document. It positions lines in containers.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_HdrFtrSectionLayout - 	Collection of fl_BlockLayout's that make up an </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                         		invisible HdrFtr for a given DocSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_ShadowLayout       	Collection of fl_BlockLayout's that are copies of</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                         	the master HdrFtr that are actually visible and </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                         	drawn to the screen.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_BlockLayout         	Container of text and image runs that make up the </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                         	document.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_DocListener         	Interface between the pieceTable and the Layout </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                         	classes </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The primary job of the layout classes is to assemble smaller pieces into  larger collections. So fl_BlockLayout assembles runs into lines,  fl_DocSectionLayout assembles lines into columns, fl_HdrFtrSectionLayout assembles lines into a header/footer etc.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The current class heiracy is:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_Layout |</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">          |--&gt; fl_DocLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">          |--&gt; fl_BlockLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">          |--&gt; fl_SectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">             |--&gt; fl_DocSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">             |--&gt; fl_HdrFtrSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">             |--&gt; fl_EndNoteSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Within fl_DocSectionLayout is a method called breakSection() and some associated methods. I think these should be liberated and placed into seperate classes called fb_BreakSection in analagy with fb_LineBreaker. </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The linked list of classes was:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">m_pFirstSection-&gt;DocSec&lt;=&gt;DocSec&lt;=&gt;DocSec&lt;=&gt;EndNoteSec&lt;=&gt;HdrFtrSec=&gt;NULL</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Within each section is a linked list of fl_BlockLayouts.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">m_pFirstBlockLayout&lt;=&gt;Block&lt;=&gt;Block&lt;=&gt;Block&lt;=&gt;NULL.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Each block has is own linked list runs and lines.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">So for the next generation code we add cells, tables, footnotes and endnotes. These must be contained by fl_DocSectionLayout and they also contain fl_BlockLayouts.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">So we need new classes derived from fl_SectionLayout to contain the fl_BlockLayouts for these new containers.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">These are fl_TableSectionLayout, fl_CellSectionLayout, fl_FootnoteSectionLayout. The class heiracy I propose is:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_Layout 	|</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">          		|--&gt; fl_DocLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">          		|--&gt; fl_ContainerLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">             		|--&gt; fl_BlockLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">             		|--&gt; fl_SectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                		|--&gt; fl_HdrFtrSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                   		|--&gt;fl_BreakSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                      		|--&gt; fl_DocSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                      		|--&gt; fl_EndNoteSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                      		|--&gt; fl_TableSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                         		|--&gt; fl_PositionedSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                      		|--&gt; fl_CellSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">                      		|--&gt; fl_FootnoteSectionLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The idea of putting fl_BlockLayout and fl_SectionLayout under a new base class is that methods like the following can be applied to any fl_ContainerLayout</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">purgeLayout(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">collapse(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">isCollapsed(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">setNeedsReformat(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">needsReformat(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">setNeedsRedraw(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">markAllRunsDirty(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">format(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">getLayoutType(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">clearScreen(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">getNext(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">setNext(fl_ContainerLayout *);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">updateBackgroundColor(void);</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Maybe others too.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">This allows us to easily generalize the simple linked list of fl_BlockLayout classes which used to be all a DocSection could hold to something like:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">m_pFirstBlockLayout&lt;=&gt;fl_Block&lt;=&gt;fl_Table&lt;=&gt;fl_Block&lt;=&gt;fl_Position&lt;=&gt;</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_Table&lt;=&gt;fl_Footnote&lt;fl_Block&lt;=&gt;fl_EndNote=&gt;NULL</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Then each Table holds the following linked list</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">m_pFirstCell&lt;=&gt;fl_Cell&lt;=&gt;fl_Cell&lt;=&gt;fl_Cell=&gt;NULL</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Each Cell holds:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">m_pFirstBlock=&gt;fl_Block&lt;=&gt;fl_Table&lt;=&gt;fl_Block=&gt;NULL</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">each.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">By placing all these classes under generic heiracy we can treat each layout as a type of container and apply the same methods to each.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">So a collapse method on a DocSectionLayout is translated down through all the layout classes under it's linked list.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Now the other thing we do is to generalize fb_BreakSection to assemble not just lines into columns but any container found in the DocSection into a column. This code can also be made generic so that for example a cell can assemble text into itself and we allow containers to be broken.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"> </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">fl_TableSectionLayout of course needs a method to assemble cells into a table.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">What of fl_DocListener? Well we'll need new piecetable struxes to hold the properties of the new containers Table,cell,footnote, positionedObject. If a property of any of these containers change, the contents of the container are cleared and then recalculate, the same way we do things for DocSectionLayouts now.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">OK folks, opinions on this? Once again I think it will not be too hard to refactor the code to allow these generalizations.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="388365092" style="Section Heading" props="list-delim:Section %L.; list-style:Numbered List; start-value:1; margin-left:0.0000in; text-indent:0.0000in; field-font:Arial"><c props="list-tag:960598985; lang:en-US"></c><field type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal">	PieceTable Changes</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">	To build tables/footnotes/positioned objects etc we also </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">need to make some changes to the piecetable. My proposal is to add </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">new frag_stux's</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">In particular:</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">PTX_SectionTable, PTX_SectionTableEnd,PTX_SectionCell, </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">PTX_SectionFootnote,PTX_SectionFootnoteEnd,PTX_SectionPositioned, </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">PTX_SectionPositionedEnd</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">These derive directly from the pf_Frag_Section class. The only difference is the type.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">We need to the PTX_SectionTableEnd, PTX_SectionFootnoteEnd and </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">PTX_SectionPositionedEnd</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">struxes to close off the table, footnote and positioned object definitions.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The properties associated with the table,cell,footnote and positionedobject struxes define the type of structure.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Editting operations. All normal editting operations will be passed throough to the fl_BlockLayouts as before. I see no need to change this. </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Operations on cell/table/footnote/positionedobject struxes will be transmitted via fl_DocListener to the SectionLayout classes associated with these piecetable items. The associated layouts will be collapsed and redrawn with the new properties, the same </c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">way we do things for fl_DocSectionLayout now.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">The fb_SectionBreaker classes will take care of breaking these objects so they fit into columns on a page.</c></p>
<p level="1" listid="388365092" style="Section Heading" props="list-delim:Section %L.; list-style:Numbered List; start-value:1; margin-left:0.0000in; text-indent:0.0000in; field-font:Arial"><c props="list-tag:1809355662; lang:en-US"></c><field type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Arial; font-style:normal; font-weight:bold; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:17pt; height:0in; text-position:normal">	Migration to the new Layout Engine</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Ok the final email on these new classes is a strategy for migrating our code base to use the new layout engine. Here is my proposal.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">When we're happy that we've reached consesus the way we want to go,</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="1942189962" parentid="0" style="Normal" props="margin-top:0.0000in; list-style:Numbered List; start-value:1; margin-left:0.5000in; margin-bottom:0.0000in; text-indent:-0.3000in; line-height:1.000000; text-align:left; margin-right:0.0000in; field-font:Times New Roman"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; list-tag:200886023; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><field type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Hub creates new CVS modules which are initially just a copy of the current modules.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="1942189962" style="Normal" props="margin-top:0.0000in; list-decimal:.; margin-left:0.5000in; start-value:1; text-indent:-0.3000in; margin-bottom:0.0000in; list-delim:%L; margin-right:0.0000in; list-style:Numbered List; line-height:1.000000; text-align:left; field-font:Times New Roman"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; list-tag:1054101601; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><field type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">We implement the fp_Container class heiracy and make the current code work for the new heiracy with fp_Lines as fp_ContainerObjects etc. We generalize fb_LineBreaker to break any fp_ContainerObjects into horizontally laid out lines.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Once the new class heiracy works with existing documents we go to stage 3.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="1942189962" style="Normal" props="margin-top:0.0000in; list-decimal:.; margin-left:0.5000in; start-value:1; text-indent:-0.3000in; margin-bottom:0.0000in; list-delim:%L; margin-right:0.0000in; list-style:Numbered List; line-height:1.000000; text-align:left; field-font:Times New Roman"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; list-tag:475081926; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><field type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">We implement the new Layout class heiracy with fl_BLockLayout and fl_SectionLayout as subclasses of fl_ContainerLayout. The fl_ContainerLayout abstract base class is fully defined. We create the new fb_SectionBreaker class to layout any collection of objects vertically.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Once we've made this new heiracy work with our existing code we go to stage 4.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="1942189962" style="Normal" props="margin-top:0.0000in; list-decimal:.; margin-left:0.5000in; start-value:1; text-indent:-0.3000in; margin-bottom:0.0000in; list-delim:%L; margin-right:0.0000in; list-style:Numbered List; line-height:1.000000; text-align:left; field-font:Times New Roman"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; list-tag:943381750; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><field type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Put the new struxes into the piecetable and investigate the properties we need them to define. I suggest we use RTF as a model here. RTF version 1.6 is basically a blueprint on how MS Word 2000 works.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="1942189962" style="Normal" props="margin-top:0.0000in; list-decimal:.; margin-left:0.5000in; start-value:1; text-indent:-0.3000in; margin-bottom:0.0000in; list-delim:%L; margin-right:0.0000in; list-style:Numbered List; line-height:1.000000; text-align:left; field-font:Times New Roman"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; list-tag:221109904; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><field type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Now the fun really starts. We implement the new fp_Container classes, then the fl_Section classes and connect them to the  piecetable via fl_Doclistener. Once this is done we define the new tags needed for our AbiWord_2 importer/exporter. This is actually very easy. We just invent tag names for our new struxes and include them in the "case" statements.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p level="1" listid="1942189962" style="Normal" props="margin-top:0.0000in; list-decimal:.; margin-left:0.5000in; start-value:1; text-indent:-0.3000in; margin-bottom:0.0000in; list-delim:%L; margin-right:0.0000in; list-style:Numbered List; line-height:1.000000; text-align:left; field-font:Times New Roman"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; list-tag:272200771; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c><field type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal"></field><c type="list_label" props="width:0in; font-family:Times New Roman; font-style:normal; font-weight:normal; lang:en-US; text-decoration:none; bgcolor:transparent; color:000000; font-size:12pt; height:0in; text-position:normal">	</c><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">Once we can import/export tables/footnotes/endnotes to *.abw we begin work on the Table/footnote/endnote/positioned object UI.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">IMHO MS Word provides a base from which to work here. In my opinion this is still rather cumbersome so I'd love to get some help for how to do a better Table UI.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">We will definitely need to rework how to do selections and how to keep the cursor inside a container. The latter can be done with a generalization of getEdittableBounds().</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">In the case of the former may not want to draw a selection over footnotes/endnotes and positioned object's.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">For deletions that cross cell boundaries we will want to pop up a little window to ask above deleting cells/rows/columns etc the way Gnumeric/excell/MS Word does now. It should not be hard to trigger this. Just put a hook into in to detect attempts to delete Table or cell struxes.</c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none"></c></p>
<p style="Normal" props="margin-top:0.0000in; margin-left:0.0000in; text-indent:0.0000in; margin-bottom:0.0000in; line-height:1.000000; text-align:left; margin-right:0.0000in"><c props="font-family:Times New Roman; font-size:12pt; lang:en-US; text-position:normal; font-weight:normal; font-style:normal; text-decoration:none">This strategy allows us several checkpoints to make sure we're on the right track to a much more sophisticated layout engine.</c></p>
</section>
</abiword>

