1 #include "SkCanvas.h"
2 #include "SkDevice.h"
3 #include "SkGraphics.h"
4 #include "SkPaint.h"
5 #include "SkPicture.h"
6 #include "SkStream.h"
7 #include "SkWindow.h"
8
9 //////////////////////////////////////////////////////////////////////////////
10
11 class SimpleWindow : public SkOSWindow {
12 public:
13 SimpleWindow(void* hwnd);
14
15 protected:
16 virtual void onDraw(SkCanvas* canvas);
17 virtual bool onHandleKey(SkKey key);
18 virtual bool onHandleChar(SkUnichar);
19 virtual void onSizeChange();
20
21 virtual SkCanvas* beforeChildren(SkCanvas*);
22 virtual void afterChildren(SkCanvas*);
23
24 virtual bool onEvent(const SkEvent& evt);
25
26 private:
27 typedef SkOSWindow INHERITED;
28 };
29
SimpleWindow(void * hwnd)30 SimpleWindow::SimpleWindow(void* hwnd) : INHERITED(hwnd) {
31 // this->setConfig(SkBitmap::kRGB_565_Config);
32 this->setConfig(SkBitmap::kARGB_8888_Config);
33 this->setVisibleP(true);
34 this->setTitle("Simple");
35 }
36
onDraw(SkCanvas * canvas)37 void SimpleWindow::onDraw(SkCanvas* canvas) {
38 canvas->drawColor(SK_ColorWHITE);
39
40 const SkScalar w = this->width();
41 const SkScalar h = this->height();
42
43 SkPaint paint;
44 paint.setAntiAlias(true);
45 paint.setTextSize(SkIntToScalar(40));
46 paint.setTextAlign(SkPaint::kCenter_Align);
47
48 canvas->drawText("Hello world", 11, w/2, h/2, paint);
49 }
50
beforeChildren(SkCanvas * canvas)51 SkCanvas* SimpleWindow::beforeChildren(SkCanvas* canvas) {
52 // can wack the canvas here, which will affect child views
53 // and can be "undone" in afterChildren()
54 //
55 // e.g. return a picture-canvas, or wack the clip or matrix, etc.
56
57 return canvas;
58 }
59
afterChildren(SkCanvas * orig)60 void SimpleWindow::afterChildren(SkCanvas* orig) {
61 }
62
onEvent(const SkEvent & evt)63 bool SimpleWindow::onEvent(const SkEvent& evt) {
64 return this->INHERITED::onEvent(evt);
65 }
66
onHandleChar(SkUnichar uni)67 bool SimpleWindow::onHandleChar(SkUnichar uni) {
68 return this->INHERITED::onHandleChar(uni);
69 }
70
onHandleKey(SkKey key)71 bool SimpleWindow::onHandleKey(SkKey key) {
72 return this->INHERITED::onHandleKey(key);
73 }
74
onSizeChange()75 void SimpleWindow::onSizeChange() {
76 this->INHERITED::onSizeChange();
77 }
78
79 ///////////////////////////////////////////////////////////////////////////////
80
create_sk_window(void * hwnd)81 SkOSWindow* create_sk_window(void* hwnd) {
82 return new SimpleWindow(hwnd);
83 }
84
get_preferred_size(int * x,int * y,int * width,int * height)85 void get_preferred_size(int* x, int* y, int* width, int* height) {
86 *x = 10;
87 *y = 50;
88 *width = 640;
89 *height = 480;
90 }
91
application_init()92 void application_init() {
93 // setenv("ANDROID_ROOT", "../../../data", 0);
94 setenv("ANDROID_ROOT", "/android/device/data", 0);
95 SkGraphics::Init(true);
96 SkEvent::Init();
97 }
98
application_term()99 void application_term() {
100 SkEvent::Term();
101 SkGraphics::Term();
102 }
103