blob: 755473fab49e2f76b323ebc43dbbb07c72fd4191 [file] [log] [blame]
reed@android.comf7d57262009-08-13 19:33:44 +00001#include "SampleCode.h"
2#include "SkView.h"
3#include "SkCanvas.h"
4#include "SkShader.h"
5#include "SkKey.h"
6
7static void make_bitmap(SkBitmap* bm) {
8 const int W = 100;
9 const int H = 100;
10 bm->setConfig(SkBitmap::kARGB_8888_Config, W, H);
11 bm->allocPixels();
12
13 SkPaint paint;
14 SkCanvas canvas(*bm);
15 canvas.drawColor(SK_ColorWHITE);
16
17 const SkColor colors[] = {
18 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE
19 };
20
21 for (int ix = 0; ix < W; ix += 1) {
22 SkScalar x = SkIntToScalar(ix) + SK_ScalarHalf;
23 paint.setColor(colors[ix & 3]);
24 canvas.drawLine(x, 0, x, SkIntToScalar(H - 1), paint);
25 }
26 paint.setColor(SK_ColorGRAY);
27 canvas.drawLine(0, 0, SkIntToScalar(W), 0, paint);
28}
29
30static void make_paint(SkPaint* paint, SkShader::TileMode tm) {
31 SkBitmap bm;
32 make_bitmap(&bm);
33
34 SkShader* shader = SkShader::CreateBitmapShader(bm, tm, tm);
35 paint->setShader(shader)->unref();
36}
37
38class RepeatTileView : public SkView {
39public:
40 RepeatTileView() {}
41
42protected:
43 // overrides from SkEventSink
44 virtual bool onQuery(SkEvent* evt) {
45 if (SampleCode::TitleQ(*evt)) {
46 SampleCode::TitleR(evt, "RepeatTile");
47 return true;
48 }
49 return this->INHERITED::onQuery(evt);
50 }
51
52 void drawBG(SkCanvas* canvas) {
53 canvas->drawColor(SK_ColorGRAY);
54 }
55
56 virtual void onDraw(SkCanvas* canvas) {
57 this->drawBG(canvas);
58
59 SkPaint paint;
60 make_paint(&paint, SkShader::kRepeat_TileMode);
61
62// canvas->scale(SK_Scalar1*2, SK_Scalar1);
63 canvas->translate(SkIntToScalar(100), SkIntToScalar(100));
64 canvas->drawPaint(paint);
65 }
66
67 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
68 this->inval(NULL);
69
70 return this->INHERITED::onFindClickHandler(x, y);
71 }
72
73 virtual bool onClick(Click* click) {
74 return this->INHERITED::onClick(click);
75 }
76
77 virtual bool handleKey(SkKey key) {
78 this->inval(NULL);
79 return true;
80 }
81
82private:
83 typedef SkView INHERITED;
84};
85
86//////////////////////////////////////////////////////////////////////////////
87
88static SkView* MyFactory() { return new RepeatTileView; }
89static SkViewRegister reg(MyFactory);
90