<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Khaos: WPF Web Browser</title><link>http://khaos.codeplex.com/Project/ProjectRss.aspx</link><description>This a a web browser, html parser and html render written completely in .net using WPF.</description><item><title>Updated Wiki: Home</title><link>http://khaos.codeplex.com/wikipage?version=7</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69665" alt="logo.png" title="logo.png" /&gt; Khaos Web Browser&lt;/h1&gt; This project is the development of a web browser in C#&lt;br /&gt;&lt;br /&gt;The browser is still in early stages of development and only supports basic static webpages.&lt;br /&gt;&lt;br /&gt;The Khaos project goals are to build a browser that is easy to understand and extend. This is done by placing focus on high quality design and architecture the result is a highly extensible and modular series of web technology components. Emphasis is also placed on simplicity and code quality in order to enhance understanding and extensibility.&lt;br /&gt;&lt;br /&gt;Screenshot of the current version&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69667" alt="Web&amp;#32;Browser.jpg" title="Web&amp;#32;Browser.jpg" /&gt; &lt;br /&gt;&lt;br /&gt;You can follow my personal blog at &lt;a href="http://lavinski.wordpress.com" class="externalLink"&gt;http://lavinski.wordpress.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks from EXtreme Solutions @ &lt;a href="http://www.extremesolutions.co.nr" class="externalLink"&gt;http://www.extremesolutions.co.nr&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Tue, 02 Mar 2010 22:26:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100302102608P</guid></item><item><title>Updated Wiki: Home</title><link>http://khaos.codeplex.com/wikipage?version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69665" alt="logo.png" title="logo.png" /&gt; Khaos Web Browser&lt;/h1&gt; This project is the development of a web browser in C#&lt;br /&gt;&lt;br /&gt;The browser is still in early stages of development and only supports basic static webpages.&lt;br /&gt;&lt;br /&gt;The Khaos project goals are to build a browser that is easy to understand and extend. This is done by placing focus on high quality design and architecture the result is a highly extensible and modular series of web technology components. Emphasis is also placed on simplicity and code quality in order to enhance understanding and extensibility.&lt;br /&gt;&lt;br /&gt;Screenshot of the current version&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69667" alt="Web&amp;#32;Browser.jpg" title="Web&amp;#32;Browser.jpg" /&gt; &lt;br /&gt;&lt;br /&gt;You can follow my personal blog at &lt;a href="http://khaos.codeplex.com/wikipage?title=http%3a%2f%2flavinski.wordpress.com&amp;referringTitle=Home"&gt;http&amp;#58;&amp;#47;&amp;#47;lavinski.wordpress.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks from EXtreme Solutions @ &lt;a href="http://www.extremesolutions.co.nr" class="externalLink"&gt;http://www.extremesolutions.co.nr&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Tue, 02 Mar 2010 22:25:34 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100302102534P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://khaos.codeplex.com/documentation?version=2</link><description>&lt;div class="wikidoc"&gt;&lt;b&gt;Visual Model&lt;/b&gt;&lt;br /&gt;The visual model is responsible for determining the visual representation of the content using the document object model and cascading sheet style information. The visual model determines the measurements and arrangement of all the document nodes as well as defining the appearance for each fundamental node type.&lt;br /&gt;&lt;br /&gt;Our implementation of the visual model is build on top of the Windows Presentation Foundation (WPF) framework. The framework supports event notification for inputs and pixel perfect mouse hit testing. This has allowed us to use framework functionality to focus on the layout and rendering. The layout system for WPF is two phase, the first phase calculates the measurements for each visual node then the second phase arranges the nodes. Visual nodes maintain a visual tree and a logical tree representation. The logical Tree is used for the notifications such as input and other events as well as resource management. The visual tree describes the structure of visual objects, as represented by the Visual base class. As a side effect however any node can only be the child of at most one other node and a strict child parent relationship must be maintained. &lt;br /&gt;An alternative to using the WPF framework would have been to use the WPF for GDI+ drawing API’s. These API’s provide basic drawing capabilities which allow the drawing of objects such as shapes, lines, images or text. For the development of a rendering engine using this API it is up to the developer to encapsulate the API with a higher level framework that allows HTML rendering. We ended up choosing to use the WPF framework for our visual model base. By using the WPF framework it makes this process much easier and allows for a more powerful solution. It also allows better integration into Windows Presentation Framework applications. &lt;br /&gt;&lt;br /&gt;The construction of the visual model takes place after the creation of the Document Object Model. This process is initiated in the web engine, which allows supplies the request used and an IPageHost implementer. The transformation is processed by the TransformManager which handles a set of supported transformations. Each Transformation is an implementation of the ITransformable interface. This interface provides methods to check supported tags and to perform and transformation from IHTMLElements to a VisualNode or superclass. The transformation builds up the new hieratical model using an iterative stack based approach. &lt;br /&gt;&lt;br /&gt;The visual model makes use of a number of data structures. The child manager maintains the link between a node and its children as well as the nodes parent. The split manager maintains the information about where splits were created. &lt;br /&gt;The visual model structure is initialised only once when the DOM is first transformed. Resetting and recalculation are performed whenever the constraint measurements like window size are changed. Refreshing the Visual Model resets the tree by removing all node splits therefore reverting the tree to its original state. We chose not to just rebuild the tree which may have been slightly simpler because rebuilding the tree in WPF was too expensive.&lt;br /&gt;&lt;br /&gt;The recursive VisualNode measurement algorithm is the main section of the visual nodes. The algorithm determines the largest possible size a visual can take up using the constrain information passed down to it. The final largest possible size is the maximum of the constraint largest size and the largest child size. Node Children are then measured and their desired sizes are used to calculate the final desired size of the current node. The algorithm supports the two main display types, block and inline which determine how sizes are calculated. Nodes with block layout are simply measured and added to a new line after which a newline is forced. Inline nodes however are much more complicated because they have the potential to be split over multiple lines. To find the number of inline elements that can be placed on a line before splitting each child is asked if any part of it is able to fit into the width left on the line. When a child is found that cannot fit the remaining children are split off into a new visual node. Split visual nodes do not own their own split and child managers but instead share the managers of the original node. Children that only fit after a split is made are not a case that needs to be handled here because the child well automatically split to take up the most space on a line. &lt;br /&gt;&lt;br /&gt;Overall the visual tree that we use is able to correctly manage the visual components and provides a solution that we are happy with. The method provides a more efficient and powerful solution then would have been otherwise possible considering time constraints.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Visual Model Supports:&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;*Display&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Block&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Inline&lt;br /&gt;*Types&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Generic Elements&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Images&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Input (text and submit)&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Text&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Tables&lt;br /&gt;&lt;b&gt;&lt;/b&gt;NoScript&lt;br /&gt;&lt;b&gt;&lt;/b&gt;NoFrame&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Labels&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Centering&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Line Breaks&lt;br /&gt;&lt;b&gt;&lt;/b&gt;Anchors/Links&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 22 Oct 2009 12:17:46 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20091022121746P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://khaos.codeplex.com/documentation?version=1</link><description>&lt;div class="wikidoc"&gt;Visual Model&lt;br /&gt;The visual model is responsible for determining the visual representation of the content using the document object model and cascading sheet style information. The visual model determines the measurements and arrangement of all the document nodes as well as defining the appearance for each fundamental node type.&lt;br /&gt;Our implementation of the visual model is build on top of the Windows Presentation Foundation (WPF) framework. The framework supports event notification for inputs and pixel perfect mouse hit testing. This has allowed us to use framework functionality to focus on the layout and rendering. The layout system for WPF is two phase, the first phase calculates the measurements for each visual node then the second phase arranges the nodes. Visual nodes maintain a visual tree and a logical tree representation. The logical Tree is used for the notifications such as input and other events as well as resource management. The visual tree describes the structure of visual objects, as represented by the Visual base class. As a side effect however any node can only be the child of at most one other node and a strict child parent relationship must be maintained. &lt;br /&gt;An alternative to using the WPF framework would have been to use the WPF for GDI+ drawing API’s. These API’s provide basic drawing capabilities which allow the drawing of objects such as shapes, lines, images or text. For the development of a rendering engine using this API it is up to the developer to encapsulate the API with a higher level framework that allows HTML rendering. We ended up choosing to use the WPF framework for our visual model base. By using the WPF framework it makes this process much easier and allows for a more powerful solution. It also allows better integration into Windows Presentation Framework applications. &lt;br /&gt;The construction of the visual model takes place after the creation of the Document Object Model. This process is initiated in the web engine, which allows supplies the request used and an IPageHost implementer. The transformation is processed by the TransformManager which handles a set of supported transformations. Each Transformation is an implementation of the ITransformable interface. This interface provides methods to check supported tags and to perform and transformation from IHTMLElements to a VisualNode or superclass. The transformation builds up the new hieratical model using an iterative stack based approach. &lt;br /&gt;The visual model makes use of a number of data structures. The child manager maintains the link between a node and its children as well as the nodes parent. The split manager maintains the information about where splits were created. &lt;br /&gt;The visual model structure is initialised only once when the DOM is first transformed. Resetting and recalculation are performed whenever the constraint measurements like window size are changed. Refreshing the Visual Model resets the tree by removing all node splits therefore reverting the tree to its original state. We chose not to just rebuild the tree which may have been slightly simpler because rebuilding the tree in WPF was too expensive.&lt;br /&gt;The recursive VisualNode measurement algorithm is the main section of the visual nodes. The algorithm determines the largest possible size a visual can take up using the constrain information passed down to it. The final largest possible size is the maximum of the constraint largest size and the largest child size. Node Children are then measured and their desired sizes are used to calculate the final desired size of the current node. The algorithm supports the two main display types, block and inline which determine how sizes are calculated. Nodes with block layout are simply measured and added to a new line after which a newline is forced. Inline nodes however are much more complicated because they have the potential to be split over multiple lines. To find the number of inline elements that can be placed on a line before splitting each child is asked if any part of it is able to fit into the width left on the line. When a child is found that cannot fit the remaining children are split off into a new visual node. Split visual nodes do not own their own split and child managers but instead share the managers of the original node. Children that only fit after a split is made are not a case that needs to be handled here because the child well automatically split to take up the most space on a line. &lt;br /&gt;Overall the visual tree that we use is able to correctly manage the visual components and provides a solution that we are happy with. The method provides a more efficient and powerful solution then would have been otherwise possible considering time constraints.&lt;br /&gt;Visual Model Supports:&lt;br /&gt; &lt;br /&gt;o	Display&lt;br /&gt;	Block&lt;br /&gt;	 Inline&lt;br /&gt;o	Types&lt;br /&gt;	Generic Elements&lt;br /&gt;	Images&lt;br /&gt;	 Input (text and submit)&lt;br /&gt;	 Text&lt;br /&gt;	Tables&lt;br /&gt;	NoScript&lt;br /&gt;	NoFrame&lt;br /&gt;	Labels&lt;br /&gt;	Centering&lt;br /&gt;	Line Breaks&lt;br /&gt;	Anchors/Links&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 22 Oct 2009 12:14:09 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20091022121409P</guid></item><item><title>New Post: Your Comments</title><link>http://khaos.codeplex.com/Thread/View.aspx?ThreadId=62829</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Hey, could you leave any comments about the project here. Thanks&lt;/p&gt;&lt;/div&gt;</description><author>lavinski</author><pubDate>Sat, 18 Jul 2009 01:31:23 GMT</pubDate><guid isPermaLink="false">New Post: Your Comments 20090718013123A</guid></item><item><title>Updated Wiki: Home</title><link>http://khaos.codeplex.com/Wiki/View.aspx?title=Home&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69665" alt="logo.png" title="logo.png" /&gt; Khaos Web Browser&lt;/h1&gt; This project is the development of a web browser in C#&lt;br /&gt;&lt;br /&gt;The browser is still in early stages of development and only supports basic static webpages.&lt;br /&gt;&lt;br /&gt;The Khaos project goals are to build a browser that is easy to understand and extend. This is done by placing focus on high quality design and architecture the result is a highly extensible and modular series of web technology components. Emphasis is also placed on simplicity and code quality in order to enhance understanding and extensibility.&lt;br /&gt;&lt;br /&gt;Screenshot of the current version&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69667" alt="Web&amp;#32;Browser.jpg" title="Web&amp;#32;Browser.jpg" /&gt; &lt;br /&gt;&lt;br /&gt;Thanks from EXtreme Solutions @ &lt;a href="http://www.extremesolutions.co.nr" class="externalLink"&gt;http://www.extremesolutions.co.nr&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;br /&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 28 May 2009 05:47:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090528054720A</guid></item><item><title>Updated Wiki: Home</title><link>http://khaos.codeplex.com/Wiki/View.aspx?title=Home&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69665" alt="logo.png" title="logo.png" /&gt; Khaos Web Browser&lt;/h1&gt; This project is the development of a web browser in C#&lt;br /&gt;&lt;br /&gt;The browser is still in early stages of development and only supports basic static webpages.&lt;br /&gt;&lt;br /&gt;Screenshot of the current version&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69667" alt="Web&amp;#32;Browser.jpg" title="Web&amp;#32;Browser.jpg" /&gt; &lt;br /&gt;&lt;br /&gt;Thanks from EXtreme Solutions @ &lt;a href="http://www.extremesolutions.co.nr" class="externalLink"&gt;http://www.extremesolutions.co.nr&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. &lt;br /&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 28 May 2009 05:39:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090528053932A</guid></item><item><title>Updated Wiki: Home</title><link>http://khaos.codeplex.com/Wiki/View.aspx?title=Home&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=Khaos&amp;DownloadId=69665" alt="logo.png" title="logo.png" /&gt; Khaos Web Browser&lt;/h1&gt; This project is the development of a web browser in C#&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks.&lt;br /&gt;&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 28 May 2009 05:00:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090528050057A</guid></item><item><title>Updated Release: Project Prototype (May 27, 2009)</title><link>http://khaos.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27947</link><description>&lt;div&gt;First version release prototype&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 28 May 2009 04:41:10 GMT</pubDate><guid isPermaLink="false">Updated Release: Project Prototype (May 27, 2009) 20090528044110A</guid></item><item><title>Released: Project Prototype (May 27, 2009)</title><link>http://khaos.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27947</link><description>&lt;div&gt;First version release prototype&lt;/div&gt;</description><author></author><pubDate>Thu, 28 May 2009 04:41:10 GMT</pubDate><guid isPermaLink="false">Released: Project Prototype (May 27, 2009) 20090528044110A</guid></item><item><title>Created Release: Project Prototype (May 27, 2009)</title><link>http://khaos.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27947</link><description>&lt;div&gt;First version release prototype&lt;/div&gt;</description><author>Lavinski</author><pubDate>Thu, 28 May 2009 04:29:45 GMT</pubDate><guid isPermaLink="false">Created Release: Project Prototype (May 27, 2009) 20090528042945A</guid></item></channel></rss>