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 ::applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const | 632 ::applyTo8888(SkPMColor* 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 ::applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const | 644 ::applyTo8888(SkPMColor* 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 ::applyToRGBA(RGBA32* dst, const RGBA32* src, int len) const | 656 ::applyTo8888(SkPMColor* 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 | |
703 template <SkColorSpace::GammaNamed T> | 666 template <SkColorSpace::GammaNamed T> |
704 void SkColorSpaceXform_Base<T> | 667 void SkColorSpaceXform_Base<T> |
705 ::applyToF16(RGBAF16* dst, const RGBA32* src, int len) const | 668 ::applyToF16(RGBAF16* dst, const RGBA32* src, int len) const |
706 { | 669 { |
707 if (fColorLUT) { | 670 if (fColorLUT) { |
708 size_t storageBytes = len * sizeof(RGBA32); | 671 size_t storageBytes = len * sizeof(RGBA32); |
709 #if defined(GOOGLE3) | 672 #if defined(GOOGLE3) |
710 // Stack frame size is limited in GOOGLE3. | 673 // Stack frame size is limited in GOOGLE3. |
711 SkAutoSMalloc<256 * sizeof(RGBA32)> storage(storageBytes); | 674 SkAutoSMalloc<256 * sizeof(RGBA32)> storage(storageBytes); |
712 #else | 675 #else |
713 SkAutoSMalloc<1024 * sizeof(RGBA32)> storage(storageBytes); | 676 SkAutoSMalloc<1024 * sizeof(RGBA32)> storage(storageBytes); |
714 #endif | 677 #endif |
715 | 678 |
716 handle_color_lut((RGBA32*) storage.get(), src, len, fColorLUT.get()); | 679 handle_color_lut((RGBA32*) storage.get(), src, len, fColorLUT.get()); |
717 src = (const RGBA32*) storage.get(); | 680 src = (const RGBA32*) storage.get(); |
718 } | 681 } |
719 | 682 |
720 SkOpts::color_xform_RGB1_to_linear(dst, src, len, fSrcGammaTables, fSrcToDst
); | 683 SkOpts::color_xform_RGB1_to_linear(dst, src, len, fSrcGammaTables, fSrcToDst
); |
721 } | 684 } |
OLD | NEW |