aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/ImageSlide.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-02-08 10:47:28 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-08 17:34:05 +0000
commitf750fbcb699fff2bdd264969515fc4045a1248be (patch)
treea540a926801c5a2b1beccd674236c5e33795f5e1 /tools/viewer/ImageSlide.cpp
parentb782627376c0db63ba42684eb901ff006db7a2b0 (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.cpp27
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() {