Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / cc / blink / web_blend_mode.h
1 // Copyright 2014 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 CC_BLINK_WEB_BLEND_MODE_H_
6 #define CC_BLINK_WEB_BLEND_MODE_H_
7
8 #include "third_party/WebKit/public/platform/WebBlendMode.h"
9 #include "third_party/skia/include/core/SkXfermode.h"
10
11 namespace cc_blink {
12
13 inline SkXfermode::Mode BlendModeToSkia(blink::WebBlendMode blend_mode) {
14   switch (blend_mode) {
15     case blink::WebBlendModeNormal:
16       return SkXfermode::kSrcOver_Mode;
17     case blink::WebBlendModeMultiply:
18       return SkXfermode::kMultiply_Mode;
19     case blink::WebBlendModeScreen:
20       return SkXfermode::kScreen_Mode;
21     case blink::WebBlendModeOverlay:
22       return SkXfermode::kOverlay_Mode;
23     case blink::WebBlendModeDarken:
24       return SkXfermode::kDarken_Mode;
25     case blink::WebBlendModeLighten:
26       return SkXfermode::kLighten_Mode;
27     case blink::WebBlendModeColorDodge:
28       return SkXfermode::kColorDodge_Mode;
29     case blink::WebBlendModeColorBurn:
30       return SkXfermode::kColorBurn_Mode;
31     case blink::WebBlendModeHardLight:
32       return SkXfermode::kHardLight_Mode;
33     case blink::WebBlendModeSoftLight:
34       return SkXfermode::kSoftLight_Mode;
35     case blink::WebBlendModeDifference:
36       return SkXfermode::kDifference_Mode;
37     case blink::WebBlendModeExclusion:
38       return SkXfermode::kExclusion_Mode;
39     case blink::WebBlendModeHue:
40       return SkXfermode::kHue_Mode;
41     case blink::WebBlendModeSaturation:
42       return SkXfermode::kSaturation_Mode;
43     case blink::WebBlendModeColor:
44       return SkXfermode::kColor_Mode;
45     case blink::WebBlendModeLuminosity:
46       return SkXfermode::kLuminosity_Mode;
47   }
48   return SkXfermode::kSrcOver_Mode;
49 }
50
51 inline blink::WebBlendMode BlendModeFromSkia(SkXfermode::Mode blend_mode) {
52   switch (blend_mode) {
53     case SkXfermode::kSrcOver_Mode:
54       return blink::WebBlendModeNormal;
55     case SkXfermode::kMultiply_Mode:
56       return blink::WebBlendModeMultiply;
57     case SkXfermode::kScreen_Mode:
58       return blink::WebBlendModeScreen;
59     case SkXfermode::kOverlay_Mode:
60       return blink::WebBlendModeOverlay;
61     case SkXfermode::kDarken_Mode:
62       return blink::WebBlendModeDarken;
63     case SkXfermode::kLighten_Mode:
64       return blink::WebBlendModeLighten;
65     case SkXfermode::kColorDodge_Mode:
66       return blink::WebBlendModeColorDodge;
67     case SkXfermode::kColorBurn_Mode:
68       return blink::WebBlendModeColorBurn;
69     case SkXfermode::kHardLight_Mode:
70       return blink::WebBlendModeHardLight;
71     case SkXfermode::kSoftLight_Mode:
72       return blink::WebBlendModeSoftLight;
73     case SkXfermode::kDifference_Mode:
74       return blink::WebBlendModeDifference;
75     case SkXfermode::kExclusion_Mode:
76       return blink::WebBlendModeExclusion;
77     case SkXfermode::kHue_Mode:
78       return blink::WebBlendModeHue;
79     case SkXfermode::kSaturation_Mode:
80       return blink::WebBlendModeSaturation;
81     case SkXfermode::kColor_Mode:
82       return blink::WebBlendModeColor;
83     case SkXfermode::kLuminosity_Mode:
84       return blink::WebBlendModeLuminosity;
85
86     // these value are SkXfermodes, but no blend modes.
87     case SkXfermode::kClear_Mode:
88     case SkXfermode::kSrc_Mode:
89     case SkXfermode::kDst_Mode:
90     case SkXfermode::kDstOver_Mode:
91     case SkXfermode::kSrcIn_Mode:
92     case SkXfermode::kDstIn_Mode:
93     case SkXfermode::kSrcOut_Mode:
94     case SkXfermode::kDstOut_Mode:
95     case SkXfermode::kSrcATop_Mode:
96     case SkXfermode::kDstATop_Mode:
97     case SkXfermode::kXor_Mode:
98     case SkXfermode::kPlus_Mode:
99     case SkXfermode::kModulate_Mode:
100       NOTREACHED();
101   }
102   return blink::WebBlendModeNormal;
103 }
104
105 }  // namespace cc_blink
106
107 #endif  // CC_BLINK_WEB_BLEND_MODE_H_