<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dougt&#039;s blog &#187; layout</title>
	<atom:link href="http://dougt.org/wordpress/tag/layout/feed/" rel="self" type="application/rss+xml" />
	<link>http://dougt.org/wordpress</link>
	<description>best. tagline. ever.</description>
	<lastBuildDate>Mon, 26 Jul 2010 03:18:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Layout Engine Internals Video</title>
		<link>http://dougt.org/wordpress/2008/11/layout-engine-internals-video/</link>
		<comments>http://dougt.org/wordpress/2008/11/layout-engine-internals-video/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 16:47:26 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[gecko]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://dougt.wordpress.com/?p=277</guid>
		<description><![CDATA[David Baron spoke last week at the Google Tech Talks.  It is a great talk if you want to understand a how browser work. [youtube=http://www.youtube.com/watch?v=a2_6bGNZ7bA]]]></description>
			<content:encoded><![CDATA[<p><span>David Baron spoke last week at the </span><span>Google Tech Talks.  It is a great talk if you want to understand a how browser work.</span></p>
<p><span>[youtube=http://www.youtube.com/watch?v=a2_6bGNZ7bA]<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2008/11/layout-engine-internals-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is a reflow?</title>
		<link>http://dougt.org/wordpress/2008/05/what-is-a-reflow/</link>
		<comments>http://dougt.org/wordpress/2008/05/what-is-a-reflow/#comments</comments>
		<pubDate>Sun, 25 May 2008 02:30:10 +0000</pubDate>
		<dc:creator>dougt</dc:creator>
				<category><![CDATA[mozilla]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[layout]]></category>

		<guid isPermaLink="false">http://dougt.wordpress.com/?p=216</guid>
		<description><![CDATA[Reflow is the process by which the geometry of the layout engine&#8217;s formatting objects are computed.  Last week, I was searching around and stumbled on these really cool visuals of what a reflow looks like.  If you&#8217;re a visual person, you will dig these: Reflow of Mozilla.org: [googlevideo=http://video.google.com/googleplayer.swf?docid=1020647662203348823] Reflow of Google.co.jp: [googlevideo=http://video.google.com/googleplayer.swf?docid=-1471976166301235697] Reflow of Wikipedia: [...]]]></description>
			<content:encoded><![CDATA[<p>Reflow is <a href="http://www.mozilla.org/newlayout/doc/reflow.html">the process by which the geometry of the    layout engine&#8217;s formatting objects are computed</a>.  Last week, I was searching around and stumbled on these really cool visuals of what a reflow looks like.  If you&#8217;re a visual person, you will dig these:</p>
<p>Reflow of Mozilla.org:</p>
<p>[googlevideo=http://video.google.com/googleplayer.swf?docid=1020647662203348823]</p>
<p>Reflow of Google.co.jp:</p>
<p>[googlevideo=http://video.google.com/googleplayer.swf?docid=-1471976166301235697]</p>
<p>Reflow of Wikipedia:</p>
<p>[googlevideo=http://video.google.com/googleplayer.swf?docid=-5863446593724321515]</p>
<p>If you produced these, kudos!  If you know how to produce such things, please drop a note!</p>
<p><em><strong><br />
</strong></em></p>
<p><em><strong>Update:</strong></em></p>
<p>Satoshi Ueyama is the author of this cool demo.  He sent <a href="http://blog.mozilla.com/gen/">Gen</a> a note on how he did it:</p>
<blockquote><p>First, he builds Mozilla so that the layout portions (nsIFrame::SetRect, nsIFrame::SetSize, nsIFrame;;SetPosition, PresShell::DoReflow, etc) are set to output to the log file.</p>
<p>He then gives an example of the log of each of the frame movements from Reflow:</p>
<pre>{"event": "MoveFrame", "frame": {"address": "0x04FE41A8", "type":
"TextFrame", "content": {"address": "0x05014150", "type": "other"},
"rect": {"x": 0, "y": 0, "w": 0, "h": 0}}},
{"event": "MoveFrame", "frame": {"address": "0x04FE41A8", "type":
"TextFrame", "content": {"address": "0x05014150", "type": "other"},
"rect": {"x": 0, "y": 0, "w": 0, "h": 0}}},</pre>
<p>Here is an example of dump from the termination of the tree structure.</p>
<pre>{"event": "FinishReflow", frame:
 {"address": "0x04FE3E28", "type": "ViewportFrame", "content": null,
"children":[
     {"address": "0x04FE4000", "type": "ScrollFrame", "content":
{"address": "0x04FD4858", "type": "element", "tagName": "HTML"},
"children":[
         {"address": "0x04FE43EC", "type": "ScrollbarFrame",
"content": {"address": "0x04FFEFF8", "type": "element", "tagName":
"scrollbar"}, "children":[
             {"address": "0x04FE4578", "type": "BoxFrame", "content":
{"address": "0x04FFE0F8", "type": "element", "tagName":
"xul:scrollbarbutton"} }
     ,
       {"address": "0x04FE47BC", "type": "sliderFrame", "content":
{"address": "0x04FFE278", "type": "element", "tagName": "xul:slider"},
"children":[
                 {"address": "0x05004E6C", "type": "BoxFrame",
"content": {"address": "0x050030E8", "type": "element", "tagName":
"xul:thumb"}, "children":[
                     {"address": "0x05004FDC", "type": "BoxFrame",
"content": {"address": "0x050013F0", "type": "element", "tagName":
"xul:gripper"} }
         ] }</pre>
<p>He then makes the video animation (for Google Video he suggests Ruby+Ruby/SDL, for the video from Mozilla 24 he used C+++Direct3d.) As memory address is outputted to the log each frame can be distinct.</p>
<p>The behavior of each frame in chronological order is reproducible as the log has each frame&#8217;s memory. (For instance, in tracking the frame &#8220;address&#8221;:&#8221;0x04FE41A8&#8243;, you can reproduce that frame&#8217;s behavior chronologically.</p></blockquote>
<p>UPDATE:</p>
<p>New links for the videos (thanks Gen!):</p>
<p><a href="http://www.youtube.com/watch?v=nJtBUHyNBxs">http://www.youtube.com/watch?v=nJtBUHyNBxs</a><br />
<a href="http://www.youtube.com/watch?v=ZTnIxIA5KGw">http://www.youtube.com/watch?v=ZTnIxIA5KGw</a><br />
<a href="http://www.youtube.com/watch?v=dndeRnzkJDU">http://www.youtube.com/watch?v=dndeRnzkJDU</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dougt.org/wordpress/2008/05/what-is-a-reflow/feed/</wfw:commentRss>
		<slash:comments>55</slash:comments>
		</item>
	</channel>
</rss>
