SkWindow.h revision 4302ae91b0c97993f7b659474a5fd305921cdc5e
18a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project 38a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com * 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 68a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com */ 78a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifndef SkWindow_DEFINED 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#define SkWindow_DEFINED 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkView.h" 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkBitmap.h" 13f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com#include "SkMatrix.h" 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRegion.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkEvent.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkKey.h" 174302ae91b0c97993f7b659474a5fd305921cdc5ereed#include "SkSurfaceProps.h" 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTDArray.h" 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#ifdef SK_BUILD_FOR_WINCEx 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com #define SHOW_FPS 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com//#define USE_GX_SCREEN 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 250397e9f3415b4646797f1b17e9a38b5deb864ff0reedclass SkSurface; 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkOSMenu; 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comclass SkWindow : public SkView { 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.compublic: 308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkWindow(); 318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual ~SkWindow(); 328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 334302ae91b0c97993f7b659474a5fd305921cdc5ereed SkSurfaceProps getSurfaceProps() const { return fSurfaceProps; } 344302ae91b0c97993f7b659474a5fd305921cdc5ereed void setSurfaceProps(const SkSurfaceProps& props) { 354302ae91b0c97993f7b659474a5fd305921cdc5ereed fSurfaceProps = props; 364302ae91b0c97993f7b659474a5fd305921cdc5ereed } 374302ae91b0c97993f7b659474a5fd305921cdc5ereed 388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const SkBitmap& getBitmap() const { return fBitmap; } 398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 40e24ad23ae67ffcb0dc545b7e426cf08d102e0868commit-bot@chromium.org void setColorType(SkColorType); 41b45c56e4b7e3d51c808b0d8694e13ea3b403ec6fcommit-bot@chromium.org void resize(int width, int height, SkColorType = kUnknown_SkColorType); 428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool isDirty() const { return !fDirtyRgn.isEmpty(); } 44aa400ee34c035c582ea8f3bce8a467d9848ecd25reed@google.com bool update(SkIRect* updateArea); 45f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com // does not call through to onHandleInval(), but does force the fDirtyRgn 46f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com // to be wide open. Call before update() to ensure we redraw everything. 47f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com void forceInvalAll(); 48f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com // return the bounds of the dirty/inval rgn, or [0,0,0,0] if none 49f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com const SkIRect& getDirtyBounds() const { return fDirtyRgn.getBounds(); } 50f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com 514d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com bool handleClick(int x, int y, Click::State, void* owner, unsigned modi = 0); 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool handleChar(SkUnichar); 538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool handleKey(SkKey); 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool handleKeyUp(SkKey); 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void addMenu(SkOSMenu*); 57654d72f94c855ceae34db0ee82d92844835c0d29yangsu@google.com const SkTDArray<SkOSMenu*>* getMenus() { return &fMenus; } 58fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 590ae6b245f2b79bc04f0801b08fcf05abcf98fd6creed@android.com const char* getTitle() const { return fTitle.c_str(); } 608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void setTitle(const char title[]); 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 62f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com const SkMatrix& getMatrix() const { return fMatrix; } 63f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com void setMatrix(const SkMatrix&); 64f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com void preConcat(const SkMatrix&); 65f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com void postConcat(const SkMatrix&); 66f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com 670397e9f3415b4646797f1b17e9a38b5deb864ff0reed virtual SkSurface* createSurface(); 685957f47e8de0ff55b8c0bf84984d4915c7c72825reed@google.com 698ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo virtual void onPDFSaved(const char title[], const char desc[], 708ac0d542b0226e68b0faa935b3402ffc91409a02Scroggo const char path[]) {} 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected: 728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onEvent(const SkEvent&); 734d5c26de0a24f86c37c1da8b0e30d11a550ea67breed@google.com virtual bool onDispatchClick(int x, int y, Click::State, void* owner, unsigned modi); 748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // called if part of our bitmap is invalidated 758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void onHandleInval(const SkIRect&); 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onHandleChar(SkUnichar); 778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onHandleKey(SkKey); 788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onHandleKeyUp(SkKey); 79654d72f94c855ceae34db0ee82d92844835c0d29yangsu@google.com virtual void onAddMenu(const SkOSMenu*) {}; 80654d72f94c855ceae34db0ee82d92844835c0d29yangsu@google.com virtual void onUpdateMenu(const SkOSMenu*) {}; 818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual void onSetTitle(const char title[]) {} 828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // overrides from SkView 84f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com virtual bool handleInval(const SkRect*); 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onGetFocusView(SkView** focus) const; 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onSetFocusView(SkView* focus); 878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 894302ae91b0c97993f7b659474a5fd305921cdc5ereed SkSurfaceProps fSurfaceProps; 90e24ad23ae67ffcb0dc545b7e426cf08d102e0868commit-bot@chromium.org SkColorType fColorType; 918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkBitmap fBitmap; 928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkRegion fDirtyRgn; 93d3aed39ab1ad88b05b9423ee1329c227d1f8f612Scroggo 94d3aed39ab1ad88b05b9423ee1329c227d1f8f612Scroggo SkTDArray<Click*> fClicks; // to track clicks 958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkTDArray<SkOSMenu*> fMenus; 978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkView* fFocusView; 998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com bool fWaitingOnInval; 100fbfcd5602128ec010c82cb733c9cdc0a3254f9f3rmistry@google.com 1010ae6b245f2b79bc04f0801b08fcf05abcf98fd6creed@android.com SkString fTitle; 102f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com SkMatrix fMatrix; 1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com typedef SkView INHERITED; 1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 107e229e92ea51e9bc7c11033e2099d3ef275621115tfarina@chromium.org//////////////////////////////////////////////////////////////////////////////// 1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1097158e6acca1b1ecc321d4d514a31cba11b5ead60borenet@google.com#if defined(SK_BUILD_FOR_NACL) 1107158e6acca1b1ecc321d4d514a31cba11b5ead60borenet@google.com #include "SkOSWindow_NaCl.h" 1117158e6acca1b1ecc321d4d514a31cba11b5ead60borenet@google.com#elif defined(SK_BUILD_FOR_MAC) 1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com #include "SkOSWindow_Mac.h" 1138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#elif defined(SK_BUILD_FOR_WIN) 1148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com #include "SkOSWindow_Win.h" 11556c69773aea56c6c6bd47bc7e7970dd081205184djsollen@google.com#elif defined(SK_BUILD_FOR_ANDROID) 116f33d1537326af59b7948d2fa92db0b0190f0d99dScroggo #include "SkOSWindow_Android.h" 117b7e9aee1acf27fc98cb37ed69c05da71b4c3c69bscroggo#elif defined(SK_BUILD_FOR_UNIX) 1188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com #include "SkOSWindow_Unix.h" 119671cd656785de5e84564b6ffe4831625d7016dedreed@android.com#elif defined(SK_BUILD_FOR_SDL) 120671cd656785de5e84564b6ffe4831625d7016dedreed@android.com #include "SkOSWindow_SDL.h" 121f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com#elif defined(SK_BUILD_FOR_IOS) 122f2b98d67dcb6fcb3120feede9c72016fc7b3ead8reed@android.com #include "SkOSWindow_iOS.h" 1238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 1248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif 126