Compare Revisions

Notes on HTML Reflow

Revision 161903:

Revision 161903 by DBaron on

Revision 447959:

Revision 447959 by Roc on

Title:
Notes on HTML Reflow
Notes on HTML Reflow
Slug:
Notes_on_HTML_Reflow
Notes_on_HTML_Reflow
Tags:
Gecko
"Gecko"
Content:

Revision 161903
Revision 447959
nn7    <h3 name="Overview">
8      <span style="color:#ff0000;">The details on this page are o
 >bsolete.</span>
9    </h3>
n11      <i>Reflow</i> is the process by which the geometry of the ln14      <i>Reflow</i> is the process by which the geometry of the l
>ayout engine's formatting objects are computed. The HTML formatti>ayout engine's formatting objects are computed. The HTML formatti
>ng objects are called <i>frames</i>: a frame corresponds to the g>ng objects are called <i>frames</i> : a frame corresponds to the 
>eometric information for (roughly) a single element in the conten>geometric information for (roughly) a single element in the conte
>t model; the frames are arranged into a hierarchy that parallels >nt model; the frames are arranged into a hierarchy that parallels
>the containment hierarchy in the content model. A frame is rectan> the containment hierarchy in the content model. A frame is recta
>gular, with width, height, and an offset from the parent frame th>ngular, with width, height, and an offset from the parent frame t
>at contains it.>hat contains it.
n14      More than one frame may be needed to represent a single elen17      More than one frame may be needed to represent a single ele
>ment from the content model; for example, text that wraps is brok>ment from the content model; for example, text that wraps is brok
>en into several frames, one per wrapped line. In this case, the <>en into several frames, one per wrapped line. In this case, the <
>i>primary frame</i> is the frame containing the first line of tex>i>primary frame</i> is the frame containing the first line of tex
>t, with <i>continuing frames</i> (or <i>continuations</i>) create>t, with <i>continuing frames</i> (or <i>continuations</i> ) creat
>d for subsequent lines.>ed for subsequent lines.
n20      The XUL box layout model, on the other hand, is <i>constrain23      The XUL box layout model, on the other hand, is <i>constrai
>nt based</i>, meaning that geometric preferences and constraints >nt based</i> , meaning that geometric preferences and constraints
>of neighboring elements are taken into consideration before the e> of neighboring elements are taken into consideration before the 
>lements' final geometry can be computed. The <i>box</i> is the ge>elements' final geometry can be computed. The <i>box</i> is the g
>ometric primitive for the XUL layout model.>eometric primitive for the XUL layout model.
n23      All HTML reflow, including the <i>initial reflow</i>, beginn26      All HTML reflow, including the <i>initial reflow</i> , begi
>s at the <i>root frame</i>, which corresponds to the <code>&lt;ht>ns at the <i>root frame</i> , which corresponds to the <code>&lt;
>ml&gt;</code> element of the HTML document. Reflow proceeds recur>html&gt;</code> element of the HTML document. Reflow proceeds rec
>sively through some or all of the frame hierarchy, computing geom>ursively through some or all of the frame hierarchy, computing ge
>etric information for each frame object that requires it. Reflow >ometric information for each frame object that requires it. Reflo
>may have the side-effect of creating new continuation frames, for>w may have the side-effect of creating new continuation frames, f
> example, for a text frame when the text must be wrapped.>or example, for a text frame when the text must be wrapped.
n44      All reflows have a <i>reason</i>, which is maintained in thn47      All reflows have a <i>reason</i> , which is maintained in t
>e reflow state object (and may mutate, as described below). The r>he reflow state object (and may mutate, as described below). The 
>eflow reason controls how a frame reacts during a reflow, and is >reflow reason controls how a frame reacts during a reflow, and is
>one of the following:> one of the following:
n77      A dirty reflow is never performed directly from the presentn80      A dirty reflow is never performed directly from the present
>ation shell. Instead, a dirty reflow is detected when an incremen>ation shell. Instead, a dirty reflow is detected when an incremen
>tal reflow reaches its <i>target frame</i>, described below.>tal reflow reaches its <i>target frame</i> , described below.
n92      <b>Scheduling</b>. To request (or <i>schedule</i>) an incren95      <b>Scheduling</b>. To request (or <i>schedule</i> ) an incr
>mental reflow (e.g., in response to a change in the content model>emental reflow (e.g., in response to a change in the content mode
>), a <i>reflow command</i> object is created and passed to the pr>l), a <i>reflow command</i> object is created and passed to the p
>esentation shell via the <code>nsIPresShell::AppendReflowCommand<>resentation shell via the <code>nsIPresShell::AppendReflowCommand
>/code> method. The presentation shell does not process the comman></code> method. The presentation shell does not process the comma
>d immediately. Instead, it queues the command, and processes it a>nd immediately. Instead, it queues the command, and processes it 
>synchronously along with other queued reflow commands <i>en masse>asynchronously along with other queued reflow commands <i>en mass
></i>.>e</i> .
n95      <b>Coalescing</b>. As described below, the reflow command hn98      <b>Coalescing</b>. As described below, the reflow command h
>as a <i>type</i> and a <i>target frame</i>. Multiple reflow comma>as a <i>type</i> and a <i>target frame</i> . Multiple reflow comm
>nds with the same type and target frame are <i>coalesced</i>: the>ands with the same type and target frame are <i>coalesced</i> : t
> presentation shell simply refuses to add subsequent commands of >he presentation shell simply refuses to add subsequent commands o
>the same type for the same frame to the queue. A caller may also >f the same type for the same frame to the queue. A caller may als
><i>cancel</i> a reflow command that is in the queue; e.g., if the>o <i>cancel</i> a reflow command that is in the queue; e.g., if t
> target frame is destroyed.>he target frame is destroyed.
n104      The incremental reflow proceeds recursively through the fran107      The incremental reflow proceeds recursively through the fra
>me hierarchy. Each frame along the incremental reflow path (as sp>me hierarchy. Each frame along the incremental reflow path (as sp
>ecified in the reflow command object) extracts the <i>next frame<>ecified in the reflow command object) extracts the <i>next frame<
>/i> and dispatches the reflow downward. In order to correctly dis>/i> and dispatches the reflow downward. In order to correctly dis
>patch the reflow to the child frame, the frame may need to perfor>patch the reflow to the child frame, the frame may need to perfor
>m some <i>state recovery</i>; for example, a block frame will tra>m some <i>state recovery</i> ; for example, a block frame will tr
>verse its line list to recover the space occupied by floated fram>averse its line list to recover the space occupied by floated fra
>es.>mes.
n107      At some point, the incremental reflow reaches the <i>targetn110      At some point, the incremental reflow reaches the <i>target
> frame</i>, at which point the reflow command's <i>type</i> becom> frame</i> , at which point the reflow command's <i>type</i> beco
>es significant.>mes significant.
tt175    <p>
176      &nbsp;
177    </p>

Back to History