blob: 941b3ff4d0c22b3a2eef8ec4209fa8c809fce908 [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 "SkImageDecoder.h"
5#include "SkNinePatch.h"
6#include "SkPaint.h"
7#include "SkUnPreMultiply.h"
8
9class NinePatchView : public SkView {
10public:
11 SkBitmap fBM;
12
13 NinePatchView() {
14 SkImageDecoder::DecodeFile("/skimages/folder_background.9.png", &fBM);
reed@android.com0b9e2db2009-09-16 17:00:17 +000015
16 // trim off the edge guide-lines
17 SkBitmap tmp;
18 SkIRect r;
19 r.set(1, 1, fBM.width() - 1, fBM.height() - 1);
20 fBM.extractSubset(&tmp, r);
21 fBM.swap(tmp);
reed@android.comc4cae852009-09-23 15:06:10 +000022
23 fX = SkIntToScalar(fBM.width());
24 fY = 0;
reed@android.com8a1c16f2008-12-17 15:59:43 +000025 }
26
27protected:
28 // overrides from SkEventSink
29 virtual bool onQuery(SkEvent* evt) {
30 if (SampleCode::TitleQ(*evt)) {
31 SampleCode::TitleR(evt, "NinePatch");
32 return true;
33 }
34 return this->INHERITED::onQuery(evt);
35 }
36
37 void drawBG(SkCanvas* canvas) {
38 canvas->drawColor(SK_ColorWHITE);
reed@android.comc4cae852009-09-23 15:06:10 +000039 }
40
41 virtual void onDraw(SkCanvas* canvas) {
42 this->drawBG(canvas);
43
reed@android.com0b9e2db2009-09-16 17:00:17 +000044 canvas->scale(1.5f, 1.5f);
45
reed@android.com8a1c16f2008-12-17 15:59:43 +000046 canvas->drawBitmap(fBM, 0, 0);
47
48 SkIRect margins;
49 SkRect dst;
50 int d = 25;
51
52 margins.set(d, d, d, d);
53 dst.set(0, 0, SkIntToScalar(200), SkIntToScalar(200));
reed@android.comc4cae852009-09-23 15:06:10 +000054 dst.offset(fX, fY);
reed@android.com8a1c16f2008-12-17 15:59:43 +000055
56 SkNinePatch::DrawNine(canvas, dst, fBM, margins);
reed@android.com8a1c16f2008-12-17 15:59:43 +000057 }
58
reed@android.comc4cae852009-09-23 15:06:10 +000059 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) {
60 fX = x / 1.5f;
61 fY = y / 1.5f;
62 this->inval(NULL);
63 return this->INHERITED::onFindClickHandler(x, y);
reed@android.com8a1c16f2008-12-17 15:59:43 +000064 }
reed@android.com8a1c16f2008-12-17 15:59:43 +000065private:
reed@android.comc4cae852009-09-23 15:06:10 +000066 SkScalar fX, fY;
reed@android.com8a1c16f2008-12-17 15:59:43 +000067 typedef SkView INHERITED;
68};
69
70//////////////////////////////////////////////////////////////////////////////
71
72static SkView* MyFactory() { return new NinePatchView; }
73static SkViewRegister reg(MyFactory);
74