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

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

Issue 973593002: change colorfilter to return an array of frag processors (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update gm 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
OLDNEW
1 1
2 #include "SkBitmap.h" 2 #include "SkBitmap.h"
3 #include "SkTableColorFilter.h" 3 #include "SkTableColorFilter.h"
4 #include "SkColorPriv.h" 4 #include "SkColorPriv.h"
5 #include "SkReadBuffer.h" 5 #include "SkReadBuffer.h"
6 #include "SkWriteBuffer.h" 6 #include "SkWriteBuffer.h"
7 #include "SkUnPreMultiply.h" 7 #include "SkUnPreMultiply.h"
8 #include "SkString.h" 8 #include "SkString.h"
9 9
10 class SkTable_ColorFilter : public SkColorFilter { 10 class SkTable_ColorFilter : public SkColorFilter {
(...skipping 26 matching lines...) Expand all
37 } 37 }
38 38
39 virtual ~SkTable_ColorFilter() { 39 virtual ~SkTable_ColorFilter() {
40 SkDELETE(fBitmap); 40 SkDELETE(fBitmap);
41 } 41 }
42 42
43 bool asComponentTable(SkBitmap* table) const SK_OVERRIDE; 43 bool asComponentTable(SkBitmap* table) const SK_OVERRIDE;
44 SkColorFilter* newComposed(const SkColorFilter* inner) const SK_OVERRIDE; 44 SkColorFilter* newComposed(const SkColorFilter* inner) const SK_OVERRIDE;
45 45
46 #if SK_SUPPORT_GPU 46 #if SK_SUPPORT_GPU
47 GrFragmentProcessor* asFragmentProcessor(GrContext* context) const SK_OVERRI DE; 47 bool asFragmentProcessors(GrContext*, SkTDArray<GrFragmentProcessor*>*) cons t SK_OVERRIDE;
48 #endif 48 #endif
49 49
50 void filterSpan(const SkPMColor src[], int count, SkPMColor dst[]) const SK_ OVERRIDE; 50 void filterSpan(const SkPMColor src[], int count, SkPMColor dst[]) const SK_ OVERRIDE;
51 51
52 SK_TO_STRING_OVERRIDE() 52 SK_TO_STRING_OVERRIDE()
53 53
54 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTable_ColorFilter) 54 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkTable_ColorFilter)
55 55
56 enum { 56 enum {
57 kA_Flag = 1 << 0, 57 kA_Flag = 1 << 0,
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 luts[j][i] = SkToU8(random->nextBits(8)); 560 luts[j][i] = SkToU8(random->nextBits(8));
561 } 561 }
562 } 562 }
563 } 563 }
564 SkAutoTUnref<SkColorFilter> filter(SkTableColorFilter::CreateARGB( 564 SkAutoTUnref<SkColorFilter> filter(SkTableColorFilter::CreateARGB(
565 (flags & (1 << 0)) ? luts[0] : NULL, 565 (flags & (1 << 0)) ? luts[0] : NULL,
566 (flags & (1 << 1)) ? luts[1] : NULL, 566 (flags & (1 << 1)) ? luts[1] : NULL,
567 (flags & (1 << 2)) ? luts[2] : NULL, 567 (flags & (1 << 2)) ? luts[2] : NULL,
568 (flags & (1 << 3)) ? luts[3] : NULL 568 (flags & (1 << 3)) ? luts[3] : NULL
569 )); 569 ));
570 return filter->asFragmentProcessor(context); 570
571 SkTDArray<GrFragmentProcessor*> array;
572 if (filter->asFragmentProcessors(context, &array)) {
573 SkASSERT(1 == array.count()); // TableColorFilter only returns 1
574 return array[0];
575 }
576 return NULL;
571 } 577 }
572 578
573 GrFragmentProcessor* SkTable_ColorFilter::asFragmentProcessor(GrContext* context ) const { 579 bool SkTable_ColorFilter::asFragmentProcessors(GrContext* context,
580 SkTDArray<GrFragmentProcessor*>* array) const {
574 SkBitmap bitmap; 581 SkBitmap bitmap;
575 this->asComponentTable(&bitmap); 582 this->asComponentTable(&bitmap);
576 583
577 return ColorTableEffect::Create(context, bitmap, fFlags); 584 GrFragmentProcessor* frag = ColorTableEffect::Create(context, bitmap, fFlags );
585 if (frag) {
586 if (array) {
587 *array->append() = frag;
588 }
589 return true;
590 }
591 return false;
578 } 592 }
579 593
580 #endif // SK_SUPPORT_GPU 594 #endif // SK_SUPPORT_GPU
581 595
582 /////////////////////////////////////////////////////////////////////////////// 596 ///////////////////////////////////////////////////////////////////////////////
583 597
584 #ifdef SK_CPU_BENDIAN 598 #ifdef SK_CPU_BENDIAN
585 #else 599 #else
586 #define SK_A32_INDEX (3 - (SK_A32_SHIFT >> 3)) 600 #define SK_A32_INDEX (3 - (SK_A32_SHIFT >> 3))
587 #define SK_R32_INDEX (3 - (SK_R32_SHIFT >> 3)) 601 #define SK_R32_INDEX (3 - (SK_R32_SHIFT >> 3))
(...skipping 10 matching lines...) Expand all
598 SkColorFilter* SkTableColorFilter::CreateARGB(const uint8_t tableA[256], 612 SkColorFilter* SkTableColorFilter::CreateARGB(const uint8_t tableA[256],
599 const uint8_t tableR[256], 613 const uint8_t tableR[256],
600 const uint8_t tableG[256], 614 const uint8_t tableG[256],
601 const uint8_t tableB[256]) { 615 const uint8_t tableB[256]) {
602 return SkNEW_ARGS(SkTable_ColorFilter, (tableA, tableR, tableG, tableB)); 616 return SkNEW_ARGS(SkTable_ColorFilter, (tableA, tableR, tableG, tableB));
603 } 617 }
604 618
605 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkTableColorFilter) 619 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkTableColorFilter)
606 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTable_ColorFilter) 620 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTable_ColorFilter)
607 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 621 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698