Chromium Code Reviews| Index: src/c/sk_paint.cpp |
| diff --git a/src/c/sk_paint.cpp b/src/c/sk_paint.cpp |
| index e71285d4d5ca16924051fedc5750d28d558fc1be..63bcacf9b94a7636c2d5ede5e22c97ae7bfe8c59 100644 |
| --- a/src/c/sk_paint.cpp |
| +++ b/src/c/sk_paint.cpp |
| @@ -132,4 +132,42 @@ void sk_paint_set_stroke_join(sk_paint_t* cpaint, sk_stroke_join_t cjoin) { |
| } |
| } |
| - |
| +void sk_paint_set_xfermode_mode(sk_paint_t* paint, sk_xfermode_mode_t mode) { |
| + SkASSERT(paint); |
|
reed1
2015/07/31 18:15:31
don't need this, as the setXfermode will reliably
|
| + SkXfermode::Mode skmode = SkXfermode::Mode(-1); |
| + switch (mode) { |
| + #define MAP(X, Y) case (X): skmode = (Y); break |
| + MAP( CLEAR_SK_XFERMODE_MODE, SkXfermode::kClear_Mode ); |
| + MAP( SRC_SK_XFERMODE_MODE, SkXfermode::kSrc_Mode ); |
| + MAP( DST_SK_XFERMODE_MODE, SkXfermode::kDst_Mode ); |
| + MAP( SRCOVER_SK_XFERMODE_MODE, SkXfermode::kSrcOver_Mode ); |
| + MAP( DSTOVER_SK_XFERMODE_MODE, SkXfermode::kDstOver_Mode ); |
| + MAP( SRCIN_SK_XFERMODE_MODE, SkXfermode::kSrcIn_Mode ); |
| + MAP( DSTIN_SK_XFERMODE_MODE, SkXfermode::kDstIn_Mode ); |
| + MAP( SRCOUT_SK_XFERMODE_MODE, SkXfermode::kSrcOut_Mode ); |
| + MAP( DSTOUT_SK_XFERMODE_MODE, SkXfermode::kDstOut_Mode ); |
| + MAP( SRCATOP_SK_XFERMODE_MODE, SkXfermode::kSrcATop_Mode ); |
| + MAP( DSTATOP_SK_XFERMODE_MODE, SkXfermode::kDstATop_Mode ); |
| + MAP( XOR_SK_XFERMODE_MODE, SkXfermode::kXor_Mode ); |
| + MAP( PLUS_SK_XFERMODE_MODE, SkXfermode::kPlus_Mode ); |
| + MAP( MODULATE_SK_XFERMODE_MODE, SkXfermode::kModulate_Mode ); |
| + MAP( SCREEN_SK_XFERMODE_MODE, SkXfermode::kScreen_Mode ); |
| + MAP( OVERLAY_SK_XFERMODE_MODE, SkXfermode::kOverlay_Mode ); |
| + MAP( DARKEN_SK_XFERMODE_MODE, SkXfermode::kDarken_Mode ); |
| + MAP( LIGHTEN_SK_XFERMODE_MODE, SkXfermode::kLighten_Mode ); |
| + MAP( COLORDODGE_SK_XFERMODE_MODE, SkXfermode::kColorDodge_Mode ); |
| + MAP( COLORBURN_SK_XFERMODE_MODE, SkXfermode::kColorBurn_Mode ); |
| + MAP( HARDLIGHT_SK_XFERMODE_MODE, SkXfermode::kHardLight_Mode ); |
| + MAP( SOFTLIGHT_SK_XFERMODE_MODE, SkXfermode::kSoftLight_Mode ); |
| + MAP( DIFFERENCE_SK_XFERMODE_MODE, SkXfermode::kDifference_Mode ); |
| + MAP( EXCLUSION_SK_XFERMODE_MODE, SkXfermode::kExclusion_Mode ); |
| + MAP( MULTIPLY_SK_XFERMODE_MODE, SkXfermode::kMultiply_Mode ); |
| + MAP( HUE_SK_XFERMODE_MODE, SkXfermode::kHue_Mode ); |
| + MAP( SATURATION_SK_XFERMODE_MODE, SkXfermode::kSaturation_Mode ); |
| + MAP( COLOR_SK_XFERMODE_MODE, SkXfermode::kColor_Mode ); |
| + MAP( LUMINOSITY_SK_XFERMODE_MODE, SkXfermode::kLuminosity_Mode ); |
| + #undef MAP |
| + } |
| + SkASSERT((int)skmode != -1); |
| + AsPaint(paint)->setXfermodeMode(skmode); |
| +} |