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 #include "SkBitmap.h" | 8 #include "SkBitmap.h" |
9 #include "SkTableColorFilter.h" | 9 #include "SkTableColorFilter.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
544 if (fFlags & SkTable_ColorFilter::kA_Flag) { | 544 if (fFlags & SkTable_ColorFilter::kA_Flag) { |
545 invalidateFlags |= kA_GrColorComponentFlag; | 545 invalidateFlags |= kA_GrColorComponentFlag; |
546 } | 546 } |
547 inout->invalidateComponents(invalidateFlags, GrInvariantOutput::kWill_ReadIn
put); | 547 inout->invalidateComponents(invalidateFlags, GrInvariantOutput::kWill_ReadIn
put); |
548 } | 548 } |
549 | 549 |
550 /////////////////////////////////////////////////////////////////////////////// | 550 /////////////////////////////////////////////////////////////////////////////// |
551 | 551 |
552 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(ColorTableEffect); | 552 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(ColorTableEffect); |
553 | 553 |
554 GrFragmentProcessor* ColorTableEffect::TestCreate(SkRandom* random, | 554 GrFragmentProcessor* ColorTableEffect::TestCreate(GrProcessorTestData* d) { |
555 GrContext* context, | |
556 const GrCaps&, | |
557 GrTexture* textures[]) { | |
558 int flags = 0; | 555 int flags = 0; |
559 uint8_t luts[256][4]; | 556 uint8_t luts[256][4]; |
560 do { | 557 do { |
561 for (int i = 0; i < 4; ++i) { | 558 for (int i = 0; i < 4; ++i) { |
562 flags |= random->nextBool() ? (1 << i): 0; | 559 flags |= d->fRandom->nextBool() ? (1 << i): 0; |
563 } | 560 } |
564 } while (!flags); | 561 } while (!flags); |
565 for (int i = 0; i < 4; ++i) { | 562 for (int i = 0; i < 4; ++i) { |
566 if (flags & (1 << i)) { | 563 if (flags & (1 << i)) { |
567 for (int j = 0; j < 256; ++j) { | 564 for (int j = 0; j < 256; ++j) { |
568 luts[j][i] = SkToU8(random->nextBits(8)); | 565 luts[j][i] = SkToU8(d->fRandom->nextBits(8)); |
569 } | 566 } |
570 } | 567 } |
571 } | 568 } |
572 SkAutoTUnref<SkColorFilter> filter(SkTableColorFilter::CreateARGB( | 569 SkAutoTUnref<SkColorFilter> filter(SkTableColorFilter::CreateARGB( |
573 (flags & (1 << 0)) ? luts[0] : NULL, | 570 (flags & (1 << 0)) ? luts[0] : NULL, |
574 (flags & (1 << 1)) ? luts[1] : NULL, | 571 (flags & (1 << 1)) ? luts[1] : NULL, |
575 (flags & (1 << 2)) ? luts[2] : NULL, | 572 (flags & (1 << 2)) ? luts[2] : NULL, |
576 (flags & (1 << 3)) ? luts[3] : NULL | 573 (flags & (1 << 3)) ? luts[3] : NULL |
577 )); | 574 )); |
578 | 575 |
579 SkTDArray<GrFragmentProcessor*> array; | 576 SkTDArray<GrFragmentProcessor*> array; |
580 GrPaint grPaint; | 577 if (filter->asFragmentProcessors(d->fContext, d->fShaderDataManager, &array)
) { |
581 if (filter->asFragmentProcessors(context, grPaint.getShaderDataManager(), &a
rray)) { | |
582 SkASSERT(1 == array.count()); // TableColorFilter only returns 1 | 578 SkASSERT(1 == array.count()); // TableColorFilter only returns 1 |
583 return array[0]; | 579 return array[0]; |
584 } | 580 } |
585 return NULL; | 581 return NULL; |
586 } | 582 } |
587 | 583 |
588 bool SkTable_ColorFilter::asFragmentProcessors(GrContext* context, | 584 bool SkTable_ColorFilter::asFragmentProcessors(GrContext* context, |
589 GrShaderDataManager*, | 585 GrShaderDataManager*, |
590 SkTDArray<GrFragmentProcessor*>*
array) const { | 586 SkTDArray<GrFragmentProcessor*>*
array) const { |
591 SkBitmap bitmap; | 587 SkBitmap bitmap; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 SkColorFilter* SkTableColorFilter::CreateARGB(const uint8_t tableA[256], | 621 SkColorFilter* SkTableColorFilter::CreateARGB(const uint8_t tableA[256], |
626 const uint8_t tableR[256], | 622 const uint8_t tableR[256], |
627 const uint8_t tableG[256], | 623 const uint8_t tableG[256], |
628 const uint8_t tableB[256]) { | 624 const uint8_t tableB[256]) { |
629 return SkNEW_ARGS(SkTable_ColorFilter, (tableA, tableR, tableG, tableB)); | 625 return SkNEW_ARGS(SkTable_ColorFilter, (tableA, tableR, tableG, tableB)); |
630 } | 626 } |
631 | 627 |
632 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkTableColorFilter) | 628 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkTableColorFilter) |
633 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTable_ColorFilter) | 629 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTable_ColorFilter) |
634 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 630 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |