diff options
author | bungeman <bungeman@google.com> | 2016-03-17 10:38:36 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-17 10:38:36 -0700 |
commit | 003571887de747942478e33d4e2ff40bf3a65a72 (patch) | |
tree | 4fb749c278196cca261c58120099365143675cd0 | |
parent | c85ce7ce805135d34b11067c502a5f88506cce44 (diff) |
Revert of Remove uses of SkImageDecoder from gms (patchset #2 id:20001 of https://codereview.chromium.org/1791583002/ )
Reason for revert:
Suspected of causing assertion failures in unrelated tests on Windows.
Original issue's description:
> Remove uses of SkImageDecoder from gms
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1791583002
>
> Committed: https://skia.googlesource.com/skia/+/d427266a58af7e6ea6c12c9cd56ade3e179a0c04
TBR=scroggo@google.com,reed@google.com,msarett@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/1806383002
-rw-r--r-- | gm/astcbitmap.cpp | 2 | ||||
-rw-r--r-- | gm/avoidxfermode.cpp | 13 | ||||
-rw-r--r-- | gm/cmykjpeg.cpp | 70 | ||||
-rw-r--r-- | gm/copyTo4444.cpp | 4 | ||||
-rw-r--r-- | gm/downsamplebitmap.cpp | 21 | ||||
-rw-r--r-- | gm/etc1bitmap.cpp | 2 | ||||
-rw-r--r-- | gm/factory.cpp | 1 | ||||
-rw-r--r-- | gm/filterbitmap.cpp | 32 | ||||
-rw-r--r-- | gm/filterindiabox.cpp | 21 | ||||
-rw-r--r-- | gm/pixelxorxfermode.cpp | 13 | ||||
-rw-r--r-- | gm/showmiplevels.cpp | 1 | ||||
-rw-r--r-- | gm/tiledscaledbitmap.cpp | 1 |
12 files changed, 155 insertions, 26 deletions
diff --git a/gm/astcbitmap.cpp b/gm/astcbitmap.cpp index a7d72bfbf4..211e8daff0 100644 --- a/gm/astcbitmap.cpp +++ b/gm/astcbitmap.cpp @@ -10,8 +10,8 @@ #include "Resources.h" #include "SkCanvas.h" #include "SkData.h" -#include "SkImage.h" #include "SkImageGenerator.h" +#include "SkImageDecoder.h" #include "SkOSFile.h" #include "SkTextureCompressor.h" diff --git a/gm/avoidxfermode.cpp b/gm/avoidxfermode.cpp index d224b4e2d0..a015b6bbe7 100644 --- a/gm/avoidxfermode.cpp +++ b/gm/avoidxfermode.cpp @@ -8,6 +8,7 @@ #include "gm.h" #include "Resources.h" +#include "SkImageDecoder.h" #include "SkAvoidXfermode.h" #include "SkStream.h" @@ -23,7 +24,17 @@ protected: SkISize onISize() override { return SkISize::Make(128, 128); } void onOnceBeforeDraw() override { - if (!GetResourceAsBitmap("color_wheel.png", &fBM)) { + SkImageDecoder* codec = nullptr; + SkString resourcePath = GetResourcePath("color_wheel.png"); + SkFILEStream stream(resourcePath.c_str()); + if (stream.isValid()) { + codec = SkImageDecoder::Factory(&stream); + } + if (codec) { + stream.rewind(); + codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); + delete codec; + } else { fBM.allocN32Pixels(1, 1); fBM.eraseARGB(255, 255, 0 , 0); // red == bad } diff --git a/gm/cmykjpeg.cpp b/gm/cmykjpeg.cpp new file mode 100644 index 0000000000..d4fb2faa1c --- /dev/null +++ b/gm/cmykjpeg.cpp @@ -0,0 +1,70 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "gm.h" + +#include "Resources.h" +#include "SkCanvas.h" +#include "SkImageDecoder.h" +#include "SkStream.h" + +namespace skiagm { + +/** Draw a CMYK encoded jpeg - libjpeg doesn't support CMYK->RGB + conversion so this tests Skia's internal processing +*/ +class CMYKJpegGM : public GM { +public: + CMYKJpegGM() {} + +protected: + void onOnceBeforeDraw() override { + // parameters to the "decode" call + bool dither = false; + + SkString jpgFilename = GetResourcePath("CMYK.jpg"); + SkFILEStream stream(jpgFilename.c_str()); + if (!stream.isValid()) { + SkDebugf("Could not find CMYK.jpg, please set --resourcePath correctly.\n"); + return; + } + + SkImageDecoder* codec = SkImageDecoder::Factory(&stream); + if (codec) { + stream.rewind(); + codec->setDitherImage(dither); + codec->decode(&stream, &fBitmap, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); + delete codec; + } + } + + virtual SkString onShortName() override { + return SkString("cmykjpeg"); + } + + virtual SkISize onISize() override { + return SkISize::Make(640, 480); + } + + virtual void onDraw(SkCanvas* canvas) override { + + canvas->translate(20*SK_Scalar1, 20*SK_Scalar1); + canvas->drawBitmap(fBitmap, 0, 0); + } + +private: + SkBitmap fBitmap; + + typedef GM INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static GM* MyFactory(void*) { return new CMYKJpegGM; } +static GMRegistry reg(MyFactory); + +} diff --git a/gm/copyTo4444.cpp b/gm/copyTo4444.cpp index f790d7fcc1..635cc7b834 100644 --- a/gm/copyTo4444.cpp +++ b/gm/copyTo4444.cpp @@ -32,7 +32,9 @@ protected: virtual void onDraw(SkCanvas* canvas) { SkBitmap bm, bm4444; - if (!GetResourceAsBitmap("mandrill_512.png", &bm)) { + SkString pngFilename = GetResourcePath("mandrill_512.png"); + if (!SkImageDecoder::DecodeFile(pngFilename.c_str(), &bm, kN32_SkColorType, + SkImageDecoder::kDecodePixels_Mode)) { SkDebugf("Could not decode the file. Did you forget to set the " "resourcePath?\n"); return; diff --git a/gm/downsamplebitmap.cpp b/gm/downsamplebitmap.cpp index a99bae0cd9..771eb6ab53 100644 --- a/gm/downsamplebitmap.cpp +++ b/gm/downsamplebitmap.cpp @@ -10,6 +10,7 @@ #include "Resources.h" #include "SkGradientShader.h" #include "SkTypeface.h" +#include "SkImageDecoder.h" #include "SkStream.h" #include "SkPaint.h" @@ -170,11 +171,21 @@ class DownsampleBitmapImageGM: public DownsampleBitmapGM { int fSize; void make_bitmap() override { - if (!GetResourceAsBitmap(fFilename.c_str(), &fBM)) { - fBM.allocN32Pixels(1, 1); - fBM.eraseARGB(255, 255, 0 , 0); // red == bad - } - fSize = fBM.height(); + SkImageDecoder* codec = nullptr; + SkString resourcePath = GetResourcePath(fFilename.c_str()); + SkFILEStream stream(resourcePath.c_str()); + if (stream.isValid()) { + codec = SkImageDecoder::Factory(&stream); + } + if (codec) { + stream.rewind(); + codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); + delete codec; + } else { + fBM.allocN32Pixels(1, 1); + *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad + } + fSize = fBM.height(); } private: typedef DownsampleBitmapGM INHERITED; diff --git a/gm/etc1bitmap.cpp b/gm/etc1bitmap.cpp index 0e639fe062..e2f6c2dc41 100644 --- a/gm/etc1bitmap.cpp +++ b/gm/etc1bitmap.cpp @@ -10,8 +10,8 @@ #include "Resources.h" #include "SkCanvas.h" #include "SkData.h" -#include "SkImage.h" #include "SkImageGenerator.h" +#include "SkImageDecoder.h" #include "SkOSFile.h" #include "SkTemplates.h" diff --git a/gm/factory.cpp b/gm/factory.cpp index 831cff0b9f..4d36574daa 100644 --- a/gm/factory.cpp +++ b/gm/factory.cpp @@ -12,6 +12,7 @@ #include "SkData.h" #include "SkDiscardableMemoryPool.h" #include "SkDiscardablePixelRef.h" +#include "SkImageDecoder.h" #include "SkImageGeneratorPriv.h" #include "SkOSFile.h" #include "SkStream.h" diff --git a/gm/filterbitmap.cpp b/gm/filterbitmap.cpp index 51a8064d80..5c63910a78 100644 --- a/gm/filterbitmap.cpp +++ b/gm/filterbitmap.cpp @@ -9,6 +9,7 @@ #include "Resources.h" #include "SkGradientShader.h" +#include "SkImageDecoder.h" #include "SkStream.h" #include "SkTypeface.h" @@ -195,17 +196,26 @@ protected: } void makeBitmap() override { - if (!GetResourceAsBitmap(fFilename.c_str(), &fBM)) { - fBM.allocN32Pixels(1, 1); - fBM.eraseARGB(255, 255, 0 , 0); // red == bad - } - fSize = fBM.height(); - - if (fConvertToG8) { - SkBitmap tmp; - fBM.copyTo(&tmp, kGray_8_SkColorType); - fBM = tmp; - } + SkImageDecoder* codec = nullptr; + SkString resourcePath = GetResourcePath(fFilename.c_str()); + SkFILEStream stream(resourcePath.c_str()); + if (stream.isValid()) { + codec = SkImageDecoder::Factory(&stream); + } + if (codec) { + stream.rewind(); + codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); + delete codec; + } else { + fBM.allocN32Pixels(1, 1); + *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad + } + fSize = fBM.height(); + if (fConvertToG8) { + SkBitmap tmp; + fBM.copyTo(&tmp, kGray_8_SkColorType); + fBM = tmp; + } } private: const bool fConvertToG8; diff --git a/gm/filterindiabox.cpp b/gm/filterindiabox.cpp index 569a694968..c5d7166423 100644 --- a/gm/filterindiabox.cpp +++ b/gm/filterindiabox.cpp @@ -11,6 +11,7 @@ #include "SkBitmapProcState.h" #include "SkBitmapScaler.h" #include "SkGradientShader.h" +#include "SkImageDecoder.h" #include "SkImageEncoder.h" #include "SkStream.h" #include "SkTypeface.h" @@ -98,11 +99,21 @@ protected: } void makeBitmap() { - if (!GetResourceAsBitmap(fFilename.c_str(), &fBM)) { - fBM.allocN32Pixels(1, 1); - fBM.eraseARGB(255, 255, 0 , 0); // red == bad - } - fSize = fBM.height(); + SkImageDecoder* codec = nullptr; + SkString resourcePath = GetResourcePath(fFilename.c_str()); + SkFILEStream stream(resourcePath.c_str()); + if (stream.isValid()) { + codec = SkImageDecoder::Factory(&stream); + } + if (codec) { + stream.rewind(); + codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); + delete codec; + } else { + fBM.allocN32Pixels(1, 1); + *(fBM.getAddr32(0,0)) = 0xFF0000FF; // red == bad + } + fSize = fBM.height(); } private: typedef skiagm::GM INHERITED; diff --git a/gm/pixelxorxfermode.cpp b/gm/pixelxorxfermode.cpp index daccca8c41..35926a81c6 100644 --- a/gm/pixelxorxfermode.cpp +++ b/gm/pixelxorxfermode.cpp @@ -8,6 +8,7 @@ #include "gm.h" #include "Resources.h" +#include "SkImageDecoder.h" #include "SkPixelXorXfermode.h" #include "SkStream.h" @@ -23,7 +24,17 @@ protected: SkISize onISize() override { return SkISize::Make(512, 512); } void onOnceBeforeDraw() override { - if (!GetResourceAsBitmap("mandrill_512.png", &fBM)) { + SkImageDecoder* codec = nullptr; + SkString resourcePath = GetResourcePath("mandrill_512.png"); + SkFILEStream stream(resourcePath.c_str()); + if (stream.isValid()) { + codec = SkImageDecoder::Factory(&stream); + } + if (codec) { + stream.rewind(); + codec->decode(&stream, &fBM, kN32_SkColorType, SkImageDecoder::kDecodePixels_Mode); + delete codec; + } else { fBM.allocN32Pixels(1, 1); fBM.eraseARGB(255, 255, 0 , 0); // red == bad } diff --git a/gm/showmiplevels.cpp b/gm/showmiplevels.cpp index fd1254f9bc..d3462b7803 100644 --- a/gm/showmiplevels.cpp +++ b/gm/showmiplevels.cpp @@ -11,6 +11,7 @@ #include "SkBitmapScaler.h" #include "SkGradientShader.h" #include "SkTypeface.h" +#include "SkImageDecoder.h" #include "SkStream.h" #include "SkPaint.h" #include "SkMipMap.h" diff --git a/gm/tiledscaledbitmap.cpp b/gm/tiledscaledbitmap.cpp index 5511b8b3d9..d74d40bf49 100644 --- a/gm/tiledscaledbitmap.cpp +++ b/gm/tiledscaledbitmap.cpp @@ -9,6 +9,7 @@ #include "Resources.h" #include "SkBitmap.h" +#include "SkImageDecoder.h" #include "SkPaint.h" #include "SkShader.h" #include "SkStream.h" |