1f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com/* 25bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Copyright 2006 The Android Open Source Project 3f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com * 45bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * Use of this source code is governed by a BSD-style license that can be 55bb6825f10d64834ad1d1d967f590aebae285360epoger@google.com * found in the LICENSE file. 6f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com */ 7f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 8f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#ifndef SkWindow_DEFINED 9f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#define SkWindow_DEFINED 10f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 11f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkView.h" 12f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkBitmap.h" 13982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com#include "SkMatrix.h" 14f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkRegion.h" 15f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkEvent.h" 16f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkKey.h" 17f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#include "SkTDArray.h" 18f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 19f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#ifdef SK_BUILD_FOR_WINCEx 20f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com #define SHOW_FPS 21f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#endif 22f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com//#define USE_GX_SCREEN 23f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 24982b0d497ffd4f50916124e5f2dd95623883e670reed@android.comclass SkCanvas; 25982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 26f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comclass SkOSMenu; 27f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 28f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comclass SkWindow : public SkView { 29f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.compublic: 30f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkWindow(); 31f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual ~SkWindow(); 32f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 33f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com const SkBitmap& getBitmap() const { return fBitmap; } 34f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 35f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void setConfig(SkBitmap::Config); 36f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void resize(int width, int height, SkBitmap::Config config = SkBitmap::kNo_Config); 37f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void eraseARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b); 38f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void eraseRGB(U8CPU r, U8CPU g, U8CPU b); 39f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 40f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com bool isDirty() const { return !fDirtyRgn.isEmpty(); } 41f5aba6b8f7d46ff3a206854df3c81fccea003200reed@google.com bool update(SkIRect* updateArea); 42982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com // does not call through to onHandleInval(), but does force the fDirtyRgn 43982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com // to be wide open. Call before update() to ensure we redraw everything. 44982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void forceInvalAll(); 45982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com // return the bounds of the dirty/inval rgn, or [0,0,0,0] if none 46982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com const SkIRect& getDirtyBounds() const { return fDirtyRgn.getBounds(); } 47982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 482e4308eedc213a0a646b71797e0fae112e53f6a0reed@google.com bool handleClick(int x, int y, Click::State, void* owner, unsigned modi = 0); 49f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com bool handleChar(SkUnichar); 50f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com bool handleKey(SkKey); 51f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com bool handleKeyUp(SkKey); 52f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 53f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void addMenu(SkOSMenu*); 542c63a489e8cdb1ab561b60c57be6a19eea84b332yangsu@google.com const SkTDArray<SkOSMenu*>* getMenus() { return &fMenus; } 551fde19f3b72345b473a1a9bd64729237a388813frmistry@google.com 5638512471121a1720c4f46ae6f5f5e654a01557c6reed@android.com const char* getTitle() const { return fTitle.c_str(); } 57f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com void setTitle(const char title[]); 58f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 59982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com const SkMatrix& getMatrix() const { return fMatrix; } 60982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void setMatrix(const SkMatrix&); 61982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void preConcat(const SkMatrix&); 62982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com void postConcat(const SkMatrix&); 63982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com 6412b12220b654e0163a11b90782171e8d6b7af4e1reed@google.com virtual SkCanvas* createCanvas(); 6512b12220b654e0163a11b90782171e8d6b7af4e1reed@google.com 660ebc9ad15575259ff918450862f47620c8ab6f01Scroggo virtual void onPDFSaved(const char title[], const char desc[], 670ebc9ad15575259ff918450862f47620c8ab6f01Scroggo const char path[]) {} 68f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comprotected: 69f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool onEvent(const SkEvent&); 702e4308eedc213a0a646b71797e0fae112e53f6a0reed@google.com virtual bool onDispatchClick(int x, int y, Click::State, void* owner, unsigned modi); 71f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com // called if part of our bitmap is invalidated 72f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual void onHandleInval(const SkIRect&); 73f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool onHandleChar(SkUnichar); 74f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool onHandleKey(SkKey); 75f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool onHandleKeyUp(SkKey); 762c63a489e8cdb1ab561b60c57be6a19eea84b332yangsu@google.com virtual void onAddMenu(const SkOSMenu*) {}; 772c63a489e8cdb1ab561b60c57be6a19eea84b332yangsu@google.com virtual void onUpdateMenu(const SkOSMenu*) {}; 78f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual void onSetTitle(const char title[]) {} 79f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 80f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com // overrides from SkView 81982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com virtual bool handleInval(const SkRect*); 82f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool onGetFocusView(SkView** focus) const; 83f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com virtual bool onSetFocusView(SkView* focus); 84f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 85f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.comprivate: 86f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkBitmap::Config fConfig; 87f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkBitmap fBitmap; 88f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkRegion fDirtyRgn; 89a168eac9ba43c9d23b490b100acd936fd88f9449Scroggo 90a168eac9ba43c9d23b490b100acd936fd88f9449Scroggo SkTDArray<Click*> fClicks; // to track clicks 91f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 92f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkTDArray<SkOSMenu*> fMenus; 93f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 94f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com SkView* fFocusView; 95f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com bool fWaitingOnInval; 961fde19f3b72345b473a1a9bd64729237a388813frmistry@google.com 9738512471121a1720c4f46ae6f5f5e654a01557c6reed@android.com SkString fTitle; 98982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com SkMatrix fMatrix; 99f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 100f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com typedef SkView INHERITED; 101f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com}; 102f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 1038c8a8e8c04f41254e8ae1bfe8186af926840ad17tfarina@chromium.org//////////////////////////////////////////////////////////////////////////////// 104f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 105d40fe601b77b248d709a30caab4ed5ccc514ea4eborenet@google.com#if defined(SK_BUILD_FOR_NACL) 106d40fe601b77b248d709a30caab4ed5ccc514ea4eborenet@google.com #include "SkOSWindow_NaCl.h" 107d40fe601b77b248d709a30caab4ed5ccc514ea4eborenet@google.com#elif defined(SK_BUILD_FOR_MAC) 108f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com #include "SkOSWindow_Mac.h" 109f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#elif defined(SK_BUILD_FOR_WIN) 110f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com #include "SkOSWindow_Win.h" 111402578afdfb28800f7c24ebb2172175d80817f1cdjsollen@google.com#elif defined(SK_BUILD_FOR_ANDROID) 112b954ca44eda89e3c1abdaef900f8461f78ddf6edScroggo #include "SkOSWindow_Android.h" 113ddd09613cee5a13edee9e67edc0ed032b795a608scroggo#elif defined(SK_BUILD_FOR_UNIX) 114f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com #include "SkOSWindow_Unix.h" 11531ff4ec4ee65126699fc86b3d5361ae52f093071reed@android.com#elif defined(SK_BUILD_FOR_SDL) 11631ff4ec4ee65126699fc86b3d5361ae52f093071reed@android.com #include "SkOSWindow_SDL.h" 117982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com#elif defined(SK_BUILD_FOR_IOS) 118982b0d497ffd4f50916124e5f2dd95623883e670reed@android.com #include "SkOSWindow_iOS.h" 119f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#endif 120f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com 121f0d6bf5df07d5ce620678074da0c05aacc28e44reed@android.com#endif 122