OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef Sk4pxXfermode_DEFINED | 8 #ifndef Sk4pxXfermode_DEFINED |
9 #define Sk4pxXfermode_DEFINED | 9 #define Sk4pxXfermode_DEFINED |
10 | 10 |
11 #include "Sk4px.h" | 11 #include "Sk4px.h" |
12 #include "SkPMFloat.h" | 12 #include "SkPMFloat.h" |
| 13 #include "SkXfermode_proccoeff.h" |
13 | 14 |
14 // This file is possibly included into multiple .cpp files. | 15 // This file is possibly included into multiple .cpp files. |
15 // Each gets its own independent instantiation by wrapping in an anonymous names
pace. | 16 // Each gets its own independent instantiation by wrapping in an anonymous names
pace. |
16 namespace { | 17 namespace { |
17 | 18 |
18 // Most xfermodes can be done most efficiently 4 pixels at a time in 8 or 16-bit
fixed point. | 19 // Most xfermodes can be done most efficiently 4 pixels at a time in 8 or 16-bit
fixed point. |
19 #define XFERMODE(Name) \ | 20 #define XFERMODE(Name) \ |
20 struct Name { \ | 21 struct Name { \ |
21 static Sk4px Xfer(const Sk4px&, const Sk4px&); \ | 22 static Sk4px Xfer(const Sk4px&, const Sk4px&); \ |
22 static const SkXfermode::Mode kMode = SkXfermode::k##Name##_Mode; \ | 23 static const SkXfermode::Mode kMode = SkXfermode::k##Name##_Mode; \ |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 case SkXfermode::kDstOut_Mode: return SkT4pxXfermode<DstOut>::Create
(rec); | 269 case SkXfermode::kDstOut_Mode: return SkT4pxXfermode<DstOut>::Create
(rec); |
269 case SkXfermode::kSrcATop_Mode: return SkT4pxXfermode<SrcATop>::Creat
e(rec); | 270 case SkXfermode::kSrcATop_Mode: return SkT4pxXfermode<SrcATop>::Creat
e(rec); |
270 case SkXfermode::kDstATop_Mode: return SkT4pxXfermode<DstATop>::Creat
e(rec); | 271 case SkXfermode::kDstATop_Mode: return SkT4pxXfermode<DstATop>::Creat
e(rec); |
271 case SkXfermode::kXor_Mode: return SkT4pxXfermode<Xor>::Create(re
c); | 272 case SkXfermode::kXor_Mode: return SkT4pxXfermode<Xor>::Create(re
c); |
272 case SkXfermode::kPlus_Mode: return SkT4pxXfermode<Plus>::Create(r
ec); | 273 case SkXfermode::kPlus_Mode: return SkT4pxXfermode<Plus>::Create(r
ec); |
273 case SkXfermode::kModulate_Mode: return SkT4pxXfermode<Modulate>::Crea
te(rec); | 274 case SkXfermode::kModulate_Mode: return SkT4pxXfermode<Modulate>::Crea
te(rec); |
274 case SkXfermode::kScreen_Mode: return SkT4pxXfermode<Screen>::Create
(rec); | 275 case SkXfermode::kScreen_Mode: return SkT4pxXfermode<Screen>::Create
(rec); |
275 case SkXfermode::kMultiply_Mode: return SkT4pxXfermode<Multiply>::Crea
te(rec); | 276 case SkXfermode::kMultiply_Mode: return SkT4pxXfermode<Multiply>::Crea
te(rec); |
276 case SkXfermode::kDifference_Mode: return SkT4pxXfermode<Difference>::Cr
eate(rec); | 277 case SkXfermode::kDifference_Mode: return SkT4pxXfermode<Difference>::Cr
eate(rec); |
277 case SkXfermode::kExclusion_Mode: return SkT4pxXfermode<Exclusion>::Cre
ate(rec); | 278 case SkXfermode::kExclusion_Mode: return SkT4pxXfermode<Exclusion>::Cre
ate(rec); |
278 #if !defined(SK_SUPPORT_LEGACY_XFERMODES) // For staging in Chrome (layout test
s). | |
279 case SkXfermode::kHardLight_Mode: return SkT4pxXfermode<HardLight>::Cre
ate(rec); | 279 case SkXfermode::kHardLight_Mode: return SkT4pxXfermode<HardLight>::Cre
ate(rec); |
280 case SkXfermode::kOverlay_Mode: return SkT4pxXfermode<Overlay>::Creat
e(rec); | 280 case SkXfermode::kOverlay_Mode: return SkT4pxXfermode<Overlay>::Creat
e(rec); |
281 case SkXfermode::kDarken_Mode: return SkT4pxXfermode<Darken>::Create
(rec); | 281 case SkXfermode::kDarken_Mode: return SkT4pxXfermode<Darken>::Create
(rec); |
282 case SkXfermode::kLighten_Mode: return SkT4pxXfermode<Lighten>::Creat
e(rec); | 282 case SkXfermode::kLighten_Mode: return SkT4pxXfermode<Lighten>::Creat
e(rec); |
283 | 283 |
284 case SkXfermode::kColorDodge_Mode: return SkTPMFloatXfermode<ColorDodge>
::Create(rec); | 284 case SkXfermode::kColorDodge_Mode: return SkTPMFloatXfermode<ColorDodge>
::Create(rec); |
285 case SkXfermode::kColorBurn_Mode: return SkTPMFloatXfermode<ColorBurn>:
:Create(rec); | 285 case SkXfermode::kColorBurn_Mode: return SkTPMFloatXfermode<ColorBurn>:
:Create(rec); |
286 case SkXfermode::kSoftLight_Mode: return SkTPMFloatXfermode<SoftLight>:
:Create(rec); | 286 case SkXfermode::kSoftLight_Mode: return SkTPMFloatXfermode<SoftLight>:
:Create(rec); |
287 #endif | |
288 default: break; | 287 default: break; |
289 } | 288 } |
290 #endif | 289 #endif |
291 return nullptr; | 290 return nullptr; |
292 } | 291 } |
293 | 292 |
294 } // namespace | 293 } // namespace |
295 | 294 |
296 #endif//Sk4pxXfermode_DEFINED | 295 #endif//Sk4pxXfermode_DEFINED |
OLD | NEW |