- From: Ashley Gullen <ashley@scirra.com>
- Date: Fri, 14 Jun 2013 18:13:31 +0100
- To: Rik Cabanier <cabanier@gmail.com>
- Cc: "public-canvas-api@w3.org" <public-canvas-api@w3.org>
- Message-ID: <CAABs73ijNJiH8Ah1PqB1aAZbkE+yqn41esvHuW_T0G7s7vPrEg@mail.gmail.com>
IMO this looks like something that belongs to a framework rather than the web platform. I don't see why you'd ever need "lots of temporary canvas objects", it should only ever require one, which probably has a low enough overhead to not need to worry about too much. Ashley On 14 June 2013 04:57, Rik Cabanier <cabanier@gmail.com> wrote: > Last year, I requested if grouping could be added to canvas. > The API would look like this: > > void beginLayer(); > void beginLayer(unsigned long x, unsigned long y, unsigned long w, unsigned > long h); > void endLayer(); > > > When you call beginLayer, you inherit everything from the graphics state > except shadows, opacity and the current compositing mode. Those will reset > to their initial value. > At endLayer time, the graphics state will be restored and you will draw the > content of the group. > > so for instance, if you want multiply blend with opacity of .5 > > ctx.globalAlpha = .5; > ctx.globalCompositeOperation = "multiply"; > ctx.beginLayer(); > ... // drawing > ctx.endLayer(); > > This would cause everything between begin/endLayer to be drawn normally. > This result is then blended and composited at endLayer time. > > Last year, people argued that you could achieve the same effect by using a > temporary canvas so this API is not really needed. > I would like to see if people are more open to this API now. > Reasons to have it: > - it is easily achievable with existing graphics libraries. > - it is a very common idiom. You can cut down on the amount of JS needed. > - if you want to avoid antialiasing issue, you need to carefully set the > CTM on the temporary canvas and remove the CTM from the current canvas > - creating a temporary canvas has a higher overhead than simply starting a > layer. > - creating lots of temporary canvas objects creates memory overhead > - is polyfillable for older canvas implementations > > Rik >
Received on Friday, 14 June 2013 17:13:58 UTC