diff options
author | Brian Osman <brianosman@google.com> | 2017-02-08 10:47:28 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-08 17:34:05 +0000 |
commit | f750fbcb699fff2bdd264969515fc4045a1248be (patch) | |
tree | a540a926801c5a2b1beccd674236c5e33795f5e1 /tools/viewer/ImageSlide.cpp | |
parent | b782627376c0db63ba42684eb901ff006db7a2b0 (diff) |
Simplify viewer's handling of backbuffer surface and color space
WindowContext still supports color spaces, but not other color
types. Any off-screen rendering is the app's responsibility.
This change also adds (working) F16 support to viewer. Note that
the previous 10-bit and FP16 support in WindowContext was broken.
There was no code to push the off-screen canvas to the window.
If you ever made it to the unreachable off-screen code path in
createSurface, it would have simply stopped drawing.
The decision to limit the window's gamut to sRGB is mostly driven
by my desire to add real-time editing of gamut. This design lets
us do that, without tearing down and rebuilding the window for
every change. An application could still supply a different gamut
via setDisplayParams and render directly to the back buffer with
proper color correction.
BUG=skia:
Change-Id: I94df35c7a42faee396009acc83683e40bb3c284d
Reviewed-on: https://skia-review.googlesource.com/8153
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Matt Sarett <msarett@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'tools/viewer/ImageSlide.cpp')
-rw-r--r-- | tools/viewer/ImageSlide.cpp | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/tools/viewer/ImageSlide.cpp b/tools/viewer/ImageSlide.cpp index 0b52a81ddc..dd7adba646 100644 --- a/tools/viewer/ImageSlide.cpp +++ b/tools/viewer/ImageSlide.cpp @@ -7,14 +7,9 @@ #include "ImageSlide.h" -#include "SkBitmap.h" -#include "SkCodec.h" -#include "SkColorSpaceXform.h" -#include "SkColorSpace_Base.h" #include "SkCanvas.h" #include "SkData.h" #include "SkImage.h" -#include "SkMetaData.h" ImageSlide::ImageSlide(const SkString& name, const SkString& path) : fPath(path) { fName = name; @@ -25,30 +20,12 @@ SkISize ImageSlide::getDimensions() const { } void ImageSlide::draw(SkCanvas* canvas) { - if (canvas->getMetaData().hasBool(kImageColorXformMetaData, true)) { - canvas->drawBitmap(fXformedBitmap, 0, 0); - } else { - // skbug.com/5428 - // drawImage() and drawBitmap() behave differently in sRGB mode. - // canvas->drawImage(fImage.get(), 0, 0); - canvas->drawBitmap(fOriginalBitmap, 0, 0); - } + canvas->drawImage(fImage, 0, 0); } void ImageSlide::load(SkScalar, SkScalar) { sk_sp<SkData> encoded = SkData::MakeFromFileName(fPath.c_str()); - std::unique_ptr<SkCodec> codec(SkCodec::NewFromData(encoded)); - if (!codec) { - return; - } - - fOriginalBitmap.allocPixels(codec->getInfo()); - codec->getPixels(codec->getInfo(), fOriginalBitmap.getPixels(), fOriginalBitmap.rowBytes()); - - SkImageInfo xformedInfo = codec->getInfo().makeColorSpace( - SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named)); - fXformedBitmap.allocPixels(xformedInfo); - codec->getPixels(xformedInfo, fXformedBitmap.getPixels(), fXformedBitmap.rowBytes()); + fImage = SkImage::MakeFromEncoded(encoded); } void ImageSlide::unload() { |