On 2020-04-15 02:30, Richard Gaskin via use-livecode wrote:
Monte Goulding wrote:

If I understand what you want correctly then:

Create image
Create mask object
Group both
Set the ink of the mask object to blendDstIn
Set the ink of the group to blendSrcOver

Super, Monte. That works well.

I was up late with a tool I'd made to let me walk through all sorts of
combinations, but I hadn't thought to group them.

Oh look, clearly the 'useful' inks haven't really been removed - they've just been replaced with the modern equivalents which give much better fidelity results ;)

Just to explain why the group is necessary - if a group has the 'blendSrcOver' ink applied then it becomes a 'transparency group'.

This means it has its own alpha channel which can be affected by the 'destination alpha modifying' porter-duff operations. So in this case:

1) The group is a transparency group so allocates its own transparent buffer
  2) The image is composited into the buffer
3) The mask is then composited into the buffer with the DstIn ink. This means that the destination buffer alpha is adjusted so it is only 'in' the mask (an analog of ANDing the buffers alpha channel with the mask's alpha channel - indeed, previously I'm guessing you would have done this using some sort of AND bitwise ink and being careful with colors used).
  4) The buffer is then composited with the background.

The transparency group thing is needed partly for efficiency and partly because you can't remove alpha from an opaque destination - which a window provides.

Hope this helps!

Mark.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to