blob: 9a8026700cdbc2c7e402a2306b3dd0eb14d517f7 [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);
26 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
27 stream.rewind();
28 codec->setDitherImage(gRec[i].fDither);
29 codec->decode(&stream, &fBitmap[i], gRec[i].fPrefConfig,
30 SkImageDecoder::kDecodePixels_Mode);
31 }
32 }
33
34protected:
35 // overrides from SkEventSink
36 virtual bool onQuery(SkEvent* evt) {
37 if (SampleCode::TitleQ(*evt)) {
38 SampleCode::TitleR(evt, "ImageDecoder");
39 return true;
40 }
41 return this->INHERITED::onQuery(evt);
42 }
43
44 void drawBG(SkCanvas* canvas) {
45 canvas->drawColor(0xFFDDDDDD);
46// canvas->drawColor(SK_ColorWHITE);
47 }
48
49 virtual void onDraw(SkCanvas* canvas) {
50 this->drawBG(canvas);
51
52 canvas->translate(SkIntToScalar(10), SkIntToScalar(20));
53
54 for (size_t i = 0; i < SK_ARRAY_COUNT(fBitmap); i++) {
55 canvas->drawBitmap(fBitmap[i], 0, 0);
56 canvas->translate(SkIntToScalar(fBitmap[i].width()), 0);
57 }
58 }
59private:
60 typedef SkView INHERITED;
61};
62
63//////////////////////////////////////////////////////////////////////////////
64
65static SkView* MyFactory() { return new DecodeView; }
66static SkViewRegister reg(MyFactory);
67