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