forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathweb_blend_mode.h
107 lines (99 loc) · 3.58 KB
/
web_blend_mode.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CC_BLINK_WEB_BLEND_MODE_H_
#define CC_BLINK_WEB_BLEND_MODE_H_
#include "third_party/WebKit/public/platform/WebBlendMode.h"
#include "third_party/skia/include/core/SkBlendMode.h"
namespace cc_blink {
inline SkBlendMode BlendModeToSkia(blink::WebBlendMode blend_mode) {
switch (blend_mode) {
case blink::WebBlendMode::kNormal:
return SkBlendMode::kSrcOver;
case blink::WebBlendMode::kMultiply:
return SkBlendMode::kMultiply;
case blink::WebBlendMode::kScreen:
return SkBlendMode::kScreen;
case blink::WebBlendMode::kOverlay:
return SkBlendMode::kOverlay;
case blink::WebBlendMode::kDarken:
return SkBlendMode::kDarken;
case blink::WebBlendMode::kLighten:
return SkBlendMode::kLighten;
case blink::WebBlendMode::kColorDodge:
return SkBlendMode::kColorDodge;
case blink::WebBlendMode::kColorBurn:
return SkBlendMode::kColorBurn;
case blink::WebBlendMode::kHardLight:
return SkBlendMode::kHardLight;
case blink::WebBlendMode::kSoftLight:
return SkBlendMode::kSoftLight;
case blink::WebBlendMode::kDifference:
return SkBlendMode::kDifference;
case blink::WebBlendMode::kExclusion:
return SkBlendMode::kExclusion;
case blink::WebBlendMode::kHue:
return SkBlendMode::kHue;
case blink::WebBlendMode::kSaturation:
return SkBlendMode::kSaturation;
case blink::WebBlendMode::kColor:
return SkBlendMode::kColor;
case blink::WebBlendMode::kLuminosity:
return SkBlendMode::kLuminosity;
}
return SkBlendMode::kSrcOver;
}
inline blink::WebBlendMode BlendModeFromSkia(SkBlendMode blend_mode) {
switch (blend_mode) {
case SkBlendMode::kSrcOver:
return blink::WebBlendMode::kNormal;
case SkBlendMode::kMultiply:
return blink::WebBlendMode::kMultiply;
case SkBlendMode::kScreen:
return blink::WebBlendMode::kScreen;
case SkBlendMode::kOverlay:
return blink::WebBlendMode::kOverlay;
case SkBlendMode::kDarken:
return blink::WebBlendMode::kDarken;
case SkBlendMode::kLighten:
return blink::WebBlendMode::kLighten;
case SkBlendMode::kColorDodge:
return blink::WebBlendMode::kColorDodge;
case SkBlendMode::kColorBurn:
return blink::WebBlendMode::kColorBurn;
case SkBlendMode::kHardLight:
return blink::WebBlendMode::kHardLight;
case SkBlendMode::kSoftLight:
return blink::WebBlendMode::kSoftLight;
case SkBlendMode::kDifference:
return blink::WebBlendMode::kDifference;
case SkBlendMode::kExclusion:
return blink::WebBlendMode::kExclusion;
case SkBlendMode::kHue:
return blink::WebBlendMode::kHue;
case SkBlendMode::kSaturation:
return blink::WebBlendMode::kSaturation;
case SkBlendMode::kColor:
return blink::WebBlendMode::kColor;
case SkBlendMode::kLuminosity:
return blink::WebBlendMode::kLuminosity;
// these value are SkBlendModes, but no blend modes.
case SkBlendMode::kClear:
case SkBlendMode::kSrc:
case SkBlendMode::kDst:
case SkBlendMode::kDstOver:
case SkBlendMode::kSrcIn:
case SkBlendMode::kDstIn:
case SkBlendMode::kSrcOut:
case SkBlendMode::kDstOut:
case SkBlendMode::kSrcATop:
case SkBlendMode::kDstATop:
case SkBlendMode::kXor:
case SkBlendMode::kPlus:
case SkBlendMode::kModulate:
NOTREACHED();
}
return blink::WebBlendMode::kNormal;
}
} // namespace cc_blink
#endif // CC_BLINK_WEB_BLEND_MODE_H_