Index: rsvg-cairo-draw.c =================================================================== --- rsvg-cairo-draw.c (révision 1090) +++ rsvg-cairo-draw.c (copie de travail) @@ -80,6 +80,42 @@ _rsvg_cairo_set_operator (cairo_t * cr, case RSVG_COMP_OP_XOR: op = CAIRO_OPERATOR_XOR; break; + case RSVG_COMP_OP_PLUS: + op = CAIRO_OPERATOR_ADD; + break; + case RSVG_COMP_OP_MULTIPLY: + op = CAIRO_OPERATOR_MULTIPLY; + break; + case RSVG_COMP_OP_SCREEN: + op = CAIRO_OPERATOR_SCREEN; + break; + case RSVG_COMP_OP_OVERLAY: + op = CAIRO_OPERATOR_OVERLAY; + break; + case RSVG_COMP_OP_DARKEN: + op = CAIRO_OPERATOR_DARKEN; + break; + case RSVG_COMP_OP_LIGHTEN: + op = CAIRO_OPERATOR_LIGHTEN; + break; + case RSVG_COMP_OP_COLOR_DODGE: + op = CAIRO_OPERATOR_COLOR_DODGE; + break; + case RSVG_COMP_OP_COLOR_BURN: + op = CAIRO_OPERATOR_COLOR_BURN; + break; + case RSVG_COMP_OP_HARD_LIGHT: + op = CAIRO_OPERATOR_HARD_LIGHT; + break; + case RSVG_COMP_OP_SOFT_LIGHT: + op = CAIRO_OPERATOR_SOFT_LIGHT; + break; + case RSVG_COMP_OP_DIFFERENCE: + op = CAIRO_OPERATOR_DIFFERENCE; + break; + case RSVG_COMP_OP_EXCLUSION: + op = CAIRO_OPERATOR_EXCLUSION; + break; default: op = CAIRO_OPERATOR_OVER; break; Index: rsvg-styles.c =================================================================== --- rsvg-styles.c (révision 1090) +++ rsvg-styles.c (copie de travail) @@ -432,6 +432,30 @@ rsvg_parse_style_arg (RsvgHandle * ctx, state->comp_op = RSVG_COMP_OP_DST_ATOP; else if (!strcmp (str + arg_off, "xor")) state->comp_op = RSVG_COMP_OP_XOR; + else if (!strcmp (str + arg_off, "plus")) + state->comp_op = RSVG_COMP_OP_PLUS; + else if (!strcmp (str + arg_off, "multiply")) + state->comp_op = RSVG_COMP_OP_MULTIPLY; + else if (!strcmp (str + arg_off, "screen")) + state->comp_op = RSVG_COMP_OP_SCREEN; + else if (!strcmp (str + arg_off, "overlay")) + state->comp_op = RSVG_COMP_OP_OVERLAY; + else if (!strcmp (str + arg_off, "darken")) + state->comp_op = RSVG_COMP_OP_DARKEN; + else if (!strcmp (str + arg_off, "lighten")) + state->comp_op = RSVG_COMP_OP_LIGHTEN; + else if (!strcmp (str + arg_off, "color-dodge")) + state->comp_op = RSVG_COMP_OP_COLOR_DODGE; + else if (!strcmp (str + arg_off, "color-burn")) + state->comp_op = RSVG_COMP_OP_COLOR_BURN; + else if (!strcmp (str + arg_off, "hard-light")) + state->comp_op = RSVG_COMP_OP_HARD_LIGHT; + else if (!strcmp (str + arg_off, "soft-light")) + state->comp_op = RSVG_COMP_OP_SOFT_LIGHT; + else if (!strcmp (str + arg_off, "difference")) + state->comp_op = RSVG_COMP_OP_DIFFERENCE; + else if (!strcmp (str + arg_off, "exclusion")) + state->comp_op = RSVG_COMP_OP_EXCLUSION; else state->comp_op = RSVG_COMP_OP_SRC_OVER; } else if (rsvg_css_param_match (str, "display")) { Index: rsvg-styles.h =================================================================== --- rsvg-styles.h (révision 1090) +++ rsvg-styles.h (copie de travail) @@ -72,7 +72,19 @@ typedef enum { RSVG_COMP_OP_DST_OUT, RSVG_COMP_OP_SRC_ATOP, RSVG_COMP_OP_DST_ATOP, - RSVG_COMP_OP_XOR + RSVG_COMP_OP_XOR, + RSVG_COMP_OP_PLUS, + RSVG_COMP_OP_MULTIPLY, + RSVG_COMP_OP_SCREEN, + RSVG_COMP_OP_OVERLAY, + RSVG_COMP_OP_DARKEN, + RSVG_COMP_OP_LIGHTEN, + RSVG_COMP_OP_COLOR_DODGE, + RSVG_COMP_OP_COLOR_BURN, + RSVG_COMP_OP_HARD_LIGHT, + RSVG_COMP_OP_SOFT_LIGHT, + RSVG_COMP_OP_DIFFERENCE, + RSVG_COMP_OP_EXCLUSION } RsvgCompOpType; typedef enum {