blob: 5c075b52e125e5fcf1377ea992c6e9479bfb21ea [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);
15 }
16
17protected:
18 // overrides from SkEventSink
19 virtual bool onQuery(SkEvent* evt) {
20 if (SampleCode::TitleQ(*evt)) {
21 SampleCode::TitleR(evt, "NinePatch");
22 return true;
23 }
24 return this->INHERITED::onQuery(evt);
25 }
26
27 void drawBG(SkCanvas* canvas) {
28 canvas->drawColor(SK_ColorWHITE);
29
30 canvas->drawBitmap(fBM, 0, 0);
31
32 SkIRect margins;
33 SkRect dst;
34 int d = 25;
35
36 margins.set(d, d, d, d);
37 dst.set(0, 0, SkIntToScalar(200), SkIntToScalar(200));
38 dst.offset(SkIntToScalar(fBM.width()), 0);
39 dst.offset(SkIntToScalar(2), SkIntToScalar(2));
40
41 SkNinePatch::DrawNine(canvas, dst, fBM, margins);
42
43 int cx = fBM.width()/2;
44 int cy = fBM.height()/2;
45 SkPMColor pm = *fBM.getAddr32(cx, cy);
46 SkColor c = SkUnPreMultiply::PMColorToColor(pm);
47 SkColor pm2 = SkPreMultiplyColor(c);
48 //SkDebugf("--- pm %x c %x pm2 %x\n", pm, c, pm2);
49 }
50
51 virtual void onDraw(SkCanvas* canvas) {
52 this->drawBG(canvas);
53 }
54
55private:
56 typedef SkView INHERITED;
57};
58
59//////////////////////////////////////////////////////////////////////////////
60
61static SkView* MyFactory() { return new NinePatchView; }
62static SkViewRegister reg(MyFactory);
63