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?