<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE abiword PUBLIC "-//ABISOURCE//DTD AWML 1.0 Strict//EN" "http://www.abisource.com/awml.dtd">
<abiword template="false" styles="unlocked" version="0.99.2" xmlns:svg="http://www.w3.org/2000/svg" xmlns:dc="http://purl.org/dc/elements/1.1/" fileformat="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:awml="http://www.abisource.com/awml.dtd" xmlns="http://www.abisource.com/awml.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" props="dom-dir:ltr; lang:en-US">
<!-- ======================================================================== -->
<!-- This file is an AbiWord document.                                        -->
<!-- AbiWord is a free, Open Source word processor.                           -->
<!-- More information about AbiWord is available at http://www.abisource.com/ -->
<!-- You should not edit this file by hand.                                   -->
<!-- ======================================================================== -->

<metadata>
<m key="dc.format">application/x-abiword</m>
<m key="abiword.generator">AbiWord</m>
</metadata>
<history version="10" edit-time="15239" last-saved="1091769403" uid="e0e42264-e72e-11d8-8c0b-d3c28ef1748e">
<version id="4" started="1091745341" uid="28fe9470-e730-11d8-8c0b-d3c28ef1748e" auto="0"/>
<version id="10" started="1091757205" uid="cdf13410-e767-11d8-979b-dae447688767" auto="0"/>
</history>
<styles>
<s type="P" name="Heading 1" basedon="Normal" followedby="Normal" props="font-size:17pt; margin-top:22pt; font-weight:bold; margin-bottom:3pt; font-family:Arial; keep-with-next:1"/>
<s type="P" name="Normal" followedby="Current Settings" props="text-indent:0in; margin-top:0pt; margin-left:0pt; font-stretch:normal; line-height:1.0; text-align:left; bgcolor:transparent; lang:en-US; dom-dir:ltr; margin-bottom:0pt; font-weight:normal; text-decoration:none; font-variant:normal; color:000000; text-position:normal; font-size:12pt; margin-right:0pt; font-style:normal; widows:2; font-family:Times New Roman"/>
<s type="P" name="Heading 2" basedon="Normal" followedby="Normal" props="font-size:14pt; margin-top:22pt; font-weight:bold; margin-bottom:3pt; font-family:Arial; keep-with-next:1"/>
</styles>
<lists>
<l id="1000" parentid="0" type="0" start-value="1" list-delim="%L." list-decimal="."/>
<l id="1001" parentid="1000" type="0" start-value="1" list-delim="%L." list-decimal="."/>
<l id="1004" parentid="1001" type="0" start-value="1" list-delim="%L." list-decimal="."/>
<l id="1010" parentid="1000" type="0" start-value="1" list-delim="%L." list-decimal="."/>
</lists>
<pagesize pagetype="Letter" orientation="portrait" width="8.500000" height="11.000000" units="in" page-scale="1.000000"/>
<section props="page-margin-footer:0.5in; page-margin-header:0.5in">
<p style="Heading 1">Object wrapping</p>
<p style="Normal"><c></c></p>
<p style="Normal">Fundamentally a two-pass processes.</p>
<p style="Normal">Proposal:</p>
<p style="Normal">Do it at the page level during fb_ColumnBreaker</p>
<p style="Normal">New method in fp_Page called UpdateForWrapping.</p>
<p style="Normal">call this if next column is on a different page from the previous. </p>
<p style="Normal">On the previous page call this UpdateForWrapping method</p>
<p style="Normal"><c></c></p>
<p style="Normal">Need to deal with lines that no longer wrap objects (don't what gaps in in lines that used to wrap objects.)</p>
<p style="Normal"><c></c></p>
<p style="Normal">Can only do the second pass after the first pass via the layout() method in fp_Column is called.</p>
<p style="Normal">We use this to position frames. After the frames are positioned we do the second pass.</p>
<p style="Normal"><c></c></p>
<p style="Normal">Need new member for for lines that indicate if they've been "wrapped."</p>
<p style="Normal">Need a vector of wrapped lines in each column, filled during the layout() method.</p>
<p style="Normal">Need a member function in columns that returns true if the column contains any wrapped lines</p>
<p style="Normal"><c></c></p>
<p style="Heading 2">Update for wrapping.</p>
<p style="Normal">Do this if there are frames placed on the page with text wrapping enabled.</p>
<p level="1" listid="1000" parentid="0" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:0.5000in"><c props="list-tag:1001"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-variant:normal; font-weight:normal; lang:en-US; font-style:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-variant:normal; font-weight:normal; lang:en-US; font-style:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal">	Check if there are 0 frames and no wrapped lines. If so return.</c></p>
<p level="1" listid="1000" parentid="0" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:0.5000in"><c props="width:0in; list-tag:1007; font-family:Times New Roman; display:inline; color:000000; font-weight:normal; text-position:normal; lang:en-US; font-style:normal; font-variant:normal; text-decoration:none; bgcolor:transparent; list-style:Numbered List; homogeneous:1; height:0in; font-size:12pt; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	if no wrapped lines, </c><c props="width:0in; font-family:Times New Roman; display:inline; font-variant:normal; font-weight:normal; lang:en-US; font-style:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal">Check if the there is a frame with text wrapping. If not return.</c></p>
<p level="1" listid="1000" parentid="0" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:0.5000in"><c props="width:0in; list-tag:1008; font-family:Times New Roman; display:inline; color:000000; font-weight:normal; text-position:normal; lang:en-US; font-style:normal; font-variant:normal; text-decoration:none; bgcolor:transparent; list-style:Numbered List; homogeneous:1; height:0in; font-size:12pt; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	If wrapped lines but no frames</c></p>
<p level="2" listid="1010" parentid="1000" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:1.0000in"><c props="width:0in; list-tag:1009; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	Get a vector of the blocks in the page, format them, rebreak the column at the start of the page. (output of method needs to be whether to rebreak the column first column to break.)</c></p>
<p level="1" listid="1000" parentid="0" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:0.5000in"><c props="width:0in; list-tag:1003; font-family:Times New Roman; display:inline; color:000000; font-weight:normal; text-position:normal; lang:en-US; font-style:normal; font-variant:normal; text-decoration:none; bgcolor:transparent; list-style:Numbered List; homogeneous:1; height:0in; font-size:12pt; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-variant:normal; font-weight:normal; lang:en-US; font-style:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-variant:normal; font-weight:normal; lang:en-US; font-style:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal">	Check if any lines overlap the frames. If not return.</c></p>
<p level="1" listid="1000" parentid="0" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:0.5000in"><c props="width:0in; list-tag:1012; font-family:Times New Roman; display:inline; color:000000; font-weight:normal; text-position:normal; lang:en-US; font-style:normal; font-variant:normal; text-decoration:none; bgcolor:transparent; list-style:Numbered List; homogeneous:1; height:0in; font-size:12pt; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	</c><c props="width:0in; font-family:Times New Roman; display:inline; font-variant:normal; font-weight:normal; lang:en-US; font-style:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal">OK this is our main work section.</c></p>
<p level="2" listid="1001" parentid="1000" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:1.0000in"><c props="width:0in; list-tag:1002; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; homogeneous:1; font-variant:normal; bgcolor:transparent; font-size:12pt; color:000000; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	</c><c props="width:0in; font-family:Times New Roman; display:inline; color:000000; font-weight:normal; text-position:normal; lang:en-US; font-style:normal; font-variant:normal; bgcolor:transparent; homogeneous:1; text-decoration:none; height:0in; font-size:12pt; font-stretch:normal">Grab first line of the page.</c></p>
<p level="2" listid="1001" parentid="1000" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:1.0000in"><c props="width:0in; list-tag:1006; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; homogeneous:1; font-variant:normal; bgcolor:transparent; font-size:12pt; color:000000; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	Iterate through the lines in the columns until we come across a line overlaps a positioned and text wrapped frame.</c></p>
<p level="3" listid="1004" parentid="1001" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:1.5000in"><c props="width:0in; list-tag:1003; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; homogeneous:1; font-variant:normal; bgcolor:transparent; font-size:12pt; color:000000; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	Get it's block.</c></p>
<p level="3" listid="1004" parentid="1001" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:1.5000in"><c props="width:0in; list-tag:1005; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	Reformat the Block with a pointer to this page. This reformat will place lines around the frames in the page via the getNewContainerForPage method.</c></p>
<p level="3" listid="1004" parentid="1001" style="Normal" props="start-value:1; text-indent:-0.3000in; list-style:Numbered List; field-font:NULL; margin-left:1.5000in"><c props="width:0in; list-tag:1013; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	getnext block and reformat with pointer to this page.</c></p>
<p level="2" listid="1001" parentid="1001" style="Normal" props="list-delim:%L; list-decimal:.; list-style:Numbered List; start-value:1; margin-left:1.0000in; text-indent:-0.3000in; field-font:NULL"><c props="width:0in; list-tag:1014; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	At end of block, do layout() method on all columns</c></p>
<p level="2" listid="1001" parentid="1001" style="Normal" props="list-delim:%L; list-decimal:.; list-style:Numbered List; start-value:1; margin-left:1.0000in; text-indent:-0.3000in; field-font:NULL"><c props="width:0in; list-tag:1016; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	Check if any lines overlap the frames.</c></p>
<p level="2" listid="1001" parentid="1001" style="Normal" props="list-delim:%L; list-decimal:.; list-style:Numbered List; start-value:1; margin-left:1.0000in; text-indent:-0.3000in; field-font:NULL"><c props="width:0in; list-tag:1017; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	if overlap goto 5</c></p>
<p level="2" listid="1001" parentid="1001" style="Normal" props="list-delim:%L; list-decimal:.; list-style:Numbered List; start-value:1; margin-left:1.0000in; text-indent:-0.3000in; field-font:NULL"><c props="width:0in; list-tag:1018; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	if not, identify the next container not on this page as the first container of the next</c></p>
<p level="1" listid="1000" parentid="1001" style="Normal" props="list-delim:%L; list-decimal:.; list-style:Numbered List; start-value:1; margin-left:0.5000in; text-indent:-0.3000in; field-font:NULL"><c props="width:0in; list-tag:1015; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; lang:en-US; font-variant:normal; color:000000; list-style:Numbered List; bgcolor:transparent; font-size:12pt; homogeneous:1; text-decoration:none; height:0in; text-position:normal; font-stretch:normal"></c><field type="list_label" props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal"></field><c props="width:0in; font-family:Times New Roman; display:inline; font-style:normal; font-weight:normal; bgcolor:transparent; lang:en-US; text-position:normal; homogeneous:1; color:000000; font-variant:normal; text-decoration:none; font-size:12pt; height:0in; list-style:Numbered List; font-stretch:normal">	We're done!</c></p>
</section>
</abiword>
