Re: separating compositing and blending

Adrian Johnson <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
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
> 
> 

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.