<?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/"
	>

<channel>
	<title>Julien Templier</title>
	<atom:link href="http://www.templier.info/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.templier.info</link>
	<description>"It's not under construction, just perpetually unfinished"</description>
	<pubDate>Thu, 11 Dec 2008 02:09:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DXCanvas 1.1</title>
		<link>http://www.templier.info/2008/12/10/dxcanvas-11-2/</link>
		<comments>http://www.templier.info/2008/12/10/dxcanvas-11-2/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 01:44:07 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/12/10/dxcanvas-11-2/</guid>
		<description><![CDATA[ The final 1.1 version of DXCanvas is now available directly from here or on Wincustomize. There is now two new functions available from script allowing you to suspend the canvas drawing updates. This allows you to do all the drawing necessary for a frame of animation and refresh the canvas at the end, instead [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.templier.info/wp-content/uploads/2008/12/dxcanvaspreview.jpg" ><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="DXCanvas-Preview" border="0" alt="DXCanvas-Preview" align="right" src="http://www.templier.info/wp-content/uploads/2008/12/dxcanvaspreview-thumb.jpg" width="302" height="235" /></a> The final 1.1 version of DXCanvas is now available directly from <a href="http://www.templier.info/downloads/DXCanvas.zip" >here</a> or on <a target="_blank" href="http://www.wincustomize.com/skins.aspx?skinid=4461&amp;libid=3" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://www.wincustomize.com/skins.aspx?skinid=4461&amp;libid=3');">Wincustomize</a>. There is now two new functions available from script allowing you to suspend the canvas drawing updates. This allows you to do all the drawing necessary for a frame of animation and refresh the canvas at the end, instead of having it refresh at 30fps while your script is doing all the drawing operations.</p>
<p>With this new API, it was possible to fix all the flickering in the included examples! I’ve also added a few new example scripts. Check out the Polygon example, as well as all the text-related ones.</p>
<p><strong>Changelog</strong></p>
<p>1.1 Build 287:</p>
<ul>
<li>Added manual drawing mode with suspendDrawing/resumeDrawing methods     <br />(this should allow users to work around the flickering)</li>
<li>Fixed text position being off baseline when drawing on a path</li>
<li>Fixed a rare crash when drawing text on a path</li>
<li>Activated Pixman MMX&amp;SSE2 fast paths</li>
<li>Updated Pango to fix font leak (rev 2746)</li>
<li>Updated Pixman (0.13.2)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/12/10/dxcanvas-11-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DXCanvas 1.1 Beta</title>
		<link>http://www.templier.info/2008/11/27/dxcanvas-11/</link>
		<comments>http://www.templier.info/2008/11/27/dxcanvas-11/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 07:20:21 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[DesktopX]]></category>

		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/11/27/dxcanvas-11/</guid>
		<description><![CDATA[This small update brings a proper shadow implementation with blurring, two new functions (textPath and textAlongPath) and a few bug fixes. textAlongPath is still somewhat buggy with multi-segment paths but otherwise works great (see the TextWave demo). I fixed a few problems with arcTo that wasn’t working as specified and made a few changes here [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.templier.info/wp-content/uploads/2008/11/dxcanvasshadows.png" ><img style="margin: 0px 0px 0px 5px; display: inline" title="DXCanvasShadows" border="0" alt="DXCanvasShadows" align="right" src="http://www.templier.info/wp-content/uploads/2008/11/dxcanvasshadows-thumb.png" width="266" height="231" /></a>This small update brings a proper shadow implementation with blurring, two new functions (textPath and textAlongPath) and a few bug fixes. textAlongPath is still somewhat buggy with multi-segment paths but otherwise works great (see the TextWave demo). I fixed a few problems with arcTo that wasn’t working as specified and made a few changes here and there. More importantly, I fixed a nasty crash bug that was sometimes happening on exit. </p>
<p>The main thing not fixed in this version is the flickering when drawing, but I think I know what the root of the problem is and I might be able to fix it for the final 1.1 build.</p>
<p>You can find a beta build <a target="_blank" href="http://www.templier.info/downloads/DXCanvas.zip" >here</a>.</p>
<p><strong>Changelog</strong></p>
<p>1.1 Build 269:</p>
<ul>
<li>Added textPath, textAlongPath (with stroke or fill option) </li>
<li>Added support for shadows </li>
<li>arcTo is incorrect when the three points are collinear </li>
<li>arcTo should draw a straight line from P0 to P1 </li>
<li>restore() with an empty stack has no effect </li>
<li>Corrected order of data returned by getImageData (BRGA -&gt; RGBA) </li>
<li>ImageData is now converted to non-premultiplied color </li>
<li>Preserve the current path when clipping </li>
<li>rgba colors were not converted to string properly (green had the wrong value) </li>
<li>Some composite operations are now handled correctly </li>
<li>Fixed Debug build crashing when expired </li>
<li>Fixed stack overflow crash on exit </li>
<li>Added check for font validity on assignment and fallback to default font (will raise an error in debug mode if font is incorrect) </li>
<li>Moved state management to its own class </li>
<li>Updated Cairo(1.8.4), Pixman(0.12.0), Pango(1.22.3), Glib(2.18.3) and libpng(1.2.33) </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/11/27/dxcanvas-11/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nightmares - a dynamic dream testing utility</title>
		<link>http://www.templier.info/2008/08/31/nightmares-a-dynamic-dream-testing-utility/</link>
		<comments>http://www.templier.info/2008/08/31/nightmares-a-dynamic-dream-testing-utility/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 00:03:09 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Dreams]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/08/31/nightmares-a-dynamic-dream-testing-utility/</guid>
		<description><![CDATA[Nightmares is a small application created to test dynamic dreams. It runs them in a window,     allowing you to debug them easily or to record a preview video.
You can set the window size (default is 800&#215;600), chose an output file and FourCC code for the output video.
It currently only runs unprotected [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.templier.info/wp-content/uploads/2008/08/nightmares-build-10173-dynamic-dream-testing-utility.png" ><img border="0" alt="Nightmares (Build 1.0.173) - Dynamic dream testing utility" align="right" src="http://www.templier.info/wp-content/uploads/2008/08/nightmares-build-10173-dynamic-dream-testing-utility-thumb.png" width="305" height="231" /></a>Nightmares is a small application created to test dynamic dreams. It runs them in a window,     <br />allowing you to debug them easily or to record a preview video.</p>
<p>You can set the window size (default is 800&#215;600), chose an output file and FourCC code for the output video.</p>
<p>It currently only runs unprotected dreams: the dreams that come with DeskScapes will work, but any dynamic dream that you bought won&#8217;t.</p>
<p>See the readme file for command line switches.</p>
<p>Download test build <a title="Nightmares" href="http://www.templier.info/downloads/Nightmares.zip" >here</a>.</p>
<p>Update: Added preliminary support for protected Dreams (you will have to activate them first through DeskScapes).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/08/31/nightmares-a-dynamic-dream-testing-utility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DXCanvas - a canvas implementation for DesktopX</title>
		<link>http://www.templier.info/2008/08/26/dxcanvas-a-canvas-implementation-for-desktopx/</link>
		<comments>http://www.templier.info/2008/08/26/dxcanvas-a-canvas-implementation-for-desktopx/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 10:50:08 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[DesktopX]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/08/26/dxcanvas-a-canvas-implementation-for-desktopx/</guid>
		<description><![CDATA[Every major browser has support for it, Yahoo! Widgets has support for it, how come there isn&#8217;t something for DesktopX? 
Enter DXCanvas, a DesktopX drawing plugin that implements the Canvas spec (plus some DesktopX-specific additions).
How does it work

DXCanvas is a DesktopX drawing plugin, which means it takes over drawing for the object it is associated [...]]]></description>
			<content:encoded><![CDATA[<p>Every major browser has support for it, Yahoo! Widgets has support for it, how come there isn&#8217;t something for DesktopX? </p>
<p>Enter DXCanvas, a DesktopX drawing plugin that implements the Canvas spec (plus some DesktopX-specific additions).</p>
<p><strong>How does it work</strong></p>
<p><a href="http://www.templier.info/wp-content/uploads/2008/08/configure-canvas-plugin.png" ><img border="0" alt="Configure Canvas Plugin" align="right" src="http://www.templier.info/wp-content/uploads/2008/08/configure-canvas-plugin-thumb.png" width="243" height="231" /></a></p>
<p>DXCanvas is a DesktopX drawing plugin, which means it takes over drawing for the object it is associated to.</p>
<p>In the configuration, you can set the initial size for the canvas. By default, the drawing surface size will be 300&#215;150. You can also specify whether you want the surface to be transparent and show the other objects or windows under it, or opaque.</p>
<p>A <em>canvas</em> object is made available to scripting. To be able to draw on the canvas, you need to request a context. This is done by calling getContext(type) on the canvas object. The only supported type right now is &quot;2d&quot;.</p>
<p>See the list of functions in the implementation section. Note that some are slightly different from the Canvas specification, or are completely new. This is to adjust to differences in what is possible in a browser and in DesktopX.</p>
<p><strong>Canvas Controller Widget</strong></p>
<p><a href="http://www.templier.info/wp-content/uploads/2008/08/preview.png" ><img style="border-right-width: 0px; margin: 5px 1px 5px 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Preview" align="right" src="http://www.templier.info/wp-content/uploads/2008/08/preview-thumb.png" width="309" height="122" /></a> I&#8217;ve made a little widget to make testing easier. It loads a list of scripts from a user-defined folder and allows you to switch between them. It support scripts written in both JScript and VBScript.</p>
<p>It basically associate the script to an object having the DXCanvas plugin as a capability.</p>
<p>Two functions are required for the scripts to work: <em>Object_OnScriptEnter</em>() and <em>Object_OnScriptExit</em>().</p>
<p>The canvas size is reset its default size of 300&#215;150 when switching between scripts, so make sure to set it to the required size if needed by your script. </p>
<p>To add a new script to the list, create a new .js or .vbs file in a folder and select this folder in the widget preferences. A few test scripts are included in the Script folder.</p>
<p>It also support subfolders (only 1 folder deep), so you can organize your scripts in subfolders.</p>
<p><strong>How to help</strong></p>
<p>Download the Canvas Controller widget and start creating scripts!</p>
<p><u>What to look for</u></p>
<ul>
<li>strange behavior: colors are not right, context is not saved or restored correctly, etc. </li>
<li>the output from a script is different in Firefox or Safari </li>
<li>crashes or memory leaks (there are a least a few :P) </li>
</ul>
<p><u>What is broken/not working properly</u></p>
<ul>
<li>Drawing still flicker (not as badly as before) </li>
<li>This is a DEBUG build, so it&#8217;s going to be slower than normal </li>
</ul>
<p><u>Links</u></p>
<ul>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/#the-canvas" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://www.whatwg.org/specs/web-apps/current-work/#the-canvas');">HTML5 Spec on Canvas</a> </li>
<li><a href="http://developer.mozilla.org/En/Canvas_tutorial" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://developer.mozilla.org/En/Canvas_tutorial');">Canvas Tutorial</a> </li>
<li><a href="http://manual.widgets.yahoo.com/" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://manual.widgets.yahoo.com/');">Yahoo! Widgets Canvas Documentation</a> (Look in Core DOM Reference -&gt; Canvas / CanvasRenderingContext2D) </li>
</ul>
<p><strong>Changelog</strong></p>
<p>1.0 Build 225:</p>
<ul>
<li>Fixed large canvas objects taking a lot of CPU</li>
<li>Log is always enabled</li>
</ul>
<p>1.0 Build 217</p>
<ul>
<li>Fixed drawing being incomplete in some cases </li>
<li>Added workaround for pink color drawing transparent. DesktopX always use pink to draw transparent surfaces, even in per-pixel mode. rgb(255, 0, 255) will be changed to rgb(255, 1, 255) </li>
</ul>
<p>1.0 Build 214</p>
<ul>
<li>Added per-object log files </li>
<li>Added more log info when creating a new context object </li>
</ul>
<p>1.0 Build 211</p>
<ul>
<li>Added support for % in rgb/rgba colors </li>
<li>Added &quot;transparent&quot; color (equivalent to &quot;rgba(0,0,0,0)&quot;) </li>
<li>Added SVG colors &quot;darkgrey&quot;, &quot;darkslategrey&quot;, &quot;dimgrey&quot;, &quot;grey&quot;, &quot;lightgray&quot;, &quot;lightslategrey&quot; and &quot;slategrey&quot; </li>
<li>Zero size canvas is allowed </li>
<li>Properly share canvas state (context style stack was not properly shared before) </li>
<li>DrawImage and DrawImageRegion check for negative width and height and adjust the coordinates </li>
<li>Only match full color strings </li>
<li>Accept rgb values outside [0;255] and clamp the value properly </li>
<li>Clamp alpha and use premultiplied color values when painting with alpha (still somewhat wrong) </li>
<li>Fixed leak and crash with CanvasImageData &amp; CanvasPixelArray </li>
<li>Fixed crash with invalid parameters in createImageData and getImageData </li>
<li>Zero-length line gradients should paint nothing </li>
<li>Radial gradients with the same start and end circle should paint nothing </li>
<li>Image data now accepts negative width and height (you get the untransformed data for the resulting rectangle) </li>
<li>arc() with zero radius draws a line to the start point. </li>
<li>arcTo() has no effect if the context has no subpaths or if P0 = P1 </li>
<li>arcTo() draws a straight line to P1 if P1 = P2 or if radius = 0 </li>
<li>bezierCurveTo() has no effect if the context has no subpaths </li>
<li>lineTo() has no effect if the context has no subpaths </li>
<li>quadraticCurveTo() has no effect if the context has no subpaths </li>
<li>Updated cairo, pixman and pango libraries </li>
</ul>
<p>1.0 Build 201</p>
<ul>
<li>Added hsl/hsla color parsing </li>
<li>Added some logging (DXCanvas.log in object directory) </li>
<li>Fixed text stroking always drawing at position (0,0) </li>
<li>Fixed text baseline being off by the text height </li>
</ul>
<p>1.0 Build 191</p>
<ul>
<li>Added redraw calls buffering (less flickering) </li>
<li>Added debugMode attribute to canvas. In debug mode, passing invalid parameters will result in an error being raised instead of the invalid value being silently ignored. </li>
<li>No longer returns errors when passing invalid parameters to a lot of functions (as specified in Canvas specification) </li>
<li>CanvasPixelArray.XXX6(index, value) now takes an int instead of a char and will clamp that value to [0;255] </li>
</ul>
<p>1.0 Build 180</p>
<ul>
<li>Implemented toImage </li>
<li>Implemented createImageData, getImageData and putImageData </li>
<li>Added canvas support to createPattern, drawImage and drawImageRegion </li>
<li>Fixed createPattern, drawImage and drawImageRegion not working in VBScript </li>
<li>Fixed createPattern, drawImage and drawImageRegion not making a copy of the source image or canvas </li>
<li>Fixed drawImageRegion using wrong default values for dw and dh </li>
<li>Fixed drawImageRegion not creating a new path, resulting in image &quot;corruption&quot; </li>
</ul>
<p>1.0 Build 168</p>
<ul>
<li>Implemented font attribute setter/getter </li>
<li>Implemented fillText, strokeText and measureText (using Pango) </li>
<li>Implemented arcTo (using patch from Behdad Esfahbod) </li>
<li>Fixed image loading (SD_LOAD_IMAGE seems to be corrupting some images&#8230;) </li>
</ul>
<p>1.0 Build 159</p>
<ul>
<li>Implemented textAlign and textBaseline attributes setters/getters&#160; (not used yet) </li>
<li>Implemented createPattern, loadImage, drawImage and drawImageRegion </li>
<li>Update to cairo 1.7.4 (better support for text) </li>
<li>Statically linked to cairo lib (no need for cairo.dll anymore) </li>
</ul>
<p>1.0 Build 149</p>
<ul>
<li>First test version </li>
</ul>
<p><strong>Download</strong></p>
<p>You can download a test version <a title="DXCanvas Plugin for DesktopX" href="http://www.templier.info/downloads/DXCanvas.zip" >here</a>. It only includes the Canvas Controller widget for now. Please do not use the DXCanvas plugin in your own objects and widgets yet. This version of the plugin will expire on the 10/01/2008.</p>
<p><strong>Implementation</strong></p>
<p>Under the hood, it&#8217;s using Cairo, a 2D vector graphics library that also powers the Mozilla and Yahoo Widgets implementations. Right now, the Cairo library is dynamically loaded at runtime, but I hope to have it statically linked into the plugin for the final version.</p>
<p>Here is a list classes with their attributes and functions and the state of their implementation</p>
<p><em>Canvas</em></p>
<table border="0" cellspacing="0" cellpadding="2" width="536">
<tbody>
<tr>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; border-left: #c1dad7 1px solid; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195" align="center"><strong>Name</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="115" align="center"><strong>Implemented</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="230" align="center"><strong>Comment</strong></th>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195">width</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="110" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="229">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195">height</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="110" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="229">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195">debugMode</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="110" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="229">Invalid input will raise an error instead of being ignored.</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="196">getContext(type)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="111" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="229">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195">toImage(path)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="110" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="229">Saves to a PNG file (replaces toDataURL)</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><em>CanvasRenderingContext2D</em></p>
<table border="0" cellspacing="0" cellpadding="2" width="536">
<tbody>
<tr>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; border-left: #c1dad7 1px solid; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195" align="center"><strong>Name</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="115" align="center"><strong>Implemented</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="230" align="center"><strong>Comment</strong></th>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">globalAlpha</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">globalCompositeOperation</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">strokeStyle</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">fillStyle</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">lineWidth</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">lineCap</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">lineJoin</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">miterLimit</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">shadowOffsetX</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">Shadows are not implemented yet.</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">shadowOffsetY</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">Shadows are not implemented yet.</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">shadowBlur</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">Shadows are not implemented yet.</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">shadowColor</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">Shadows are not implemented yet.</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">font</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">textAlign</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">textBaseLine</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">Hanging and ideographic baselines are treated as alphabetic.</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">canvas</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">save</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">restore</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">scale(x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">rotate(angle)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">translate(x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">transform(m11, m12, m21, m22, dx, dy)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">setTransform(m11, m12, m21, m22, dx, dy)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">createLinearGradient(x0, y0, x1, y1)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">createRadialGradient(x0, y0, r0, x1, y1, r1)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">createPattern(input, repeat)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">clearRect(x, y, w, h)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">fillRect(x, y, w, h)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">strokeRect(x, y, w, h)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">beginPath</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">closePath</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">moveTo(x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">lineTo(x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">quadraticCurveTo(cpx, cpy, x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">arcTo(x1, y1, x2, y2, radius)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">rect(x, y, width, height)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">arc(x, y, radius, startAngle, endAngle, anticlockwise)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">fill()</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">stroke()</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">clip()</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">isPointInPath(x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">fillText(text, x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">strokeText(text, x, y)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">measureText(text)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">loadImage(path)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">drawImage(input, dx, dy, dw, dh)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">drawImageRegion(input, sx, sy, sw, sh, dx, dy, dz, dh)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">createImageData(sw, sh)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">getImageData(sx, sy, sw, sh)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="95" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="232">image data uses the BGRA format</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="213">putImageData(imageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="96" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="235">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><em>Gradient</em></p>
<table border="0" cellspacing="0" cellpadding="2" width="537">
<tbody>
<tr>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; border-left: #c1dad7 1px solid; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195" align="center"><strong>Name</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="115" align="center"><strong>Implemented</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="230" align="center"><strong>Comment</strong></th>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">addColorStop(offset, color)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><em>ImageData</em></p>
<table border="0" cellspacing="0" cellpadding="2" width="536">
<tbody>
<tr>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; border-left: #c1dad7 1px solid; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195" align="center"><strong>Name</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="115" align="center"><strong>Implemented</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="230" align="center"><strong>Comment</strong></th>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">width</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">height</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">data</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><em>PixelArray</em></p>
<table border="0" cellspacing="0" cellpadding="2" width="536">
<tbody>
<tr>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; border-left: #c1dad7 1px solid; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195" align="center"><strong>Name</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="115" align="center"><strong>Implemented</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="230" align="center"><strong>Comment</strong></th>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">length</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">XXX5(index)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; background: #f5fafa; color: #797268; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">XXX6(index, value)</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><em>TextMetrics</em></p>
<table border="0" cellspacing="0" cellpadding="2" width="537">
<tbody>
<tr>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; border-left: #c1dad7 1px solid; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="195" align="center"><strong>Name</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="115" align="center"><strong>Implemented</strong></th>
<th style="border-bottom: #c1dad7 1px solid; text-align: left; padding-bottom: 6px; text-transform: uppercase; padding-left: 12px; padding-right: 6px; background: #cae8ea; letter-spacing: 2px; color: #4f6b72; border-top: #c1dad7 1px solid; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="230" align="center"><strong>Comment</strong></th>
</tr>
<tr>
<td style="border-bottom: #c1dad7 1px solid; border-left: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="191">width</td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="106" align="center"><font color="#008000"><strong>YES</strong></font></td>
<td style="border-bottom: #c1dad7 1px solid; padding-bottom: 6px; padding-left: 12px; padding-right: 6px; color: #4f6b72; border-right: #c1dad7 1px solid; padding-top: 6px" valign="top" width="242">&#160;</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/08/26/dxcanvas-a-canvas-implementation-for-desktopx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TestDream Application</title>
		<link>http://www.templier.info/2008/07/30/testdream-application/</link>
		<comments>http://www.templier.info/2008/07/30/testdream-application/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 23:31:50 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Dreams]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/07/30/testdream-application/</guid>
		<description><![CDATA[Progress !
&#160;

Still some bugs with the Bouncing Box sample, but it&#8217;s getting there. Now let&#8217;s proxy some dlls   
]]></description>
			<content:encoded><![CDATA[<p>Progress !</p>
<p><img height="231" alt="WaterColor" src="http://www.templier.info/wp-content/uploads/2008/07/watercolor-thumb.png" width="304" border="0" /><a href="http://www.templier.info/wp-content/uploads/2008/07/ovals.png" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="231" alt="Ovals" src="http://www.templier.info/wp-content/uploads/2008/07/ovals-thumb.png" width="305" border="0" /></a>&#160;</p>
<p><a href="http://www.templier.info/wp-content/uploads/2008/07/bouncingbox.png" ><img height="231" alt="WaterDream" src="http://www.templier.info/wp-content/uploads/2008/07/waterdream-thumb.png" width="304" border="0" /><a href="http://www.templier.info/wp-content/uploads/2008/07/bouncingbox.png"><img height="231" alt="BouncingBox" src="http://www.templier.info/wp-content/uploads/2008/07/bouncingbox-thumb.png" width="304" border="0" /></a></a></p>
<p>Still some bugs with the Bouncing Box sample, but it&#8217;s getting there. Now let&#8217;s proxy some dlls <img src='http://www.templier.info/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> <a href="http://www.templier.info/wp-content/uploads/2008/07/bouncingbox.png" > </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/07/30/testdream-application/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flurry Update (1.3.1)</title>
		<link>http://www.templier.info/2008/07/10/flurry-update-1-3-0/</link>
		<comments>http://www.templier.info/2008/07/10/flurry-update-1-3-0/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 23:01:09 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/07/10/flurry-update/</guid>
		<description><![CDATA[The biggest new feature is the furry editor. It allows you to design your own flurries and easily share them with your friends.
I&#8217;ve also added an UI for assigning per-monitor flurries. You can now have a different flurry on each of your monitors.
It has an updated configuration UI that exposes some existing options: an FPS [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.templier.info/wp-content/uploads/2008/08/flurry-editor.png" ><img border="0" alt="Flurry Editor" align="right" src="http://www.templier.info/wp-content/uploads/2008/08/flurry-editor-thumb.png" width="300" height="231" /></a>The biggest new feature is the furry editor. It allows you to design your own flurries and easily share them with your friends.</p>
<p>I&#8217;ve also added an UI for assigning per-monitor flurries. You can now have a different flurry on each of your monitors.</p>
<p>It has an updated configuration UI that exposes some existing options: an FPS indicator, the possibility to use a &quot;Block Mode&quot; or a &quot;Whiteout Mode&quot; and a way to shrink the flurry window to use only a percentage of the fullscreen window.</p>
<p>Under the hood, there has been quite a few changes with some heavy refactoring to prepare for the flurry editor.</p>
<p><a href="http://julien.wincustomize.com/skins.aspx?skinid=75&amp;libid=40" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://julien.wincustomize.com/skins.aspx?skinid=75&amp;libid=40');">Download from Wincustomize</a> or <a href="http://www.templier.info/downloads/Flurry.zip" >Download from this site</a></p>
<p> Full changelog:</p>
<pre>Version 1.3.1 Build 41 (07/21/08)
    - Added per-monitor flurries
        * Separated global preset and per-monitor preset
        * Simple UI for assigning flurries to monitors
    - Added flurry editor
        * Presets are saved directly after creation/modification. Deletion is effective when closing the main dialog.
    - Bug fixed
        * Preset names were not stored correctly in registry
        * Fixed deletion of preset (UI was not updated correctly)
        * Crash if Flurry wasn't installed before on the computer</pre>
<pre>Version 1.3.0 Build 26 (08/10/08)
   - UI Changes
     * Moved credits to About window
     * Added UI for shrink percentage &amp; FPS indicator
       (only in single-buffer mode)
     * Added UI for Block &amp; Whiteout modes
   - Editor
     * Added new/edit/delete buttons
     * Added Editor dialog (not yet functional)
   - Refactoring of code
     * separated settings in a class (preparing for per-monitor flurries)
     * Removed some global variables
     * cleanup/rename: all classes are now in the Flurry namespace
     * Updated Spec class (copy constructor, misc. updates) in preparation
       for editor
   - Bug fixed
     * Preview was not showing the selected preset correctly	 </pre>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/07/10/flurry-update-1-3-0/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Valentine Dream released!</title>
		<link>http://www.templier.info/2008/02/08/valentine-dream-released/</link>
		<comments>http://www.templier.info/2008/02/08/valentine-dream-released/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 18:25:17 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Dreams]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/02/08/valentine-dream-released/</guid>
		<description><![CDATA[ You can download it either from Wincustomize or directly from here.
Changes from the previous version:

New &#8220;Heart&#8221; particle texture 
Blur is disabled by default (only for first time install)
Toned down the blurring    
Fixed configuration window (no more reloading of the Dream on configuration change) 
Fixed reloading of textures 
Fixed behavior on higher quality settings 
Fixed [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 3px; border-right-width: 0px" height="164" alt="Valentine Heart" src="http://www.templier.info/wp-content/uploads/2008/02/valentine-heart.png" width="220" align="right" border="0" /> You can download it either from <a href="http://www.wincustomize.com/skins.aspx?skinid=880&#038;libid=50" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://www.wincustomize.com/skins.aspx?skinid=880&#038;libid=50');">Wincustomize</a> or directly from <a href="http://www.templier.info/downloads/ValentineDream.zip" >here</a>.</p>
<p>Changes from the previous version:</p>
<ul>
<li>New &#8220;Heart&#8221; particle texture </li>
<li>Blur is disabled by default (only for first time install)</li>
<li>Toned down the blurring    </li>
<li>Fixed configuration window (no more reloading of the Dream on configuration change) </li>
<li>Fixed reloading of textures </li>
<li>Fixed behavior on higher quality settings </li>
<li>Fixed crash in update when the dream was not starting correctly</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/02/08/valentine-dream-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Valentine&#8217;s Dynamic Dream Progress</title>
		<link>http://www.templier.info/2008/02/05/valentines-dynamic-dream-progress/</link>
		<comments>http://www.templier.info/2008/02/05/valentines-dynamic-dream-progress/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 19:33:43 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Dreams]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/02/05/valentines-dynamic-dream-progress/</guid>
		<description><![CDATA[
Since the last update, most of the work has been directed towards the configuration UI. Loading and saving settings is now fully implemented. I also added a slider to modify the size of the particles. 
What&#8217;s not working correctly yet:

Applying a new configuration is causing the dream to reset.
The colorize shader still needs some work [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right: 0px; border-top: 0px; margin: 3px; border-left: 0px; border-bottom: 0px" height="289" alt="Valentine Dream Configuration Window" src="http://www.templier.info/wp-content/uploads/2008/02/configure-valentine-dream-new.png" width="241" align="right" border="0" /></p>
<p>Since the last update, most of the work has been directed towards the configuration UI. Loading and saving settings is now fully implemented. I also added a slider to modify the size of the particles. </p>
<p>What&#8217;s not working correctly yet:</p>
<ul>
<li>Applying a new configuration is causing the dream to reset.</li>
<li>The colorize shader still needs some work to make it use the particle color (the color is hard-coded right now).</li>
<li>More particle textures are needed</li>
<li>The colors need to be tweaked</li>
<li>The &quot;scaling&quot; code (to adapt to the different quality settings) is not working properly.</li>
<li>A few potential bugs in the config code <img src='http://www.templier.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
<p>You can download a zip file containing the dll files and the resources, as well as a test program named TestDream that will load the dream inside it&#8217;s own window. Simply open a command prompt and launch it with &quot;TestDream.exe Valentine32.dll&quot;.</p>
<p>There is also a .Dream file inside, but remember that it hasn&#8217;t be tested extensively, so use it with caution (make sure to take a look at the readme file).</p>
<p><strong>Download:</strong> <a href="http://www.templier.info/downloads/ValentineDream.zip" >Valentine Dream Test Build</a></p>
</p>
<p><img style="border-right: 0px; border-top: 0px; margin: 3px; border-left: 0px; border-bottom: 0px" height="164" alt="Valentine Red" src="http://www.templier.info/wp-content/uploads/2008/02/valentine-red.png" width="220" border="0" /> <img style="border-right: 0px; border-top: 0px; margin: 3px; border-left: 0px; border-bottom: 0px" height="163" alt="Valentine Rose" src="http://www.templier.info/wp-content/uploads/2008/02/valentine-rose.png" width="220" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/02/05/valentines-dynamic-dream-progress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First look at the Valentine Dream</title>
		<link>http://www.templier.info/2008/02/02/first-look-at-the-valentine-dream/</link>
		<comments>http://www.templier.info/2008/02/02/first-look-at-the-valentine-dream/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 13:14:33 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Dreams]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/02/02/first-look-at-the-valentine-dream/</guid>
		<description><![CDATA[Here we go: a very crude version of the configuration UI and two screenshots of the dream (with and without a background).
The configuration is loaded from the registry at startup (and initialized if the dream is started for the first time). You can tweak it by changing the registry keys as the UI is not [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 3px; border-right-width: 0px" height="328" alt="Configure Valentine Dream" src="http://www.templier.info/wp-content/uploads/2008/02/configure-valentine-dream.png" width="273" align="right" border="0" />Here we go: a very crude version of the configuration UI and two screenshots of the dream (with and without a background).</p>
<p>The configuration is loaded from the registry at startup (and initialized if the dream is started for the first time). You can tweak it by changing the registry keys as the UI is not functional at the moment.</p>
<p>Once I have the config UI working I will make a test build available (probably not a .Dream at first) so that you can play with it a little <img src='http://www.templier.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>(Background picture is </em><a title="Valentine Favorites" href="http://www.flickr.com/photos/craftilyeverafter/2172443573/" onclick="javascript:pageTracker._trackPageview('/outbound/articles/http://www.flickr.com/photos/craftilyeverafter/2172443573/');"><em>Valentine Favorites</em></a><em> by craftilyeverafter - Particle tutorial by Almar Joling was a great help) </em></p>
<p><em></em></p>
<p>&#160;</p>
<p><a href="http://www.templier.info/wp-content/uploads/2008/02/preview.png" ><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="176" alt="Preview" src="http://www.templier.info/wp-content/uploads/2008/02/preview-thumb.png" width="244" border="0" /></a> <a href="http://www.templier.info/wp-content/uploads/2008/02/preview2.png" ><img style="border-right: 0px; border-top: 0px; margin: 0px 0px 0px 10px; border-left: 0px; border-bottom: 0px" height="176" alt="Preview2" src="http://www.templier.info/wp-content/uploads/2008/02/preview2-thumb.png" width="244" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/02/02/first-look-at-the-valentine-dream/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Valentine Day Dynamic Dream</title>
		<link>http://www.templier.info/2008/02/01/valentine-day-dynamic-dream/</link>
		<comments>http://www.templier.info/2008/02/01/valentine-day-dynamic-dream/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 05:17:56 +0000</pubDate>
		<dc:creator>Julien</dc:creator>
		
		<category><![CDATA[Dreams]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.templier.info/2008/02/01/valentine-day-dynamic-dream/</guid>
		<description><![CDATA[For valentine day, I decided to create a new dynamic dream: it will be an &#34;animated&#34; heart using particles. Time is limited, so I&#8217;m doing something simple. You will be able to tweak some settings such as change the color &#38; background, but most things will be hard-coded.
It will use some particle system to create [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 3px; border-right-width: 0px" height="181" alt="Sketch Dream" src="http://www.templier.info/wp-content/uploads/2008/02/sketch-dream.jpg" width="244" align="right" border="0" />For valentine day, I decided to create a new dynamic dream: it will be an &quot;animated&quot; heart using particles. Time is limited, so I&#8217;m doing something simple. You will be able to tweak some settings such as change the color &amp; background, but most things will be hard-coded.</p>
<p>It will use some particle system to create the heart itself. You will be able to change the color and texture used for the particles. The background will be chosen among a few different pictures, with a shader applied for blur &amp; coloration.</p>
<p><u>Things to do:</u></p>
<ul>
<li>load/save configuration </li>
<li>configuration UI </li>
<li>Particle &quot;engine&quot; </li>
<li>Background, with pixel shader for color &amp; blur </li>
</ul>
<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 3px; border-right-width: 0px" height="244" alt="Sketch Config" src="http://www.templier.info/wp-content/uploads/2008/02/sketch-config.jpg" width="224" align="left" border="0" />The plan is to get a first test build as soon as possible to get some feedback, with a pre-release build on February 8 for final tweaking. I expect to make a final release on February 12.</p>
<p>I need to find a few nice backgrounds (flick is my friend here :D). Color selection for the heart will probably be limited to magenta and blue, with 2/3 different particle textures.</p>
<p>As you can see from the two pictures, I&#8217;m not really good at sketching <img src='http://www.templier.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> I will try to get some screenshots of the real UI soon, so you can get a better idea of how it will look like.</p>
<p>BTW, for people wanting to create dynamic dreams, I can&#8217;t really release any source code right now, but you can start by downloading the December 2006 Microsoft DirectX SDK (the version is important!). Creating dynamic dreams is a lot like creating screensavers: get the CD3DScreensaver class that is part of DXUtil and start hacking on it. Converting that work to a dynamic dream should be relatively straightforward once the Dream SDK is released.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.templier.info/2008/02/01/valentine-day-dynamic-dream/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
