1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_ 6 #define WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_ 7 8 #include "third_party/WebKit/public/platform/WebBlendMode.h" 9 10 namespace webkit { 11 12 inline SkXfermode::Mode BlendModeToSkia(blink::WebBlendMode blend_mode) { 13 switch (blend_mode) { 14 case blink::WebBlendModeNormal: 15 return SkXfermode::kSrcOver_Mode; 16 case blink::WebBlendModeMultiply: 17 return SkXfermode::kMultiply_Mode; 18 case blink::WebBlendModeScreen: 19 return SkXfermode::kScreen_Mode; 20 case blink::WebBlendModeOverlay: 21 return SkXfermode::kOverlay_Mode; 22 case blink::WebBlendModeDarken: 23 return SkXfermode::kDarken_Mode; 24 case blink::WebBlendModeLighten: 25 return SkXfermode::kLighten_Mode; 26 case blink::WebBlendModeColorDodge: 27 return SkXfermode::kColorDodge_Mode; 28 case blink::WebBlendModeColorBurn: 29 return SkXfermode::kColorBurn_Mode; 30 case blink::WebBlendModeHardLight: 31 return SkXfermode::kHardLight_Mode; 32 case blink::WebBlendModeSoftLight: 33 return SkXfermode::kSoftLight_Mode; 34 case blink::WebBlendModeDifference: 35 return SkXfermode::kDifference_Mode; 36 case blink::WebBlendModeExclusion: 37 return SkXfermode::kExclusion_Mode; 38 case blink::WebBlendModeHue: 39 return SkXfermode::kHue_Mode; 40 case blink::WebBlendModeSaturation: 41 return SkXfermode::kSaturation_Mode; 42 case blink::WebBlendModeColor: 43 return SkXfermode::kColor_Mode; 44 case blink::WebBlendModeLuminosity: 45 return SkXfermode::kLuminosity_Mode; 46 } 47 return SkXfermode::kSrcOver_Mode; 48 } 49 50 inline blink::WebBlendMode BlendModeFromSkia(SkXfermode::Mode blend_mode) { 51 switch (blend_mode) { 52 case SkXfermode::kSrcOver_Mode: 53 return blink::WebBlendModeNormal; 54 case SkXfermode::kMultiply_Mode: 55 return blink::WebBlendModeMultiply; 56 case SkXfermode::kScreen_Mode: 57 return blink::WebBlendModeScreen; 58 case SkXfermode::kOverlay_Mode: 59 return blink::WebBlendModeOverlay; 60 case SkXfermode::kDarken_Mode: 61 return blink::WebBlendModeDarken; 62 case SkXfermode::kLighten_Mode: 63 return blink::WebBlendModeLighten; 64 case SkXfermode::kColorDodge_Mode: 65 return blink::WebBlendModeColorDodge; 66 case SkXfermode::kColorBurn_Mode: 67 return blink::WebBlendModeColorBurn; 68 case SkXfermode::kHardLight_Mode: 69 return blink::WebBlendModeHardLight; 70 case SkXfermode::kSoftLight_Mode: 71 return blink::WebBlendModeSoftLight; 72 case SkXfermode::kDifference_Mode: 73 return blink::WebBlendModeDifference; 74 case SkXfermode::kExclusion_Mode: 75 return blink::WebBlendModeExclusion; 76 case SkXfermode::kHue_Mode: 77 return blink::WebBlendModeHue; 78 case SkXfermode::kSaturation_Mode: 79 return blink::WebBlendModeSaturation; 80 case SkXfermode::kColor_Mode: 81 return blink::WebBlendModeColor; 82 case SkXfermode::kLuminosity_Mode: 83 return blink::WebBlendModeLuminosity; 84 85 // these value are SkXfermodes, but no blend modes. 86 case SkXfermode::kClear_Mode: 87 case SkXfermode::kSrc_Mode: 88 case SkXfermode::kDst_Mode: 89 case SkXfermode::kDstOver_Mode: 90 case SkXfermode::kSrcIn_Mode: 91 case SkXfermode::kDstIn_Mode: 92 case SkXfermode::kSrcOut_Mode: 93 case SkXfermode::kDstOut_Mode: 94 case SkXfermode::kSrcATop_Mode: 95 case SkXfermode::kDstATop_Mode: 96 case SkXfermode::kXor_Mode: 97 case SkXfermode::kPlus_Mode: 98 case SkXfermode::kModulate_Mode: 99 NOTREACHED(); 100 } 101 return blink::WebBlendModeNormal; 102 } 103 104 } // namespace webkit 105 106 #endif // WEBKIT_RENDERER_COMPOSITOR_BINDINGS_WEB_BLEND_MODE_H_ 107