#include "SkCanvas.h" #include "SkDevice.h" #include "SkGraphics.h" #include "SkPaint.h" #include "SkPicture.h" #include "SkStream.h" #include "SkWindow.h" ////////////////////////////////////////////////////////////////////////////// class SimpleWindow : public SkOSWindow { public: SimpleWindow(void* hwnd); protected: virtual void onDraw(SkCanvas* canvas); virtual bool onHandleKey(SkKey key); virtual bool onHandleChar(SkUnichar); virtual void onSizeChange(); virtual SkCanvas* beforeChildren(SkCanvas*); virtual void afterChildren(SkCanvas*); virtual bool onEvent(const SkEvent& evt); private: typedef SkOSWindow INHERITED; }; SimpleWindow::SimpleWindow(void* hwnd) : INHERITED(hwnd) { // this->setConfig(SkBitmap::kRGB_565_Config); this->setConfig(SkBitmap::kARGB_8888_Config); this->setVisibleP(true); this->setTitle("Simple"); } void SimpleWindow::onDraw(SkCanvas* canvas) { canvas->drawColor(SK_ColorWHITE); const SkScalar w = this->width(); const SkScalar h = this->height(); SkPaint paint; paint.setAntiAlias(true); paint.setTextSize(SkIntToScalar(40)); paint.setTextAlign(SkPaint::kCenter_Align); canvas->drawText("Hello world", 11, w/2, h/2, paint); } SkCanvas* SimpleWindow::beforeChildren(SkCanvas* canvas) { // can wack the canvas here, which will affect child views // and can be "undone" in afterChildren() // // e.g. return a picture-canvas, or wack the clip or matrix, etc. return canvas; } void SimpleWindow::afterChildren(SkCanvas* orig) { } bool SimpleWindow::onEvent(const SkEvent& evt) { return this->INHERITED::onEvent(evt); } bool SimpleWindow::onHandleChar(SkUnichar uni) { return this->INHERITED::onHandleChar(uni); } bool SimpleWindow::onHandleKey(SkKey key) { return this->INHERITED::onHandleKey(key); } void SimpleWindow::onSizeChange() { this->INHERITED::onSizeChange(); } /////////////////////////////////////////////////////////////////////////////// SkOSWindow* create_sk_window(void* hwnd) { return new SimpleWindow(hwnd); } void get_preferred_size(int* x, int* y, int* width, int* height) { *x = 10; *y = 50; *width = 640; *height = 480; } void application_init() { // setenv("ANDROID_ROOT", "../../../data", 0); setenv("ANDROID_ROOT", "/android/device/data", 0); SkGraphics::Init(true); SkEvent::Init(); } void application_term() { SkEvent::Term(); SkGraphics::Term(); }