mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 748433: Adds support for blending to the canvas globalCompositeOperator. r=jrmuizel
This commit is contained in:
parent
3024c6e42a
commit
db7b579813
@ -3075,6 +3075,21 @@ CanvasRenderingContext2D::SetGlobalCompositeOperation(const nsAString& op,
|
||||
else CANVAS_OP_TO_GFX_OP("destination-atop", DEST_ATOP)
|
||||
else CANVAS_OP_TO_GFX_OP("lighter", ADD)
|
||||
else CANVAS_OP_TO_GFX_OP("xor", XOR)
|
||||
else CANVAS_OP_TO_GFX_OP("multiply", MULTIPLY)
|
||||
else CANVAS_OP_TO_GFX_OP("screen", SCREEN)
|
||||
else CANVAS_OP_TO_GFX_OP("overlay", OVERLAY)
|
||||
else CANVAS_OP_TO_GFX_OP("darken", DARKEN)
|
||||
else CANVAS_OP_TO_GFX_OP("lighten", LIGHTEN)
|
||||
else CANVAS_OP_TO_GFX_OP("color-dodge", COLOR_DODGE)
|
||||
else CANVAS_OP_TO_GFX_OP("color-burn", COLOR_BURN)
|
||||
else CANVAS_OP_TO_GFX_OP("hard-light", HARD_LIGHT)
|
||||
else CANVAS_OP_TO_GFX_OP("soft-light", SOFT_LIGHT)
|
||||
else CANVAS_OP_TO_GFX_OP("difference", DIFFERENCE)
|
||||
else CANVAS_OP_TO_GFX_OP("exclusion", EXCLUSION)
|
||||
else CANVAS_OP_TO_GFX_OP("hue", HUE)
|
||||
else CANVAS_OP_TO_GFX_OP("saturation", SATURATION)
|
||||
else CANVAS_OP_TO_GFX_OP("color", COLOR)
|
||||
else CANVAS_OP_TO_GFX_OP("luminosity", LUMINOSITY)
|
||||
// XXX ERRMSG we need to report an error to developers here! (bug 329026)
|
||||
else return;
|
||||
|
||||
@ -3103,6 +3118,21 @@ CanvasRenderingContext2D::GetGlobalCompositeOperation(nsAString& op,
|
||||
else CANVAS_OP_TO_GFX_OP("source-out", OUT)
|
||||
else CANVAS_OP_TO_GFX_OP("source-over", OVER)
|
||||
else CANVAS_OP_TO_GFX_OP("xor", XOR)
|
||||
else CANVAS_OP_TO_GFX_OP("multiply", MULTIPLY)
|
||||
else CANVAS_OP_TO_GFX_OP("screen", SCREEN)
|
||||
else CANVAS_OP_TO_GFX_OP("overlay", OVERLAY)
|
||||
else CANVAS_OP_TO_GFX_OP("darken", DARKEN)
|
||||
else CANVAS_OP_TO_GFX_OP("lighten", LIGHTEN)
|
||||
else CANVAS_OP_TO_GFX_OP("color-dodge", COLOR_DODGE)
|
||||
else CANVAS_OP_TO_GFX_OP("color-burn", COLOR_BURN)
|
||||
else CANVAS_OP_TO_GFX_OP("hard-light", HARD_LIGHT)
|
||||
else CANVAS_OP_TO_GFX_OP("soft-light", SOFT_LIGHT)
|
||||
else CANVAS_OP_TO_GFX_OP("difference", DIFFERENCE)
|
||||
else CANVAS_OP_TO_GFX_OP("exclusion", EXCLUSION)
|
||||
else CANVAS_OP_TO_GFX_OP("hue", HUE)
|
||||
else CANVAS_OP_TO_GFX_OP("saturation", SATURATION)
|
||||
else CANVAS_OP_TO_GFX_OP("color", COLOR)
|
||||
else CANVAS_OP_TO_GFX_OP("luminosity", LUMINOSITY)
|
||||
else {
|
||||
error.Throw(NS_ERROR_FAILURE);
|
||||
}
|
||||
|
@ -65,6 +65,51 @@ CGBlendMode ToBlendMode(CompositionOp op)
|
||||
case OP_XOR:
|
||||
mode = kCGBlendModeXOR;
|
||||
break;
|
||||
case OP_MULTIPLY:
|
||||
mode = kCGBlendModeMultiply;
|
||||
break;
|
||||
case OP_SCREEN:
|
||||
mode = kCGBlendModeScreen;
|
||||
break;
|
||||
case OP_OVERLAY:
|
||||
mode = kCGBlendModeOverlay;
|
||||
break;
|
||||
case OP_DARKEN:
|
||||
mode = kCGBlendModeDarken;
|
||||
break;
|
||||
case OP_LIGHTEN:
|
||||
mode = kCGBlendModeLighten;
|
||||
break;
|
||||
case OP_COLOR_DODGE:
|
||||
mode = kCGBlendModeColorDodge;
|
||||
break;
|
||||
case OP_COLOR_BURN:
|
||||
mode = kCGBlendModeColorBurn;
|
||||
break;
|
||||
case OP_HARD_LIGHT:
|
||||
mode = kCGBlendModeHardLight;
|
||||
break;
|
||||
case OP_SOFT_LIGHT:
|
||||
mode = kCGBlendModeSoftLight;
|
||||
break;
|
||||
case OP_DIFFERENCE:
|
||||
mode = kCGBlendModeDifference;
|
||||
break;
|
||||
case OP_EXCLUSION:
|
||||
mode = kCGBlendModeExclusion;
|
||||
break;
|
||||
case OP_HUE:
|
||||
mode = kCGBlendModeHue;
|
||||
break;
|
||||
case OP_SATURATION:
|
||||
mode = kCGBlendModeSaturation;
|
||||
break;
|
||||
case OP_COLOR:
|
||||
mode = kCGBlendModeColor;
|
||||
break;
|
||||
case OP_LUMINOSITY:
|
||||
mode = kCGBlendModeLuminosity;
|
||||
break;
|
||||
/*
|
||||
case OP_CLEAR:
|
||||
mode = kCGBlendModeClear;
|
||||
|
@ -40,6 +40,36 @@ GfxOpToCairoOp(CompositionOp op)
|
||||
return CAIRO_OPERATOR_DEST_ATOP;
|
||||
case OP_XOR:
|
||||
return CAIRO_OPERATOR_XOR;
|
||||
case OP_MULTIPLY:
|
||||
return CAIRO_OPERATOR_MULTIPLY;
|
||||
case OP_SCREEN:
|
||||
return CAIRO_OPERATOR_SCREEN;
|
||||
case OP_OVERLAY:
|
||||
return CAIRO_OPERATOR_OVERLAY;
|
||||
case OP_DARKEN:
|
||||
return CAIRO_OPERATOR_DARKEN;
|
||||
case OP_LIGHTEN:
|
||||
return CAIRO_OPERATOR_LIGHTEN;
|
||||
case OP_COLOR_DODGE:
|
||||
return CAIRO_OPERATOR_COLOR_DODGE;
|
||||
case OP_COLOR_BURN:
|
||||
return CAIRO_OPERATOR_COLOR_BURN;
|
||||
case OP_HARD_LIGHT:
|
||||
return CAIRO_OPERATOR_HARD_LIGHT;
|
||||
case OP_SOFT_LIGHT:
|
||||
return CAIRO_OPERATOR_SOFT_LIGHT;
|
||||
case OP_DIFFERENCE:
|
||||
return CAIRO_OPERATOR_DIFFERENCE;
|
||||
case OP_EXCLUSION:
|
||||
return CAIRO_OPERATOR_EXCLUSION;
|
||||
case OP_HUE:
|
||||
return CAIRO_OPERATOR_HSL_HUE;
|
||||
case OP_SATURATION:
|
||||
return CAIRO_OPERATOR_HSL_SATURATION;
|
||||
case OP_COLOR:
|
||||
return CAIRO_OPERATOR_HSL_COLOR;
|
||||
case OP_LUMINOSITY:
|
||||
return CAIRO_OPERATOR_HSL_LUMINOSITY;
|
||||
case OP_COUNT:
|
||||
break;
|
||||
}
|
||||
|
@ -248,6 +248,36 @@ inline CompositionOp CompositionOpForOp(gfxContext::GraphicsOperator aOp)
|
||||
return OP_DEST_ATOP;
|
||||
case gfxContext::OPERATOR_XOR:
|
||||
return OP_XOR;
|
||||
case gfxContext::OPERATOR_MULTIPLY:
|
||||
return OP_MULTIPLY;
|
||||
case gfxContext::OPERATOR_SCREEN:
|
||||
return OP_SCREEN;
|
||||
case gfxContext::OPERATOR_OVERLAY:
|
||||
return OP_OVERLAY;
|
||||
case gfxContext::OPERATOR_DARKEN:
|
||||
return OP_DARKEN;
|
||||
case gfxContext::OPERATOR_LIGHTEN:
|
||||
return OP_LIGHTEN;
|
||||
case gfxContext::OPERATOR_COLOR_DODGE:
|
||||
return OP_COLOR_DODGE;
|
||||
case gfxContext::OPERATOR_COLOR_BURN:
|
||||
return OP_COLOR_BURN;
|
||||
case gfxContext::OPERATOR_HARD_LIGHT:
|
||||
return OP_HARD_LIGHT;
|
||||
case gfxContext::OPERATOR_SOFT_LIGHT:
|
||||
return OP_SOFT_LIGHT;
|
||||
case gfxContext::OPERATOR_DIFFERENCE:
|
||||
return OP_DIFFERENCE;
|
||||
case gfxContext::OPERATOR_EXCLUSION:
|
||||
return OP_EXCLUSION;
|
||||
case gfxContext::OPERATOR_HUE:
|
||||
return OP_HUE;
|
||||
case gfxContext::OPERATOR_SATURATION:
|
||||
return OP_SATURATION;
|
||||
case gfxContext::OPERATOR_COLOR:
|
||||
return OP_COLOR;
|
||||
case gfxContext::OPERATOR_LUMINOSITY:
|
||||
return OP_LUMINOSITY;
|
||||
default:
|
||||
return OP_OVER;
|
||||
}
|
||||
@ -274,6 +304,36 @@ inline gfxContext::GraphicsOperator ThebesOp(CompositionOp aOp)
|
||||
return gfxContext::OPERATOR_DEST_ATOP;
|
||||
case OP_XOR:
|
||||
return gfxContext::OPERATOR_XOR;
|
||||
case OP_MULTIPLY:
|
||||
return gfxContext::OPERATOR_MULTIPLY;
|
||||
case OP_SCREEN:
|
||||
return gfxContext::OPERATOR_SCREEN;
|
||||
case OP_OVERLAY:
|
||||
return gfxContext::OPERATOR_OVERLAY;
|
||||
case OP_DARKEN:
|
||||
return gfxContext::OPERATOR_DARKEN;
|
||||
case OP_LIGHTEN:
|
||||
return gfxContext::OPERATOR_LIGHTEN;
|
||||
case OP_COLOR_DODGE:
|
||||
return gfxContext::OPERATOR_COLOR_DODGE;
|
||||
case OP_COLOR_BURN:
|
||||
return gfxContext::OPERATOR_COLOR_BURN;
|
||||
case OP_HARD_LIGHT:
|
||||
return gfxContext::OPERATOR_HARD_LIGHT;
|
||||
case OP_SOFT_LIGHT:
|
||||
return gfxContext::OPERATOR_SOFT_LIGHT;
|
||||
case OP_DIFFERENCE:
|
||||
return gfxContext::OPERATOR_DIFFERENCE;
|
||||
case OP_EXCLUSION:
|
||||
return gfxContext::OPERATOR_EXCLUSION;
|
||||
case OP_HUE:
|
||||
return gfxContext::OPERATOR_HUE;
|
||||
case OP_SATURATION:
|
||||
return gfxContext::OPERATOR_SATURATION;
|
||||
case OP_COLOR:
|
||||
return gfxContext::OPERATOR_COLOR;
|
||||
case OP_LUMINOSITY:
|
||||
return gfxContext::OPERATOR_LUMINOSITY;
|
||||
default:
|
||||
return gfxContext::OPERATOR_OVER;
|
||||
}
|
||||
|
@ -529,7 +529,23 @@ public:
|
||||
|
||||
OPERATOR_XOR,
|
||||
OPERATOR_ADD,
|
||||
OPERATOR_SATURATE
|
||||
OPERATOR_SATURATE,
|
||||
|
||||
OPERATOR_MULTIPLY,
|
||||
OPERATOR_SCREEN,
|
||||
OPERATOR_OVERLAY,
|
||||
OPERATOR_DARKEN,
|
||||
OPERATOR_LIGHTEN,
|
||||
OPERATOR_COLOR_DODGE,
|
||||
OPERATOR_COLOR_BURN,
|
||||
OPERATOR_HARD_LIGHT,
|
||||
OPERATOR_SOFT_LIGHT,
|
||||
OPERATOR_DIFFERENCE,
|
||||
OPERATOR_EXCLUSION,
|
||||
OPERATOR_HUE,
|
||||
OPERATOR_SATURATION,
|
||||
OPERATOR_COLOR,
|
||||
OPERATOR_LUMINOSITY
|
||||
};
|
||||
/**
|
||||
* Sets the operator used for all further drawing. The operator affects
|
||||
|
Loading…
Reference in New Issue
Block a user