blob: efb108fd16ee6aa57f74228e53379ab615248aac [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.com8a1c16f2008-12-17 15:59:43 +000022 }
23
24protected:
25 // overrides from SkEventSink
26 virtual bool onQuery(SkEvent* evt) {
27 if (SampleCode::TitleQ(*evt)) {
28 SampleCode::TitleR(evt, "NinePatch");
29 return true;
30 }
31 return this->INHERITED::onQuery(evt);
32 }
33
34 void drawBG(SkCanvas* canvas) {
35 canvas->drawColor(SK_ColorWHITE);
36
reed@android.com0b9e2db2009-09-16 17:00:17 +000037 canvas->scale(1.5f, 1.5f);
38
reed@android.com8a1c16f2008-12-17 15:59:43 +000039 canvas->drawBitmap(fBM, 0, 0);
40
41 SkIRect margins;
42 SkRect dst;
43 int d = 25;
44
45 margins.set(d, d, d, d);
46 dst.set(0, 0, SkIntToScalar(200), SkIntToScalar(200));
47 dst.offset(SkIntToScalar(fBM.width()), 0);
48 dst.offset(SkIntToScalar(2), SkIntToScalar(2));
49
50 SkNinePatch::DrawNine(canvas, dst, fBM, margins);
reed@android.com8a1c16f2008-12-17 15:59:43 +000051 }
52
53 virtual void onDraw(SkCanvas* canvas) {
54 this->drawBG(canvas);
55 }
56
57private:
58 typedef SkView INHERITED;
59};
60
61//////////////////////////////////////////////////////////////////////////////
62
63static SkView* MyFactory() { return new NinePatchView; }
64static SkViewRegister reg(MyFactory);
65