[cairo] separating compositing and blending

Rik Cabanier cabanier at gmail.com
Sun Jan 6 19:43:21 PST 2013


Great!
Yes, that would definitely work.

The work I've done so far on Mozilla and WebKit assumes that there will be
a setter for blending and one for compositing.
This would fit in nicely.

Rik

On Sat, Jan 5, 2013 at 11:26 PM, Adrian Johnson <ajohnson at redneon.com>wrote:

> On 21/10/12 02:09, Rik Cabanier wrote:
> > All,
> >
> > the current cairo compositing operators combine blending and compositing
> > [1].
> > This means that if you do an 'overlay', the result of the 'overlay'
> > blending formula will always be composited with 'src-over'.
> >
> > Nikos (from Canon) and I (from Adobe) have a proposed working draft
> > that allows people to specify blending and compositing in CSS [2]. As
> > an example, this would allow you to do a 'screen' blend on an HTML
> > element with a 'src' compositing mode. This separation could also be
> > extended to canvas.
> >
> > Looking at the Cairo architecture, it seems that this could be added
> > by adding an optional blend mode operator to 'set_operator'.
> > What do people think?
>
> We can't change the cairo_set_operator function since this would break
> API compatibility. We could add a new function:
>
> cairo_set_blend_mode (cairo_r *cr, cairo_blend_mode_t bm);
>
> typedef enum {
>     CAIRO_BLEND_MODE_NORMAL,
>     CAIRO_BLEND_MODE_MULTIPLY,
>     CAIRO_BLEND_MODE_SCREEN,
>     CAIRO_BLEND_MODE_OVERLAY,
>     CAIRO_BLEND_MODE_DARKEN,
>     CAIRO_BLEND_MODE_LIGHTEN,
>     CAIRO_BLEND_MODE_COLOR_DODGE,
>     CAIRO_BLEND_MODE_COLOR_BURN,
>     CAIRO_BLEND_MODE_HARD_LIGHT,
>     CAIRO_BLEND_MODE_SOFT_LIGHT,
>     CAIRO_BLEND_MODE_DIFFERENCE,
>     CAIRO_BLEND_MODE_EXCLUSION,
>     CAIRO_BLEND_MODE_HSL_HUE,
>     CAIRO_BLEND_MODE_HSL_SATURATION,
>     CAIRO_BLEND_MODE_HSL_COLOR,
>     CAIRO_BLEND_MODE_HSL_LUMINOSITY
> } cairo_blend_mode_t;
>
> and specify that setting a blend mode (the enum range
> CAIRO_OPERATOR_MULTIPLY..CAIRO_OPERATOR_HSL_LUMINOSITY) in
> cairo_set_operator ignores the blend mode set by cairo_set_blend_mode
> and always uses Normal.
>
> >
> > Rik
> >
> > 1: http://cairographics.org/operators/
> > 2: https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html
> > 3: http://cairographics.org/manual/cairo-cairo-t.html#cairo-set-operator
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20130106/a63b641a/attachment.html>


More information about the cairo mailing list