diff options
author | 2009-07-08 20:09:23 +0000 | |
---|---|---|
committer | 2009-07-08 20:09:23 +0000 | |
commit | 1134426f6b1c4130e8dbe4c38a4aa976fbb18b4b (patch) | |
tree | df7c4a1592d7c9627571211e4c7be5265467b9c7 /samplecode/SampleDecode.cpp | |
parent | 40443b2371ecc61e04ad496f69919dc1e30036f5 (diff) |
respect preferred config when png is index-based
git-svn-id: http://skia.googlecode.com/svn/trunk@261 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/SampleDecode.cpp')
-rw-r--r-- | samplecode/SampleDecode.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/samplecode/SampleDecode.cpp b/samplecode/SampleDecode.cpp new file mode 100644 index 0000000000..9a8026700c --- /dev/null +++ b/samplecode/SampleDecode.cpp @@ -0,0 +1,67 @@ +#include "SampleCode.h" +#include "SkView.h" +#include "SkCanvas.h" +#include "SkImageDecoder.h" +#include "SkStream.h" + +static const struct { + SkBitmap::Config fPrefConfig; + bool fDither; +} gRec[] = { + { SkBitmap::kIndex8_Config, false }, + { SkBitmap::kARGB_8888_Config, false }, + { SkBitmap::kARGB_4444_Config, false }, + { SkBitmap::kARGB_4444_Config, true }, + { SkBitmap::kRGB_565_Config, false }, + { SkBitmap::kRGB_565_Config, true }, +}; + +class DecodeView : public SkView { +public: + SkBitmap fBitmap[SK_ARRAY_COUNT(gRec)]; + + DecodeView() { + SkFILEStream stream("/skimages/index.png"); + SkImageDecoder* codec = SkImageDecoder::Factory(&stream); + for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) { + stream.rewind(); + codec->setDitherImage(gRec[i].fDither); + codec->decode(&stream, &fBitmap[i], gRec[i].fPrefConfig, + SkImageDecoder::kDecodePixels_Mode); + } + } + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SampleCode::TitleR(evt, "ImageDecoder"); + return true; + } + return this->INHERITED::onQuery(evt); + } + + void drawBG(SkCanvas* canvas) { + canvas->drawColor(0xFFDDDDDD); +// canvas->drawColor(SK_ColorWHITE); + } + + virtual void onDraw(SkCanvas* canvas) { + this->drawBG(canvas); + + canvas->translate(SkIntToScalar(10), SkIntToScalar(20)); + + for (size_t i = 0; i < SK_ARRAY_COUNT(fBitmap); i++) { + canvas->drawBitmap(fBitmap[i], 0, 0); + canvas->translate(SkIntToScalar(fBitmap[i].width()), 0); + } + } +private: + typedef SkView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new DecodeView; } +static SkViewRegister reg(MyFactory); + |