Great!<div>Yes, that would definitely work.</div><div><br></div><div>The work I've done so far on Mozilla and WebKit assumes that there will be a setter for blending and one for compositing.</div><div>This would fit in nicely.</div>
<div><br></div><div>Rik</div><div><br><div class="gmail_quote">On Sat, Jan 5, 2013 at 11:26 PM, Adrian Johnson <span dir="ltr"><<a href="mailto:ajohnson@redneon.com" target="_blank">ajohnson@redneon.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 21/10/12 02:09, Rik Cabanier wrote:<br>
> All,<br>
><br>
> the current cairo compositing operators combine blending and compositing<br>
> [1].<br>
> This means that if you do an 'overlay', the result of the 'overlay'<br>
> blending formula will always be composited with 'src-over'.<br>
><br>
> Nikos (from Canon) and I (from Adobe) have a proposed working draft<br>
> that allows people to specify blending and compositing in CSS [2]. As<br>
> an example, this would allow you to do a 'screen' blend on an HTML<br>
> element with a 'src' compositing mode. This separation could also be<br>
> extended to canvas.<br>
><br>
> Looking at the Cairo architecture, it seems that this could be added<br>
> by adding an optional blend mode operator to 'set_operator'.<br>
> What do people think?<br>
<br>
</div>We can't change the cairo_set_operator function since this would break<br>
API compatibility. We could add a new function:<br>
<br>
cairo_set_blend_mode (cairo_r *cr, cairo_blend_mode_t bm);<br>
<br>
typedef enum {<br>
    CAIRO_BLEND_MODE_NORMAL,<br>
    CAIRO_BLEND_MODE_MULTIPLY,<br>
    CAIRO_BLEND_MODE_SCREEN,<br>
    CAIRO_BLEND_MODE_OVERLAY,<br>
    CAIRO_BLEND_MODE_DARKEN,<br>
    CAIRO_BLEND_MODE_LIGHTEN,<br>
    CAIRO_BLEND_MODE_COLOR_DODGE,<br>
    CAIRO_BLEND_MODE_COLOR_BURN,<br>
    CAIRO_BLEND_MODE_HARD_LIGHT,<br>
    CAIRO_BLEND_MODE_SOFT_LIGHT,<br>
    CAIRO_BLEND_MODE_DIFFERENCE,<br>
    CAIRO_BLEND_MODE_EXCLUSION,<br>
    CAIRO_BLEND_MODE_HSL_HUE,<br>
    CAIRO_BLEND_MODE_HSL_SATURATION,<br>
    CAIRO_BLEND_MODE_HSL_COLOR,<br>
    CAIRO_BLEND_MODE_HSL_LUMINOSITY<br>
} cairo_blend_mode_t;<br>
<br>
and specify that setting a blend mode (the enum range<br>
CAIRO_OPERATOR_MULTIPLY..CAIRO_OPERATOR_HSL_LUMINOSITY) in<br>
cairo_set_operator ignores the blend mode set by cairo_set_blend_mode<br>
and always uses Normal.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> Rik<br>
><br>
> 1: <a href="http://cairographics.org/operators/" target="_blank">http://cairographics.org/operators/</a><br>
> 2: <a href="https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html" target="_blank">https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html</a><br>
> 3: <a href="http://cairographics.org/manual/cairo-cairo-t.html#cairo-set-operator" target="_blank">http://cairographics.org/manual/cairo-cairo-t.html#cairo-set-operator</a><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div>