| 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 |