OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 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 "SkColorPriv.h" | 8 #include "SkColorPriv.h" |
9 #include "SkColorSpace_Base.h" | 9 #include "SkColorSpace_Base.h" |
10 #include "SkColorSpaceXform.h" | 10 #include "SkColorSpaceXform.h" |
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 : fColorLUT(sk_ref_sp((SkColorLookUpTable*) as_CSB(srcSpace)->colorLUT())) | 622 : fColorLUT(sk_ref_sp((SkColorLookUpTable*) as_CSB(srcSpace)->colorLUT())) |
623 { | 623 { |
624 srcToDst.asRowMajorf(fSrcToDst); | 624 srcToDst.asRowMajorf(fSrcToDst); |
625 build_gamma_tables(fSrcGammaTables, fSrcGammaTableStorage, 256, srcSpace, kT
oLinear); | 625 build_gamma_tables(fSrcGammaTables, fSrcGammaTableStorage, 256, srcSpace, kT
oLinear); |
626 build_gamma_tables(fDstGammaTables, fDstGammaTableStorage, kDstGammaTableSiz
e, | 626 build_gamma_tables(fDstGammaTables, fDstGammaTableStorage, kDstGammaTableSiz
e, |
627 dstSpace, kFromLinear); | 627 dstSpace, kFromLinear); |
628 } | 628 } |
629 | 629 |
630 template <> | 630 template <> |
631 void SkColorSpaceXform_Base<SkColorSpace::kSRGB_GammaNamed> | 631 void SkColorSpaceXform_Base<SkColorSpace::kSRGB_GammaNamed> |
632 ::applyTo8888(SkPMColor* dst, const RGBA32* src, int len) const | 632 ::applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const |
633 { | 633 { |
634 if (fColorLUT) { | 634 if (fColorLUT) { |
635 handle_color_lut(dst, src, len, fColorLUT.get()); | 635 handle_color_lut(dst, src, len, fColorLUT.get()); |
636 src = dst; | 636 src = dst; |
637 } | 637 } |
638 | 638 |
639 SkOpts::color_xform_RGB1_to_srgb(dst, src, len, fSrcGammaTables, fSrcToDst); | 639 SkOpts::color_xform_RGB1_to_srgb(dst, src, len, fSrcGammaTables, fSrcToDst); |
640 } | 640 } |
641 | 641 |
642 template <> | 642 template <> |
643 void SkColorSpaceXform_Base<SkColorSpace::k2Dot2Curve_GammaNamed> | 643 void SkColorSpaceXform_Base<SkColorSpace::k2Dot2Curve_GammaNamed> |
644 ::applyTo8888(SkPMColor* dst, const RGBA32* src, int len) const | 644 ::applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const |
645 { | 645 { |
646 if (fColorLUT) { | 646 if (fColorLUT) { |
647 handle_color_lut(dst, src, len, fColorLUT.get()); | 647 handle_color_lut(dst, src, len, fColorLUT.get()); |
648 src = dst; | 648 src = dst; |
649 } | 649 } |
650 | 650 |
651 SkOpts::color_xform_RGB1_to_2dot2(dst, src, len, fSrcGammaTables, fSrcToDst)
; | 651 SkOpts::color_xform_RGB1_to_2dot2(dst, src, len, fSrcGammaTables, fSrcToDst)
; |
652 } | 652 } |
653 | 653 |
654 template <> | 654 template <> |
655 void SkColorSpaceXform_Base<SkColorSpace::kNonStandard_GammaNamed> | 655 void SkColorSpaceXform_Base<SkColorSpace::kNonStandard_GammaNamed> |
656 ::applyTo8888(SkPMColor* dst, const RGBA32* src, int len) const | 656 ::applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const |
657 { | 657 { |
658 if (fColorLUT) { | 658 if (fColorLUT) { |
659 handle_color_lut(dst, src, len, fColorLUT.get()); | 659 handle_color_lut(dst, src, len, fColorLUT.get()); |
660 src = dst; | 660 src = dst; |
661 } | 661 } |
662 | 662 |
663 SkOpts::color_xform_RGB1_to_table(dst, src, len, fSrcGammaTables, fSrcToDst,
fDstGammaTables); | 663 SkOpts::color_xform_RGB1_to_table(dst, src, len, fSrcGammaTables, fSrcToDst,
fDstGammaTables); |
664 } | 664 } |
665 | 665 |
| 666 template <> |
| 667 void SkColorSpaceXform_Base<SkColorSpace::kSRGB_GammaNamed> |
| 668 ::applyToBGRA(BGRA32* dst, const RGBA32* src, int len) const |
| 669 { |
| 670 if (fColorLUT) { |
| 671 handle_color_lut(dst, src, len, fColorLUT.get()); |
| 672 src = dst; |
| 673 } |
| 674 |
| 675 SkOpts::color_xform_RGB1_to_srgb_swaprb(dst, src, len, fSrcGammaTables, fSrc
ToDst); |
| 676 } |
| 677 |
| 678 template <> |
| 679 void SkColorSpaceXform_Base<SkColorSpace::k2Dot2Curve_GammaNamed> |
| 680 ::applyToBGRA(BGRA32* dst, const RGBA32* src, int len) const |
| 681 { |
| 682 if (fColorLUT) { |
| 683 handle_color_lut(dst, src, len, fColorLUT.get()); |
| 684 src = dst; |
| 685 } |
| 686 |
| 687 SkOpts::color_xform_RGB1_to_2dot2_swaprb(dst, src, len, fSrcGammaTables, fSr
cToDst); |
| 688 } |
| 689 |
| 690 template <> |
| 691 void SkColorSpaceXform_Base<SkColorSpace::kNonStandard_GammaNamed> |
| 692 ::applyToBGRA(BGRA32* dst, const RGBA32* src, int len) const |
| 693 { |
| 694 if (fColorLUT) { |
| 695 handle_color_lut(dst, src, len, fColorLUT.get()); |
| 696 src = dst; |
| 697 } |
| 698 |
| 699 SkOpts::color_xform_RGB1_to_table_swaprb(dst, src, len, fSrcGammaTables, fSr
cToDst, |
| 700 fDstGammaTables); |
| 701 } |
| 702 |
666 template <SkColorSpace::GammaNamed T> | 703 template <SkColorSpace::GammaNamed T> |
667 void SkColorSpaceXform_Base<T> | 704 void SkColorSpaceXform_Base<T> |
668 ::applyToF16(RGBAF16* dst, const RGBA32* src, int len) const | 705 ::applyToF16(RGBAF16* dst, const RGBA32* src, int len) const |
669 { | 706 { |
670 if (fColorLUT) { | 707 if (fColorLUT) { |
671 size_t storageBytes = len * sizeof(RGBA32); | 708 size_t storageBytes = len * sizeof(RGBA32); |
672 #if defined(GOOGLE3) | 709 #if defined(GOOGLE3) |
673 // Stack frame size is limited in GOOGLE3. | 710 // Stack frame size is limited in GOOGLE3. |
674 SkAutoSMalloc<256 * sizeof(RGBA32)> storage(storageBytes); | 711 SkAutoSMalloc<256 * sizeof(RGBA32)> storage(storageBytes); |
675 #else | 712 #else |
676 SkAutoSMalloc<1024 * sizeof(RGBA32)> storage(storageBytes); | 713 SkAutoSMalloc<1024 * sizeof(RGBA32)> storage(storageBytes); |
677 #endif | 714 #endif |
678 | 715 |
679 handle_color_lut((RGBA32*) storage.get(), src, len, fColorLUT.get()); | 716 handle_color_lut((RGBA32*) storage.get(), src, len, fColorLUT.get()); |
680 src = (const RGBA32*) storage.get(); | 717 src = (const RGBA32*) storage.get(); |
681 } | 718 } |
682 | 719 |
683 SkOpts::color_xform_RGB1_to_linear(dst, src, len, fSrcGammaTables, fSrcToDst
); | 720 SkOpts::color_xform_RGB1_to_linear(dst, src, len, fSrcGammaTables, fSrcToDst
); |
684 } | 721 } |
OLD | NEW |