Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(884)

Side by Side Diff: src/effects/SkColorFilters.cpp

Issue 1015533011: remove colorfilter native-565 support. complicating w/ no real value. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkFilterShader.cpp ('k') | src/effects/SkColorMatrixFilter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
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 #include "SkBlitRow.h" 8 #include "SkBlitRow.h"
9 #include "SkColorFilter.h" 9 #include "SkColorFilter.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
11 #include "SkModeColorFilter.h" 11 #include "SkModeColorFilter.h"
12 #include "SkReadBuffer.h" 12 #include "SkReadBuffer.h"
13 #include "SkWriteBuffer.h" 13 #include "SkWriteBuffer.h"
14 #include "SkUtils.h" 14 #include "SkUtils.h"
15 #include "SkString.h" 15 #include "SkString.h"
16 #include "SkValidationUtils.h" 16 #include "SkValidationUtils.h"
17 #include "SkColorMatrixFilter.h" 17 #include "SkColorMatrixFilter.h"
18 18
19 bool SkModeColorFilter::asColorMode(SkColor* color, SkXfermode::Mode* mode) cons t { 19 bool SkModeColorFilter::asColorMode(SkColor* color, SkXfermode::Mode* mode) cons t {
20 if (color) { 20 if (color) {
21 *color = fColor; 21 *color = fColor;
22 } 22 }
23 if (mode) { 23 if (mode) {
24 *mode = fMode; 24 *mode = fMode;
25 } 25 }
26 return true; 26 return true;
27 } 27 }
28 28
29 uint32_t SkModeColorFilter::getFlags() const { 29 uint32_t SkModeColorFilter::getFlags() const {
30 return fProc16 ? (kAlphaUnchanged_Flag | kHasFilter16_Flag) : 0; 30 switch (fMode) {
31 case SkXfermode::kDst_Mode: //!< [Da, Dc]
32 case SkXfermode::kSrcATop_Mode: //!< [Da, Sc * Da + (1 - Sa) * Dc]
33 return kAlphaUnchanged_Flag;
34 default:
35 break;
36 }
37 return 0;
31 } 38 }
32 39
33 void SkModeColorFilter::filterSpan(const SkPMColor shader[], int count, SkPMColo r result[]) const { 40 void SkModeColorFilter::filterSpan(const SkPMColor shader[], int count, SkPMColo r result[]) const {
34 SkPMColor color = fPMColor; 41 SkPMColor color = fPMColor;
35 SkXfermodeProc proc = fProc; 42 SkXfermodeProc proc = fProc;
36 43
37 for (int i = 0; i < count; i++) { 44 for (int i = 0; i < count; i++) {
38 result[i] = proc(color, shader[i]); 45 result[i] = proc(color, shader[i]);
39 } 46 }
40 } 47 }
41 48
42 void SkModeColorFilter::filterSpan16(const uint16_t shader[], int count, uint16_ t result[]) const {
43 SkASSERT(this->getFlags() & kHasFilter16_Flag);
44
45 SkPMColor color = fPMColor;
46 SkXfermodeProc16 proc16 = fProc16;
47
48 for (int i = 0; i < count; i++) {
49 result[i] = proc16(color, shader[i]);
50 }
51 }
52 void SkModeColorFilter::flatten(SkWriteBuffer& buffer) const { 49 void SkModeColorFilter::flatten(SkWriteBuffer& buffer) const {
53 buffer.writeColor(fColor); 50 buffer.writeColor(fColor);
54 buffer.writeUInt(fMode); 51 buffer.writeUInt(fMode);
55 } 52 }
56 53
57 void SkModeColorFilter::updateCache() { 54 void SkModeColorFilter::updateCache() {
58 fPMColor = SkPreMultiplyColor(fColor); 55 fPMColor = SkPreMultiplyColor(fColor);
59 fProc = SkXfermode::GetProc(fMode); 56 fProc = SkXfermode::GetProc(fMode);
60 fProc16 = SkXfermode::GetProc16(fMode, fColor);
61 } 57 }
62 58
63 SkFlattenable* SkModeColorFilter::CreateProc(SkReadBuffer& buffer) { 59 SkFlattenable* SkModeColorFilter::CreateProc(SkReadBuffer& buffer) {
64 SkColor color = buffer.readColor(); 60 SkColor color = buffer.readColor();
65 SkXfermode::Mode mode = (SkXfermode::Mode)buffer.readUInt(); 61 SkXfermode::Mode mode = (SkXfermode::Mode)buffer.readUInt();
66 return SkColorFilter::CreateModeFilter(color, mode); 62 return SkColorFilter::CreateModeFilter(color, mode);
67 } 63 }
68 64
69 /////////////////////////////////////////////////////////////////////////////// 65 ///////////////////////////////////////////////////////////////////////////////
70 #if SK_SUPPORT_GPU 66 #if SK_SUPPORT_GPU
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 } 377 }
382 378
383 #endif 379 #endif
384 380
385 /////////////////////////////////////////////////////////////////////////////// 381 ///////////////////////////////////////////////////////////////////////////////
386 382
387 class Src_SkModeColorFilter : public SkModeColorFilter { 383 class Src_SkModeColorFilter : public SkModeColorFilter {
388 public: 384 public:
389 Src_SkModeColorFilter(SkColor color) : INHERITED(color, SkXfermode::kSrc_Mod e) {} 385 Src_SkModeColorFilter(SkColor color) : INHERITED(color, SkXfermode::kSrc_Mod e) {}
390 386
391 uint32_t getFlags() const SK_OVERRIDE { 387 void filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) con st SK_OVERRIDE {
392 if (SkGetPackedA32(this->getPMColor()) == 0xFF) {
393 return kAlphaUnchanged_Flag | kHasFilter16_Flag;
394 } else {
395 return 0;
396 }
397 }
398
399 virtual void filterSpan(const SkPMColor shader[], int count,
400 SkPMColor result[]) const SK_OVERRIDE {
401 sk_memset32(result, this->getPMColor(), count); 388 sk_memset32(result, this->getPMColor(), count);
402 } 389 }
403 390
404 virtual void filterSpan16(const uint16_t shader[], int count,
405 uint16_t result[]) const SK_OVERRIDE {
406 SkASSERT(this->getFlags() & kHasFilter16_Flag);
407 sk_memset16(result, SkPixel32ToPixel16(this->getPMColor()), count);
408 }
409
410 private: 391 private:
411 typedef SkModeColorFilter INHERITED; 392 typedef SkModeColorFilter INHERITED;
412 }; 393 };
413 394
414 class SrcOver_SkModeColorFilter : public SkModeColorFilter { 395 class SrcOver_SkModeColorFilter : public SkModeColorFilter {
415 public: 396 public:
416 SrcOver_SkModeColorFilter(SkColor color) 397 SrcOver_SkModeColorFilter(SkColor color)
417 : INHERITED(color, SkXfermode::kSrcOver_Mode) { 398 : INHERITED(color, SkXfermode::kSrcOver_Mode) {
418 fColor32Proc = SkBlitRow::ColorProcFactory(); 399 fColor32Proc = SkBlitRow::ColorProcFactory();
419 } 400 }
420 401
421 uint32_t getFlags() const SK_OVERRIDE { 402 void filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) con st SK_OVERRIDE {
422 if (SkGetPackedA32(this->getPMColor()) == 0xFF) {
423 return kAlphaUnchanged_Flag | kHasFilter16_Flag;
424 } else {
425 return 0;
426 }
427 }
428
429 virtual void filterSpan(const SkPMColor shader[], int count,
430 SkPMColor result[]) const SK_OVERRIDE {
431 fColor32Proc(result, shader, count, this->getPMColor()); 403 fColor32Proc(result, shader, count, this->getPMColor());
432 } 404 }
433 405
434 virtual void filterSpan16(const uint16_t shader[], int count,
435 uint16_t result[]) const SK_OVERRIDE {
436 SkASSERT(this->getFlags() & kHasFilter16_Flag);
437 sk_memset16(result, SkPixel32ToPixel16(this->getPMColor()), count);
438 }
439
440 private: 406 private:
441 407
442 SkBlitRow::ColorProc fColor32Proc; 408 SkBlitRow::ColorProc fColor32Proc;
443 409
444 typedef SkModeColorFilter INHERITED; 410 typedef SkModeColorFilter INHERITED;
445 }; 411 };
446 412
447 /////////////////////////////////////////////////////////////////////////////// 413 ///////////////////////////////////////////////////////////////////////////////
448 414
449 SkColorFilter* SkColorFilter::CreateModeFilter(SkColor color, SkXfermode::Mode m ode) { 415 SkColorFilter* SkColorFilter::CreateModeFilter(SkColor color, SkXfermode::Mode m ode) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
506 byte_to_scale(SkColorGetG(mul)), 472 byte_to_scale(SkColorGetG(mul)),
507 byte_to_scale(SkColorGetB(mul)), 473 byte_to_scale(SkColorGetB(mul)),
508 1); 474 1);
509 matrix.postTranslate(SkIntToScalar(SkColorGetR(add)), 475 matrix.postTranslate(SkIntToScalar(SkColorGetR(add)),
510 SkIntToScalar(SkColorGetG(add)), 476 SkIntToScalar(SkColorGetG(add)),
511 SkIntToScalar(SkColorGetB(add)), 477 SkIntToScalar(SkColorGetB(add)),
512 0); 478 0);
513 return SkColorMatrixFilter::Create(matrix); 479 return SkColorMatrixFilter::Create(matrix);
514 } 480 }
515 481
OLDNEW
« no previous file with comments | « src/core/SkFilterShader.cpp ('k') | src/effects/SkColorMatrixFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698