Chromium Code Reviews| Index: Source/WebCore/platform/graphics/skia/SkiaUtils.cpp |
| =================================================================== |
| --- Source/WebCore/platform/graphics/skia/SkiaUtils.cpp (revision 147814) |
| +++ Source/WebCore/platform/graphics/skia/SkiaUtils.cpp (working copy) |
| @@ -60,8 +60,37 @@ |
| { CompositePlusLighter, SkXfermode::kPlus_Mode } |
| }; |
| -SkXfermode::Mode WebCoreCompositeToSkiaComposite(CompositeOperator op) |
| +static const struct BlendOpToXfermodeMode { |
| + uint8_t mBlendOp; |
| + uint8_t m_xfermodeMode; |
| +} gMapBlendOpsToXfermodeModes[] = { |
| + { BlendModeMultiply, SkXfermode::kMultiply_Mode }, |
| + { BlendModeScreen, SkXfermode::kScreen_Mode }, |
| + { BlendModeOverlay, SkXfermode::kOverlay_Mode }, |
| + { BlendModeDarken, SkXfermode::kDarken_Mode }, |
| + { BlendModeLighten, SkXfermode::kLighten_Mode }, |
| + { BlendModeColorDodge, SkXfermode::kColorDodge_Mode }, |
| + { BlendModeColorBurn, SkXfermode::kColorBurn_Mode }, |
| + { BlendModeHardLight, SkXfermode::kHardLight_Mode }, |
| + { BlendModeSoftLight, SkXfermode::kSoftLight_Mode }, |
| + { BlendModeDifference, SkXfermode::kDifference_Mode }, |
| + { BlendModeExclusion, SkXfermode::kExclusion_Mode }, |
| + { BlendModeHue, SkXfermode::kHue_Mode }, |
| + { BlendModeSaturation, SkXfermode::kSaturation_Mode }, |
| + { BlendModeColor, SkXfermode::kColor_Mode }, |
| + { BlendModeLuminosity, SkXfermode::kLuminosity_Mode } |
| +}; |
|
Stephen Chennney
2013/04/08 16:07:02
This should be implemented as an array. If the Ble
rosca
2013/04/08 19:53:25
I followed the example of CompositOpToXfermodeMode
|
| + |
| +SkXfermode::Mode WebCoreCompositeToSkiaComposite(CompositeOperator op, BlendMode blendMode) |
| { |
| + if (blendMode != BlendModeNormal) { |
|
Stephen Chennney
2013/04/08 16:07:02
Is BlendModeNormal == 0? If so, suitably adjust my
|
| + const BlendOpToXfermodeMode* table = gMapBlendOpsToXfermodeModes; |
| + for (unsigned i = 0; i < SK_ARRAY_COUNT(gMapBlendOpsToXfermodeModes); i++) { |
| + if (table[i].mBlendOp == blendMode) |
| + return (SkXfermode::Mode)table[i].m_xfermodeMode; |
| + } |
| + } |
| + |
| const CompositOpToXfermodeMode* table = gMapCompositOpsToXfermodeModes; |
| for (unsigned i = 0; i < SK_ARRAY_COUNT(gMapCompositOpsToXfermodeModes); i++) { |