[Webkit-unassigned] [Bug 105074] Add Canvas blend modes to Cairo

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Dec 19 14:31:36 PST 2012


https://bugs.webkit.org/show_bug.cgi?id=105074





--- Comment #1 from arno. <arno at renevier.net>  2012-12-19 14:33:51 PST ---
I tried to add support for blending modes in cairo.
While most modes work correctly, color-burn, color-dogde, hue, luminosity and saturation mode do not work.

That's Pixman implementation is based on svg specification; and I think there is a difference between svg specification and the tests added in bug #104176 (and possibly also with pdf specification).

Pdf specification[1] states that the resulting color for color-burn compositing will be

Cr = (1 – as / ar) * Cb + as / ar × [( 1 – ab) × Cs + ab × B(Cb, Cs)]
with B(Cb, Cs) = 1 - min(1, (1 - Cb) / Cs) if Cs > 0, or 0 otherwise

So if we have a opaque source and backdrops (a = 1) and a color component of 0 for source, and 1 for backdrop, the result should be:
(1 - 1) * 1 + 1 / 1 * ((1 - 1) * 0 + 1 * 0) => 0
That is what is assumed in the tests for #104176.

But svg specification[2] states that result for color-burn compositing:

if Sca == 0 and Dca == Da
  Dca' = Sa × Da + Sca × (1 - Da) + Dca × (1 - Sa)
       = Sa × Da + Dca × (1 - Sa)
otherwise if Sca == 0
  Dca' = Sca × (1 - Da) + Dca × (1 - Sa)
       = Dca × (1 - Sa)
otherwise if Sca > 0
  Dca' = Sa × Da - Sa × Da × min(1, (1 - Dca/Da) × Sa/Sca) + Sca × (1 - Da) + Dca × (1 - Sa)
       = Sa × Da × (1 - min(1, (1 - Dca/Da) × Sa/Sca)) + Sca × (1 - Da) + Dca × (1 - Sa)

For the same backdrop and sources, we have
Sca = 0; Sa = 1
Dca = 1; Da = 1
So, we are in the first case, and the result should be:
1 * 1 + 0 * (1 - 1) + 1 * (1 - 1) => 1
This is what pixman computes.
(By the way, I don't really understand why there is this Dca == Da check).

I have not checked other modes yet, but I suppose there may be a the same problem there.

So am I correct, is the a difference between pdf specification and svg specification. If so, which one are we supposed to follow now ?

[1]: http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf 11.3.5
[2]: http://www.w3.org/TR/SVGCompositing/#comp-op-property

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list