blob: f59ff94416a01948586e37ac8481d1adc90fe1db [file] [log] [blame]
reed@android.com8a1c16f2008-12-17 15:59:43 +00001#include "SampleCode.h"
2#include "SkView.h"
3#include "SkCanvas.h"
4#include "SkGradientShader.h"
5#include "SkGraphics.h"
6#include "SkImageDecoder.h"
7#include "SkPath.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +00008#include "SkRegion.h"
9#include "SkShader.h"
10#include "SkUtils.h"
11#include "SkXfermode.h"
reed@android.com8a1c16f2008-12-17 15:59:43 +000012#include "SkColorPriv.h"
13#include "SkColorFilter.h"
14#include "SkTime.h"
15#include "SkTypeface.h"
16
reed@android.com8a1c16f2008-12-17 15:59:43 +000017#include "SkOSFile.h"
18#include "SkStream.h"
19
20#define SPECIFIC_IMAGE "/skimages/main.gif"
21
22class BitmapRectView : public SkView {
23public:
24 SkBitmap fBitmap;
25 int fCurrX, fCurrY;
26
27 BitmapRectView() {
28 SkImageDecoder::DecodeFile(SPECIFIC_IMAGE, &fBitmap);
29 fCurrX = fCurrY = 0;
30 }
31
32protected:
33 // overrides from SkEventSink
34 virtual bool onQuery(SkEvent* evt)
35 {
36 if (SampleCode::TitleQ(*evt))
37 {
38 SkString str("BitmapRect: ");
39 str.append(SPECIFIC_IMAGE);
40 SampleCode::TitleR(evt, str.c_str());
41 return true;
42 }
43 return this->INHERITED::onQuery(evt);
44 }
45
46 void drawBG(SkCanvas* canvas)
47 {
48 canvas->drawColor(SK_ColorGRAY);
49 }
50
51 virtual void onDraw(SkCanvas* canvas)
52 {
53 this->drawBG(canvas);
54
55 canvas->drawBitmap(fBitmap, 0, 0, NULL);
56
57 SkIRect subset;
58 const int SRC_WIDTH = 16;
59 const int SRC_HEIGHT = 16;
60
61 subset.set(0, 0, SRC_WIDTH, SRC_HEIGHT);
62 subset.offset(fCurrX, fCurrY);
63
64 SkDebugf("---- src x=%d y=%d\n", subset.fLeft, subset.fTop);
65
66 SkRect dst0, dst1;
67 SkScalar y = SkIntToScalar(fBitmap.height() + 16);
68
69 dst0.set(SkIntToScalar(50), y,
70 SkIntToScalar(50+SRC_WIDTH),
71 y + SkIntToScalar(SRC_HEIGHT));
72 dst1 = dst0;
73 dst1.offset(SkIntToScalar(200), 0);
74 dst1.fRight = dst1.fLeft + 8 * dst0.width();
75 dst1.fBottom = dst1.fTop + 8 * dst0.height();
76
77 canvas->drawBitmapRect(fBitmap, &subset, dst0, NULL);
78 canvas->drawBitmapRect(fBitmap, &subset, dst1, NULL);
79
80 SkPaint paint;
81 paint.setColor(0x88FF0000);
82 canvas->drawRect(dst0, paint);
83 paint.setColor(0x880000FF);
84 canvas->drawRect(dst1, paint);
85 }
86
87 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y)
88 {
89 return new Click(this);
90 }
91
92 virtual bool onClick(Click* click)
93 {
94 fCurrX = click->fICurr.fX;
95 fCurrY = click->fICurr.fY;
96 this->inval(NULL);
97 return true;
98 }
99
100private:
101 typedef SkView INHERITED;
102};
103
104//////////////////////////////////////////////////////////////////////////////
105
106static SkView* MyFactory() { return new BitmapRectView; }
107static SkViewRegister reg(MyFactory);
108