diff options
author | 2016-07-28 17:11:18 -0700 | |
---|---|---|
committer | 2016-07-28 17:11:18 -0700 | |
commit | 39979d8c6b97889f600a212cfc9b063360f3de2f (patch) | |
tree | 3a63566b6e7643335fda8c60451b922c73bac92e /tools/viewer/ImageSlide.cpp | |
parent | ecf3dbe8f2987a08b21be1aff61b7fbfbb69640a (diff) |
Revert of Add color space xform support to SkJpegCodec (includes F16!) (patchset #9 id:260001 of https://codereview.chromium.org/2174493002/ )
Reason for revert:
Breaking MSAN
Original issue's description:
> Add color space xform support to SkJpegCodec (includes F16!)
>
> Also changes SkColorXform to support:
> RGBA->RGBA
> RGBA->BGRA
>
> Instead of:
> RGBA->SkPMColor
>
> TBR=reed@google.com
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002
> CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot
>
> Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b
TBR=mtklein@google.com,reed@google.com,herb@google.com,brianosman@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:
Review-Url: https://codereview.chromium.org/2195523002
Diffstat (limited to 'tools/viewer/ImageSlide.cpp')
-rw-r--r-- | tools/viewer/ImageSlide.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/tools/viewer/ImageSlide.cpp b/tools/viewer/ImageSlide.cpp index 7dcee5d5ac..b0471547bc 100644 --- a/tools/viewer/ImageSlide.cpp +++ b/tools/viewer/ImageSlide.cpp @@ -37,18 +37,20 @@ void ImageSlide::draw(SkCanvas* canvas) { void ImageSlide::load(SkScalar, SkScalar) { sk_sp<SkData> encoded = SkData::MakeFromFileName(fPath.c_str()); + fImage = SkImage::MakeFromEncoded(encoded); + fImage->asLegacyBitmap(&fOriginalBitmap, SkImage::kRO_LegacyBitmapMode); + SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded.get())); - if (!codec) { - return; + sk_sp<SkColorSpace> srcSpace = sk_ref_sp(codec->getInfo().colorSpace()); + sk_sp<SkColorSpace> dstSpace = SkColorSpace::NewNamed(SkColorSpace::kAdobeRGB_Named); + std::unique_ptr<SkColorSpaceXform> xform = SkColorSpaceXform::New(srcSpace, dstSpace); + fOriginalBitmap.deepCopyTo(&fXformedBitmap); + uint32_t* row = (uint32_t*) fXformedBitmap.getPixels(); + for (int y = 0; y < fXformedBitmap.height(); y++) { + xform->applyTo8888(row, row, fXformedBitmap.width()); + row = SkTAddOffset<uint32_t>(row, fXformedBitmap.rowBytes()); } - - fOriginalBitmap.allocPixels(codec->getInfo()); - codec->getPixels(codec->getInfo(), fOriginalBitmap.getPixels(), fOriginalBitmap.rowBytes()); - - SkImageInfo xformedInfo = codec->getInfo().makeColorSpace( - SkColorSpace::NewNamed(SkColorSpace::kAdobeRGB_Named)); - fXformedBitmap.allocPixels(xformedInfo); - codec->getPixels(xformedInfo, fXformedBitmap.getPixels(), fXformedBitmap.rowBytes()); + fXformedBitmap.notifyPixelsChanged(); // This is needed for the deepCopy } void ImageSlide::unload() { |