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

Side by Side Diff: dm/DMSrcSink.cpp

Issue 2206633004: Move off SK_SUPPORT_LEGACY_DATA_FACTORIES. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Gotta catch 'em all. Created 4 years, 4 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 * 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 "DMSrcSink.h" 8 #include "DMSrcSink.h"
9 #include "Resources.h" 9 #include "Resources.h"
10 #include "SkAndroidCodec.h" 10 #include "SkAndroidCodec.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 , fSampleSize(sampleSize) 90 , fSampleSize(sampleSize)
91 {} 91 {}
92 92
93 bool BRDSrc::veto(SinkFlags flags) const { 93 bool BRDSrc::veto(SinkFlags flags) const {
94 // No need to test to non-raster or indirect backends. 94 // No need to test to non-raster or indirect backends.
95 return flags.type != SinkFlags::kRaster 95 return flags.type != SinkFlags::kRaster
96 || flags.approach != SinkFlags::kDirect; 96 || flags.approach != SinkFlags::kDirect;
97 } 97 }
98 98
99 static SkBitmapRegionDecoder* create_brd(Path path) { 99 static SkBitmapRegionDecoder* create_brd(Path path) {
100 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(path.c_str())); 100 sk_sp<SkData> encoded(SkData::MakeFromFileName(path.c_str()));
101 if (!encoded) { 101 if (!encoded) {
102 return NULL; 102 return NULL;
103 } 103 }
104 return SkBitmapRegionDecoder::Create(encoded, SkBitmapRegionDecoder::kAndroi dCodec_Strategy); 104 return SkBitmapRegionDecoder::Create(encoded.get(),
105 SkBitmapRegionDecoder::kAndroidCodec_St rategy);
105 } 106 }
106 107
107 Error BRDSrc::draw(SkCanvas* canvas) const { 108 Error BRDSrc::draw(SkCanvas* canvas) const {
108 SkColorType colorType = canvas->imageInfo().colorType(); 109 SkColorType colorType = canvas->imageInfo().colorType();
109 if (kRGB_565_SkColorType == colorType && 110 if (kRGB_565_SkColorType == colorType &&
110 CodecSrc::kGetFromCanvas_DstColorType != fDstColorType) { 111 CodecSrc::kGetFromCanvas_DstColorType != fDstColorType) {
111 return Error::Nonfatal("Testing non-565 to 565 is uninteresting."); 112 return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
112 } 113 }
113 switch (fDstColorType) { 114 switch (fDstColorType) {
114 case CodecSrc::kGetFromCanvas_DstColorType: 115 case CodecSrc::kGetFromCanvas_DstColorType:
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 SkScalar left = 0, SkScalar top = 0) { 369 SkScalar left = 0, SkScalar top = 0) {
369 SkAutoTUnref<SkColorTable> colorTable(new SkColorTable(colorPtr, colorCount) ); 370 SkAutoTUnref<SkColorTable> colorTable(new SkColorTable(colorPtr, colorCount) );
370 SkBitmap bitmap; 371 SkBitmap bitmap;
371 bitmap.installPixels(info, pixels, rowBytes, colorTable.get(), nullptr, null ptr); 372 bitmap.installPixels(info, pixels, rowBytes, colorTable.get(), nullptr, null ptr);
372 premultiply_if_necessary(bitmap); 373 premultiply_if_necessary(bitmap);
373 swap_rb_if_necessary(bitmap, dstColorType); 374 swap_rb_if_necessary(bitmap, dstColorType);
374 canvas->drawBitmap(bitmap, left, top); 375 canvas->drawBitmap(bitmap, left, top);
375 } 376 }
376 377
377 Error CodecSrc::draw(SkCanvas* canvas) const { 378 Error CodecSrc::draw(SkCanvas* canvas) const {
378 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 379 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
379 if (!encoded) { 380 if (!encoded) {
380 return SkStringPrintf("Couldn't read %s.", fPath.c_str()); 381 return SkStringPrintf("Couldn't read %s.", fPath.c_str());
381 } 382 }
382 383
383 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded)); 384 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get()));
384 if (nullptr == codec.get()) { 385 if (nullptr == codec.get()) {
385 return SkStringPrintf("Couldn't create codec for %s.", fPath.c_str()); 386 return SkStringPrintf("Couldn't create codec for %s.", fPath.c_str());
386 } 387 }
387 388
388 SkImageInfo decodeInfo = codec->getInfo(); 389 SkImageInfo decodeInfo = codec->getInfo();
389 if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColor Type, 390 if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColor Type,
390 fDstAlphaType)) { 391 fDstAlphaType)) {
391 return Error::Nonfatal("Testing non-565 to 565 is uninteresting."); 392 return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
392 } 393 }
393 394
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 return ""; 621 return "";
621 } 622 }
622 default: 623 default:
623 SkASSERT(false); 624 SkASSERT(false);
624 return "Invalid fMode"; 625 return "Invalid fMode";
625 } 626 }
626 return ""; 627 return "";
627 } 628 }
628 629
629 SkISize CodecSrc::size() const { 630 SkISize CodecSrc::size() const {
630 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 631 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
631 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded)); 632 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get()));
632 if (nullptr == codec) { 633 if (nullptr == codec) {
633 return SkISize::Make(0, 0); 634 return SkISize::Make(0, 0);
634 } 635 }
635 return codec->getScaledDimensions(fScale); 636 return codec->getScaledDimensions(fScale);
636 } 637 }
637 638
638 Name CodecSrc::name() const { 639 Name CodecSrc::name() const {
639 if (1.0f == fScale) { 640 if (1.0f == fScale) {
640 return SkOSPath::Basename(fPath.c_str()); 641 return SkOSPath::Basename(fPath.c_str());
641 } 642 }
(...skipping 11 matching lines...) Expand all
653 , fRunSerially(serial_from_path_name(path)) 654 , fRunSerially(serial_from_path_name(path))
654 {} 655 {}
655 656
656 bool AndroidCodecSrc::veto(SinkFlags flags) const { 657 bool AndroidCodecSrc::veto(SinkFlags flags) const {
657 // No need to test decoding to non-raster or indirect backend. 658 // No need to test decoding to non-raster or indirect backend.
658 return flags.type != SinkFlags::kRaster 659 return flags.type != SinkFlags::kRaster
659 || flags.approach != SinkFlags::kDirect; 660 || flags.approach != SinkFlags::kDirect;
660 } 661 }
661 662
662 Error AndroidCodecSrc::draw(SkCanvas* canvas) const { 663 Error AndroidCodecSrc::draw(SkCanvas* canvas) const {
663 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 664 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
664 if (!encoded) { 665 if (!encoded) {
665 return SkStringPrintf("Couldn't read %s.", fPath.c_str()); 666 return SkStringPrintf("Couldn't read %s.", fPath.c_str());
666 } 667 }
667 SkAutoTDelete<SkAndroidCodec> codec(SkAndroidCodec::NewFromData(encoded)); 668 SkAutoTDelete<SkAndroidCodec> codec(SkAndroidCodec::NewFromData(encoded.get( )));
668 if (nullptr == codec.get()) { 669 if (nullptr == codec.get()) {
669 return SkStringPrintf("Couldn't create android codec for %s.", fPath.c_s tr()); 670 return SkStringPrintf("Couldn't create android codec for %s.", fPath.c_s tr());
670 } 671 }
671 672
672 SkImageInfo decodeInfo = codec->getInfo(); 673 SkImageInfo decodeInfo = codec->getInfo();
673 if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColor Type, 674 if (!get_decode_info(&decodeInfo, canvas->imageInfo().colorType(), fDstColor Type,
674 fDstAlphaType)) { 675 fDstAlphaType)) {
675 return Error::Nonfatal("Testing non-565 to 565 is uninteresting."); 676 return Error::Nonfatal("Testing non-565 to 565 is uninteresting.");
676 } 677 }
677 678
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 case SkCodec::kIncompleteInput: 710 case SkCodec::kIncompleteInput:
710 break; 711 break;
711 default: 712 default:
712 return SkStringPrintf("Couldn't getPixels %s.", fPath.c_str()); 713 return SkStringPrintf("Couldn't getPixels %s.", fPath.c_str());
713 } 714 }
714 draw_to_canvas(canvas, bitmapInfo, pixels.get(), rowBytes, colorPtr, colorCo unt, fDstColorType); 715 draw_to_canvas(canvas, bitmapInfo, pixels.get(), rowBytes, colorPtr, colorCo unt, fDstColorType);
715 return ""; 716 return "";
716 } 717 }
717 718
718 SkISize AndroidCodecSrc::size() const { 719 SkISize AndroidCodecSrc::size() const {
719 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 720 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
720 SkAutoTDelete<SkAndroidCodec> codec(SkAndroidCodec::NewFromData(encoded)); 721 SkAutoTDelete<SkAndroidCodec> codec(SkAndroidCodec::NewFromData(encoded.get( )));
721 if (nullptr == codec) { 722 if (nullptr == codec) {
722 return SkISize::Make(0, 0); 723 return SkISize::Make(0, 0);
723 } 724 }
724 return codec->getSampledDimensions(fSampleSize); 725 return codec->getSampledDimensions(fSampleSize);
725 } 726 }
726 727
727 Name AndroidCodecSrc::name() const { 728 Name AndroidCodecSrc::name() const {
728 // We will replicate the names used by CodecSrc so that images can 729 // We will replicate the names used by CodecSrc so that images can
729 // be compared in Gold. 730 // be compared in Gold.
730 if (1 == fSampleSize) { 731 if (1 == fSampleSize) {
(...skipping 18 matching lines...) Expand all
749 } 750 }
750 751
751 return flags.type != SinkFlags::kRaster || flags.approach != SinkFlags::kDir ect; 752 return flags.type != SinkFlags::kRaster || flags.approach != SinkFlags::kDir ect;
752 } 753 }
753 754
754 Error ImageGenSrc::draw(SkCanvas* canvas) const { 755 Error ImageGenSrc::draw(SkCanvas* canvas) const {
755 if (kRGB_565_SkColorType == canvas->imageInfo().colorType()) { 756 if (kRGB_565_SkColorType == canvas->imageInfo().colorType()) {
756 return Error::Nonfatal("Uninteresting to test image generator to 565."); 757 return Error::Nonfatal("Uninteresting to test image generator to 565.");
757 } 758 }
758 759
759 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 760 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
760 if (!encoded) { 761 if (!encoded) {
761 return SkStringPrintf("Couldn't read %s.", fPath.c_str()); 762 return SkStringPrintf("Couldn't read %s.", fPath.c_str());
762 } 763 }
763 764
764 #if defined(SK_BUILD_FOR_WIN) 765 #if defined(SK_BUILD_FOR_WIN)
765 // Initialize COM in order to test with WIC. 766 // Initialize COM in order to test with WIC.
766 SkAutoCoInitialize com; 767 SkAutoCoInitialize com;
767 if (!com.succeeded()) { 768 if (!com.succeeded()) {
768 return "Could not initialize COM."; 769 return "Could not initialize COM.";
769 } 770 }
770 #endif 771 #endif
771 772
772 SkAutoTDelete<SkImageGenerator> gen(nullptr); 773 SkAutoTDelete<SkImageGenerator> gen(nullptr);
773 switch (fMode) { 774 switch (fMode) {
774 case kCodec_Mode: 775 case kCodec_Mode:
775 gen.reset(SkCodecImageGenerator::NewFromEncodedCodec(encoded)); 776 gen.reset(SkCodecImageGenerator::NewFromEncodedCodec(encoded.get())) ;
776 if (!gen) { 777 if (!gen) {
777 return "Could not create codec image generator."; 778 return "Could not create codec image generator.";
778 } 779 }
779 break; 780 break;
780 case kPlatform_Mode: { 781 case kPlatform_Mode: {
781 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) 782 #if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
782 gen.reset(SkImageGeneratorCG::NewFromEncodedCG(encoded)); 783 gen.reset(SkImageGeneratorCG::NewFromEncodedCG(encoded.get()));
783 #elif defined(SK_BUILD_FOR_WIN) 784 #elif defined(SK_BUILD_FOR_WIN)
784 gen.reset(SkImageGeneratorWIC::NewFromEncodedWIC(encoded)); 785 gen.reset(SkImageGeneratorWIC::NewFromEncodedWIC(encoded.get()));
785 #endif 786 #endif
786 787
787 if (!gen) { 788 if (!gen) {
788 return "Could not create platform image generator."; 789 return "Could not create platform image generator.";
789 } 790 }
790 break; 791 break;
791 } 792 }
792 default: 793 default:
793 SkASSERT(false); 794 SkASSERT(false);
794 return "Invalid image generator mode"; 795 return "Invalid image generator mode";
(...skipping 21 matching lines...) Expand all
816 if (!gen->getPixels(decodeInfo, pixels.get(), rowBytes, colorPtr, &colorCoun t)) { 817 if (!gen->getPixels(decodeInfo, pixels.get(), rowBytes, colorPtr, &colorCoun t)) {
817 return SkStringPrintf("Image generator could not getPixels() for %s\n", fPath.c_str()); 818 return SkStringPrintf("Image generator could not getPixels() for %s\n", fPath.c_str());
818 } 819 }
819 820
820 draw_to_canvas(canvas, decodeInfo, pixels.get(), rowBytes, colorPtr, colorCo unt, 821 draw_to_canvas(canvas, decodeInfo, pixels.get(), rowBytes, colorPtr, colorCo unt,
821 CodecSrc::kGetFromCanvas_DstColorType); 822 CodecSrc::kGetFromCanvas_DstColorType);
822 return ""; 823 return "";
823 } 824 }
824 825
825 SkISize ImageGenSrc::size() const { 826 SkISize ImageGenSrc::size() const {
826 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 827 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
827 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded)); 828 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get()));
828 if (nullptr == codec) { 829 if (nullptr == codec) {
829 return SkISize::Make(0, 0); 830 return SkISize::Make(0, 0);
830 } 831 }
831 return codec->getInfo().dimensions(); 832 return codec->getInfo().dimensions();
832 } 833 }
833 834
834 Name ImageGenSrc::name() const { 835 Name ImageGenSrc::name() const {
835 return SkOSPath::Basename(fPath.c_str()); 836 return SkOSPath::Basename(fPath.c_str());
836 } 837 }
837 838
(...skipping 12 matching lines...) Expand all
850 851
851 Error ColorCodecSrc::draw(SkCanvas* canvas) const { 852 Error ColorCodecSrc::draw(SkCanvas* canvas) const {
852 if (kRGB_565_SkColorType == canvas->imageInfo().colorType()) { 853 if (kRGB_565_SkColorType == canvas->imageInfo().colorType()) {
853 return Error::Nonfatal("No need to test color correction to 565 backend. "); 854 return Error::Nonfatal("No need to test color correction to 565 backend. ");
854 } 855 }
855 856
856 if (nullptr == canvas->imageInfo().colorSpace() && kRGBA_F16_SkColorType == fColorType) { 857 if (nullptr == canvas->imageInfo().colorSpace() && kRGBA_F16_SkColorType == fColorType) {
857 return Error::Nonfatal("F16 does not draw in legacy mode."); 858 return Error::Nonfatal("F16 does not draw in legacy mode.");
858 } 859 }
859 860
860 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 861 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
861 if (!encoded) { 862 if (!encoded) {
862 return SkStringPrintf("Couldn't read %s.", fPath.c_str()); 863 return SkStringPrintf("Couldn't read %s.", fPath.c_str());
863 } 864 }
864 865
865 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded)); 866 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get()));
866 if (nullptr == codec.get()) { 867 if (nullptr == codec.get()) {
867 return SkStringPrintf("Couldn't create codec for %s.", fPath.c_str()); 868 return SkStringPrintf("Couldn't create codec for %s.", fPath.c_str());
868 } 869 }
869 870
870 // Load the dst ICC profile. This particular dst is fairly similar to Adobe RGB. 871 // Load the dst ICC profile. This particular dst is fairly similar to Adobe RGB.
871 sk_sp<SkData> dstData = SkData::MakeFromFileName( 872 sk_sp<SkData> dstData = SkData::MakeFromFileName(
872 GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str()); 873 GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str());
873 if (!dstData) { 874 if (!dstData) {
874 return "Cannot read monitor profile. Is the resource path set correctly ?"; 875 return "Cannot read monitor profile. Is the resource path set correctly ?";
875 } 876 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 } 950 }
950 #endif 951 #endif
951 default: 952 default:
952 SkASSERT(false); 953 SkASSERT(false);
953 return "Invalid fMode"; 954 return "Invalid fMode";
954 } 955 }
955 return ""; 956 return "";
956 } 957 }
957 958
958 SkISize ColorCodecSrc::size() const { 959 SkISize ColorCodecSrc::size() const {
959 SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); 960 sk_sp<SkData> encoded(SkData::MakeFromFileName(fPath.c_str()));
960 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded)); 961 SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get()));
961 if (nullptr == codec) { 962 if (nullptr == codec) {
962 return SkISize::Make(0, 0); 963 return SkISize::Make(0, 0);
963 } 964 }
964 return SkISize::Make(codec->getInfo().width(), codec->getInfo().height()); 965 return SkISize::Make(codec->getInfo().width(), codec->getInfo().height());
965 } 966 }
966 967
967 Name ColorCodecSrc::name() const { 968 Name ColorCodecSrc::name() const {
968 return SkOSPath::Basename(fPath.c_str()); 969 return SkOSPath::Basename(fPath.c_str());
969 } 970 }
970 971
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after
1556 skr.visit(i, drawsAsSingletonPictures); 1557 skr.visit(i, drawsAsSingletonPictures);
1557 } 1558 }
1558 sk_sp<SkPicture> macroPic(macroRec.finishRecordingAsPicture()); 1559 sk_sp<SkPicture> macroPic(macroRec.finishRecordingAsPicture());
1559 1560
1560 canvas->drawPicture(macroPic); 1561 canvas->drawPicture(macroPic);
1561 return check_against_reference(bitmap, src, fSink); 1562 return check_against_reference(bitmap, src, fSink);
1562 }); 1563 });
1563 } 1564 }
1564 1565
1565 } // namespace DM 1566 } // namespace DM
OLDNEW
« no previous file with comments | « dm/DMJsonWriter.cpp ('k') | experimental/GLFWTest/glfw_main.cpp » ('j') | include/core/SkData.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698