• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
BlendModeToSkia(blink::WebBlendMode blend_mode)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 
BlendModeFromSkia(SkXfermode::Mode blend_mode)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