blob: b192c5d599aabab698b2b3fb2ef8999d13de1ead [file] [log] [blame]
reed@android.com11344262009-07-08 20:09:23 +00001#include "SampleCode.h"
2#include "SkView.h"
3#include "SkCanvas.h"
4#include "SkImageDecoder.h"
5#include "SkStream.h"
6
7static const struct {
8 SkBitmap::Config fPrefConfig;
9 bool fDither;
10} gRec[] = {
11 { SkBitmap::kIndex8_Config, false },
12 { SkBitmap::kARGB_8888_Config, false },
13 { SkBitmap::kARGB_4444_Config, false },
14 { SkBitmap::kARGB_4444_Config, true },
15 { SkBitmap::kRGB_565_Config, false },
16 { SkBitmap::kRGB_565_Config, true },
17};
18
19class DecodeView : public SkView {
20public:
21 SkBitmap fBitmap[SK_ARRAY_COUNT(gRec)];
22
23 DecodeView() {
24 SkFILEStream stream("/skimages/index.png");
25 SkImageDecoder* codec = SkImageDecoder::Factory(&stream);
bsalomon@google.com5d561952011-04-01 18:43:22 +000026 if (codec) {
27 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
28 stream.rewind();
29 codec->setDitherImage(gRec[i].fDither);
30 codec->decode(&stream, &fBitmap[i], gRec[i].fPrefConfig,
31 SkImageDecoder::kDecodePixels_Mode);
32 }
reed@android.com11344262009-07-08 20:09:23 +000033 }
34 }
35
36protected:
37 // overrides from SkEventSink
38 virtual bool onQuery(SkEvent* evt) {
39 if (SampleCode::TitleQ(*evt)) {
40 SampleCode::TitleR(evt, "ImageDecoder");
41 return true;
42 }
43 return this->INHERITED::onQuery(evt);
44 }
45
46 void drawBG(SkCanvas* canvas) {
47 canvas->drawColor(0xFFDDDDDD);
48// canvas->drawColor(SK_ColorWHITE);
49 }
50
51 virtual void onDraw(SkCanvas* canvas) {
52 this->drawBG(canvas);
53
54 canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
55
56 for (size_t i = 0; i < SK_ARRAY_COUNT(fBitmap); i++) {
57 canvas->drawBitmap(fBitmap[i], 0, 0);
58 canvas->translate(SkIntToScalar(fBitmap[i].width()), 0);
59 }
60 }
61private:
62 typedef SkView INHERITED;
63};
64
65//////////////////////////////////////////////////////////////////////////////
66
67static SkView* MyFactory() { return new DecodeView; }
68static SkViewRegister reg(MyFactory);
69