{"id":404,"date":"2009-01-09T17:35:44","date_gmt":"2009-01-09T21:35:44","guid":{"rendered":"http:\/\/benjamin.smedbergs.us\/blog\/?p=404"},"modified":"2009-01-09T17:35:52","modified_gmt":"2009-01-09T21:35:52","slug":"mozilla-layout-classes-nsiframe-class-hierarchy","status":"publish","type":"post","link":"http:\/\/benjamin.smedbergs.us\/blog\/2009-01-09\/mozilla-layout-classes-nsiframe-class-hierarchy\/","title":{"rendered":"Mozilla Layout Classes: nsIFrame class hierarchy"},"content":{"rendered":"<p>The Mozilla layout code uses <a href=\"https:\/\/developer.mozilla.org\/En\/Layout_System_Overview\">frame objects to lay out the DOM on the screen<\/a>. (These are entirely different from &#038;lt:frame&gt; nodes in the DOM). All Mozilla frames inherit from a single C++ abstract class nsIFrame. As part of a <a href=\"https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=396185\">project<\/a> I&#8217;m working on to separate the frame classes from XPCOM, I used <a href=\"https:\/\/developer.mozilla.org\/en\/Dehydra\">dehydra<\/a> to generate a graph of all the frame types in Mozilla.<\/p>\n<p><strong><a href=\"http:\/\/benjamin.smedbergs.us\/blog\/wp-content\/uploads\/2009\/01\/frame-graph.svg\">See the graph in SVG format.<\/a><\/strong><\/p>\n<p>What I really want for Christmas is a web-based interactive graph viewer for this type of content. I&#8217;ve seen a couple closed-source things in Java, but nothing really exciting or hackable.<\/p>\n<p><em>Note: Viewing this graph in Safari won&#8217;t work, because the image is much larger than a single screen, and Safari doesn&#8217;t provide scrollbars for SVG that overflows&#8230; feel free to download it and view in inkscape, though, or <a href=\"http:\/\/getfirefox.com\/\">get Firefox!<\/a>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Mozilla layout code uses frame objects to lay out the DOM on the screen. (These are entirely different from &#038;lt:frame&gt; nodes in the DOM). All Mozilla frames inherit from a single C++ abstract class nsIFrame. As part of a project I&#8217;m working on to separate the frame classes from XPCOM, I used dehydra to [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,6],"tags":[57,202,77],"class_list":["post-404","post","type-post","status-publish","format-standard","hentry","category-mozilla","category-untagged","tag-dehydra","tag-nsiframe","tag-svg"],"_links":{"self":[{"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts\/404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/comments?post=404"}],"version-history":[{"count":11,"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts\/404\/revisions"}],"predecessor-version":[{"id":416,"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/posts\/404\/revisions\/416"}],"wp:attachment":[{"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/media?parent=404"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/categories?post=404"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/benjamin.smedbergs.us\/blog\/wp-json\/wp\/v2\/tags?post=404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}