> On Mar 10, 2014, at 3:44 AM, "Rik Cabanier" <caban...@gmail.com> wrote:
> 
>> On Wed, Mar 5, 2014 at 1:46 PM, Rik Cabanier <caban...@gmail.com> wrote:
>> 
>> While implementing the Path2D object in mozilla, we ran into a performance
>> issue.
>> 
>> The mozilla implementation uses different "backends" for the canvas 2D
>> context.
>> Even within the same document, different canvas objects can be on top of
>> different graphics libraries. For best performance, the Path2D object
>> should use the same graphics interface as the canvas context you're
>> applying it to. If this is not the case, the path segments have to be
>> walked and converted which is a costly operation.
>> 
>> To work around this, we could add a couple of constructor methods to the
>> 2D context:
>> 
>> Path2D createPath();
>> 
>> Creates a new empty Path object.
>> 
>> Path2D createPath(path);
>> 
>> Creates a new Path object that is a copy of the argument.
>> 
>> Path2D createPath(d);
>> 
>> Creates a new path with the path described by the argument, interpreted as
>> SVG path data. [SVG]
>> 
>> This way, we can guarantee that they use the same underlying technology
>> and performance won't be impacted.
>> You could still pass these objects to other canvas contexts but
>> performance might be impacted.
> 
> I was thinking about this a bit more and an alternate solution would be to
> pass an optional 2D context to the Path2D constructors.
> A UA could ignore that context, or it could see it as a hint that the path
> is going to be used with that context.
> 
> Thoughts?

Slightly better. Still not sure.

Dirk

Reply via email to