On Fri, Dec 11, 2009 at 12:49 AM, Jonas Sicking <span dir="ltr">&lt;jonas@sicking.cc&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On Thu, Dec 10, 2009 at 1:36 PM, Oliver Hunt &lt;<a href="mailto:oliver@apple.com">oliver@apple.com</a>&gt; wrote:<br>
&gt; Ideally if we were to have a graphics context in a worker we&#39;d want it to be<br>
&gt; the standard CanvasRenderingContext2D, the only real problem is that<br>
&gt; CanvasRenderingContext2D references the parent canvas element which clearly<br>
&gt; won&#39;t fly in a worker.<br>
&gt; I&#39;ve been thinking of creating something like a WorkerCanvas which is<br>
&gt; basically a DOM-less CanvasRenderingContext2D, so you can do<br>
&gt; var canvas = new WorkerCanvas(width, height);<br>
&gt; canvas.putImageData(myData);<br>
<br>
</div>Do you really need all of CanvasRenderingContext2D? I.e. do you really<br>
need things like spline drawing, pattern filling, and text?<br>
<br>
My concern weather the libraries backing CanvasRenderingContext2D are<br>
generally threadsafe?<br></blockquote><div><br></div><div>CanvasRenderingContext2Ds would never need to be shared between threads because they&#39;re &quot;cloned&quot; when passed...so is your concern that the libraries are only meant to ever be used from one thread?  Maybe I&#39;m being naive, but it would surprise me if that turned out to be an issue.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
The use case brought up at the beginning of this thread was about<br>
scaling. It would be dramatically easier to implement just a few<br>
things like transformations, cropping and encoding/decoding, than to<br>
implement all of CanvasRenderingContext2D off the main thread.<br></blockquote><div><br></div><div>Resizing images was just one use.  I could easily imagine apps wanting to generate more complex images on background threads without needing to implement things like spline drawing, pattern filling, and text themselves.</div>

</div>