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