123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390 |
- #ifndef __API_WND_H
- #define __API_WND_H
- #include <wasabicfg.h>
- #include <bfc/dispatch.h>
- #include <bfc/platform/platform.h>
- class ifc_window;
- class PopupExitCallback; // see ../bfc/popexitcb.h
- class ifc_canvas; // see ../common/canvas.h
- class CfgItem;
- #ifndef MODALWND_DEF
- #define MODALWND_DEF
- ifc_window *const MODALWND_NOWND = reinterpret_cast<ifc_window*>(-1);
- #endif
- class wnd_api : public Dispatchable
- {
- public:
- // the master window
- /**
- Get the main root window.
-
- @ret Main root window.
- */
- ifc_window *main_getRootWnd();
- void main_setRootWnd(ifc_window *w);
- /**
- Get the modal window on top of the
- modal window stack.
-
- @ret Window that's currently modal.
- */
- ifc_window *getModalWnd();
- /**
- Push a window onto the modal stack. If
- the window is on top of the stack, it's
- currently modal.
-
- @param w Window to push onto the modal stack.
- */
- void pushModalWnd(ifc_window *w=MODALWND_NOWND);
-
- /**
- Pop a window from the modal stack. If
- the window is on top of the stack, it
- will no longer be modal after this call.
-
- @param w Window to pop from the modal stack.
- */
- void popModalWnd(ifc_window *w=MODALWND_NOWND);
- ifc_window *rootWndFromPoint(POINT *pt);
- ifc_window *rootWndFromOSHandle(OSWINDOWHANDLE wnd);
- void registerRootWnd(ifc_window *wnd);
- void unregisterRootWnd(ifc_window *wnd);
- int rootwndIsValid(ifc_window *wnd);
- void hookKeyboard(ifc_window *hooker);
- void unhookKeyboard(ifc_window *hooker);
- void kbdReset();
- int interceptOnChar(unsigned int c);
- int interceptOnKeyDown(int k);
- int interceptOnKeyUp(int k);
- int interceptOnSysKeyDown(int k, int kd);
- int interceptOnSysKeyUp(int k, int kd);
- int forwardOnChar(ifc_window *from, unsigned int c, int kd);
- int forwardOnKeyDown(ifc_window *from, int k, int kd);
- int forwardOnKeyUp(ifc_window *from, int k, int kd);
- int forwardOnSysKeyDown(ifc_window *from, int k, int kd);
- int forwardOnSysKeyUp(ifc_window *from, int k, int kd);
- int forwardOnKillFocus();
- int pushKeyboardLock();
- int popKeyboardLock();
- int isKeyboardLocked();
- void popupexit_deregister(PopupExitCallback *cb);
- void popupexit_register(PopupExitCallback *cb, ifc_window *watched);
- int popupexit_check(ifc_window *w);
- void popupexit_signal();
- #define RenderBaseTexture renderBaseTexture //CUT
- void skin_renderBaseTexture(ifc_window *base, ifc_canvas *c, const RECT &r, ifc_window *destWnd, int alpha=255);
- void skin_registerBaseTextureWindow(ifc_window *window, const wchar_t *bmp=NULL);
- void skin_unregisterBaseTextureWindow(ifc_window *window);
- void appdeactivation_push_disallow(ifc_window *w);
- void appdeactivation_pop_disallow(ifc_window *w);
- int appdeactivation_isallowed(ifc_window *w);
- void appdeactivation_setbypass(int i);
- int paintset_present(int set);
- void paintset_render(int set, ifc_canvas *c, const RECT *r, int alpha=255);
- void paintset_renderTitle(const wchar_t *t, ifc_canvas *c, const RECT *r, int alpha=255);
- int forwardOnMouseWheel(int l, int a);
- void setDefaultDropTarget(void *dt);
- void *getDefaultDropTarget();
- enum {
- API_WND_GETROOTWND = 10,
- API_WND_SETROOTWND = 20,
- API_WND_GETMODALWND = 30,
- API_WND_PUSHMODALWND = 40,
- API_WND_POPMODALWND = 50,
- API_WND_ROOTWNDFROMPOINT = 60,
- API_WND_ROOTWNDFROMOSHANDLE = 65,
- API_WND_REGISTERROOTWND = 70,
- API_WND_UNREGISTERROOTWND = 80,
- API_WND_ROOTWNDISVALID = 90,
- API_WND_INTERCEPTONCHAR = 100,
- API_WND_INTERCEPTONKEYDOWN = 110,
- API_WND_INTERCEPTONKEYUP = 120,
- API_WND_INTERCEPTONSYSKEYDOWN = 130,
- API_WND_INTERCEPTONSYSKEYUP = 140,
- API_WND_HOOKKEYBOARD = 150,
- API_WND_UNHOOKKEYBOARD = 160,
- API_WND_KBDRESET = 165,
- API_WND_FORWARDONCHAR = 170,
- API_WND_FORWARDONKEYDOWN = 180,
- API_WND_FORWARDONKEYUP = 190,
- API_WND_FORWARDONSYSKEYDOWN = 200,
- API_WND_FORWARDONSYSKEYUP = 210,
- API_WND_FORWARDONKILLFOCUS = 220,
- API_WND_POPUPEXIT_CHECK = 230,
- API_WND_POPUPEXIT_SIGNAL = 240,
- API_WND_POPUPEXIT_REGISTER = 250,
- API_WND_POPUPEXIT_DEREGISTER = 260,
- API_WND_RENDERBASETEXTURE = 270,
- API_WND_REGISTERBASETEXTUREWINDOW = 280,
- API_WND_UNREGISTERBASETEXTUREWINDOW = 290,
- API_WND_APPDEACTIVATION_PUSH_DISALLOW = 300,
- API_WND_APPDEACTIVATION_POP_DISALLOW = 310,
- API_WND_APPDEACTIVATION_ISALLOWED = 320,
- API_WND_APPDEACTIVATION_SETBYPASS = 330,
- API_WND_PAINTSET_PRESENT = 335,
- API_WND_PAINTSET_RENDER = 340,
- API_WND_PAINTSET_RENDERTITLE = 350,
- API_WND_FORWARDONMOUSEWHEEL = 360,
- // fg> this may need to go away eventually but i need it _right now_
- API_WND_SETDEFAULTDROPTARGET = 370,
- API_WND_GETDEFAULTDROPTARGET = 380,
- API_WND_PUSHKBDLOCK = 390,
- API_WND_POPKBDLOCK = 400,
- API_WND_ISKBDLOCKED = 410,
- };
- };
- inline ifc_window *wnd_api::main_getRootWnd() {
- return _call(API_WND_GETROOTWND, (ifc_window *)0 );
- }
- inline void wnd_api::main_setRootWnd(ifc_window *w) {
- _voidcall(API_WND_SETROOTWND, w );
- }
- inline ifc_window *wnd_api::getModalWnd() {
- return _call(API_WND_GETMODALWND, (ifc_window *)0 );
- }
- inline void wnd_api::pushModalWnd(ifc_window *w) {
- _voidcall(API_WND_PUSHMODALWND, w);
- }
- inline void wnd_api::popModalWnd(ifc_window *w) {
- _voidcall(API_WND_POPMODALWND, w);
- }
- inline ifc_window *wnd_api::rootWndFromPoint(POINT *pt) {
- return _call(API_WND_ROOTWNDFROMPOINT, (ifc_window *)0, pt );
- }
- inline ifc_window *wnd_api::rootWndFromOSHandle(OSWINDOWHANDLE wnd) {
- return _call(API_WND_ROOTWNDFROMOSHANDLE, (ifc_window *)0, wnd);
- }
- inline void wnd_api::registerRootWnd(ifc_window *wnd) {
- _voidcall(API_WND_REGISTERROOTWND, wnd );
- }
- inline void wnd_api::unregisterRootWnd(ifc_window *wnd) {
- _voidcall(API_WND_UNREGISTERROOTWND, wnd );
- }
- inline int wnd_api::rootwndIsValid(ifc_window *wnd) {
- return _call(API_WND_ROOTWNDISVALID, (int)0, wnd );
- }
- inline int wnd_api::interceptOnChar(unsigned int c) {
- return _call(API_WND_INTERCEPTONCHAR, (int)0, c );
- }
- inline int wnd_api::interceptOnKeyDown(int k) {
- return _call(API_WND_INTERCEPTONKEYDOWN, (int)0, k );
- }
- inline int wnd_api::interceptOnKeyUp(int k) {
- return _call(API_WND_INTERCEPTONKEYUP, (int)0, k );
- }
- inline int wnd_api::interceptOnSysKeyDown(int k, int kd) {
- return _call(API_WND_INTERCEPTONSYSKEYDOWN, (int)0, k , kd );
- }
- inline int wnd_api::interceptOnSysKeyUp(int k, int kd) {
- return _call(API_WND_INTERCEPTONSYSKEYUP, (int)0, k , kd );
- }
- inline void wnd_api::hookKeyboard(ifc_window *hooker) {
- _voidcall(API_WND_HOOKKEYBOARD, hooker);
- }
- inline void wnd_api::unhookKeyboard(ifc_window *hooker) {
- _voidcall(API_WND_UNHOOKKEYBOARD, hooker);
- }
- inline void wnd_api::kbdReset() {
- _voidcall(API_WND_KBDRESET);
- }
- inline int wnd_api::forwardOnChar(ifc_window *from, unsigned int c, int kd) {
- return _call(API_WND_FORWARDONCHAR, (int)0, from, c, kd );
- }
- inline int wnd_api::forwardOnKeyDown(ifc_window *from, int k, int kd) {
- return _call(API_WND_FORWARDONKEYDOWN, (int)0, from, k, kd);
- }
- inline int wnd_api::forwardOnKeyUp(ifc_window *from, int k, int kd) {
- return _call(API_WND_FORWARDONKEYUP, (int)0, from, k, kd );
- }
- inline int wnd_api::forwardOnSysKeyDown(ifc_window *from, int k, int kd) {
- return _call(API_WND_FORWARDONSYSKEYDOWN, (int)0, from, k , kd );
- }
- inline int wnd_api::forwardOnSysKeyUp(ifc_window *from, int k, int kd) {
- return _call(API_WND_FORWARDONSYSKEYUP, (int)0, from, k , kd );
- }
- inline int wnd_api::forwardOnKillFocus() {
- return _call(API_WND_FORWARDONKILLFOCUS, (int)0 );
- }
- inline int wnd_api::popupexit_check(ifc_window *w) {
- return _call(API_WND_POPUPEXIT_CHECK, 0, w);
- }
- inline void wnd_api::popupexit_signal() {
- _voidcall(API_WND_POPUPEXIT_SIGNAL);
- }
- inline void wnd_api::popupexit_register(PopupExitCallback *cb, ifc_window *watched) {
- _voidcall(API_WND_POPUPEXIT_REGISTER, cb, watched);
- }
- inline void wnd_api::popupexit_deregister(PopupExitCallback *cb) {
- _voidcall(API_WND_POPUPEXIT_DEREGISTER, cb);
- }
- #define RenderBaseTexture renderBaseTexture //CUT
- inline void wnd_api::skin_renderBaseTexture(ifc_window *base, ifc_canvas *c, const RECT &r, ifc_window *destWnd, int alpha) {
- _voidcall(API_WND_RENDERBASETEXTURE, base, c, &r, destWnd, alpha );
- }
- inline void wnd_api::skin_registerBaseTextureWindow(ifc_window *window, const wchar_t *bmp) {
- _voidcall(API_WND_REGISTERBASETEXTUREWINDOW, window, bmp);
- }
- inline void wnd_api::skin_unregisterBaseTextureWindow(ifc_window *window) {
- _voidcall(API_WND_UNREGISTERBASETEXTUREWINDOW, window );
- }
- inline void wnd_api::appdeactivation_push_disallow(ifc_window *w) {
- _voidcall(API_WND_APPDEACTIVATION_PUSH_DISALLOW, w);
- }
- inline void wnd_api::appdeactivation_pop_disallow(ifc_window *w) {
- _voidcall(API_WND_APPDEACTIVATION_POP_DISALLOW, w);
- }
- inline int wnd_api::appdeactivation_isallowed(ifc_window *w) {
- return _call(API_WND_APPDEACTIVATION_ISALLOWED, 0, w);
- }
- inline void wnd_api::appdeactivation_setbypass(int i) {
- _voidcall(API_WND_APPDEACTIVATION_SETBYPASS, i);
- }
- inline int wnd_api::paintset_present(int set)
- {
- return _call(API_WND_PAINTSET_PRESENT, 0, set);
- }
- inline void wnd_api::paintset_render(int set, ifc_canvas *c, const RECT *r, int alpha)
- {
- _voidcall(API_WND_PAINTSET_RENDER, set, c, r, alpha);
- }
- inline void wnd_api::paintset_renderTitle(const wchar_t *t, ifc_canvas *c, const RECT *r, int alpha)
- {
- _voidcall(API_WND_PAINTSET_RENDERTITLE, t, c, r, alpha);
- }
- inline int wnd_api::forwardOnMouseWheel(int l, int a) {
- return _call(API_WND_FORWARDONMOUSEWHEEL, 0, l, a);
- }
- // fg> this may need to go away eventually but i need it _right now_
- inline void wnd_api::setDefaultDropTarget(void *dt) {
- _voidcall(API_WND_SETDEFAULTDROPTARGET, dt);
- }
- inline void *wnd_api::getDefaultDropTarget() {
- return _call(API_WND_GETDEFAULTDROPTARGET, (void*)NULL);
- }
- inline int wnd_api::pushKeyboardLock() {
- return _call(API_WND_PUSHKBDLOCK, 0);
- }
- inline int wnd_api::popKeyboardLock() {
- return _call(API_WND_POPKBDLOCK, 0);
- }
- inline int wnd_api::isKeyboardLocked() {
- return _call(API_WND_ISKBDLOCKED, 0);
- }
- class wnd_apiI : public wnd_api {
- public:
- virtual void main_setRootWnd(ifc_window *w)=0;
- virtual ifc_window *main_getRootWnd()=0;
- virtual ifc_window *getModalWnd()=0;
- virtual void pushModalWnd(ifc_window *w=MODALWND_NOWND)=0;
- virtual void popModalWnd(ifc_window *w=MODALWND_NOWND)=0;
- virtual ifc_window *rootWndFromPoint(POINT *pt)=0;
- virtual ifc_window *rootWndFromOSHandle(OSWINDOWHANDLE wnd)=0;
- virtual void registerRootWnd(ifc_window *wnd)=0;
- virtual void unregisterRootWnd(ifc_window *wnd)=0;
- virtual int rootwndIsValid(ifc_window *wnd)=0;
- virtual void hookKeyboard(ifc_window *hooker)=0;
- virtual void unhookKeyboard(ifc_window *hooker)=0;
- virtual void kbdReset()=0;
- virtual int interceptOnChar(unsigned int c)=0;
- virtual int interceptOnKeyDown(int k)=0;
- virtual int interceptOnKeyUp(int k)=0;
- virtual int interceptOnSysKeyDown(int k, int kd)=0;
- virtual int interceptOnSysKeyUp(int k, int kd)=0;
- virtual int forwardOnChar(ifc_window *from, unsigned int c, int kd)=0;
- virtual int forwardOnKeyDown(ifc_window *from, int k, int kd)=0;
- virtual int forwardOnKeyUp(ifc_window *from, int k, int kd)=0;
- virtual int forwardOnSysKeyDown(ifc_window *from, int k, int kd)=0;
- virtual int forwardOnSysKeyUp(ifc_window *from, int k, int kd)=0;
- virtual int forwardOnKillFocus()=0;
- virtual void popupexit_deregister(PopupExitCallback *cb)=0;
- virtual void popupexit_register(PopupExitCallback *cb, ifc_window *watched)=0;
- virtual int popupexit_check(ifc_window *w)=0;
- virtual void popupexit_signal()=0;
- virtual void skin_renderBaseTexture(ifc_window *base, ifc_canvas *c, const RECT *r, ifc_window *destWnd, int alpha=255)=0;
- virtual void skin_registerBaseTextureWindow(ifc_window *window, const wchar_t *bmp=NULL)=0;
- virtual void skin_unregisterBaseTextureWindow(ifc_window *window)=0;
- virtual void appdeactivation_push_disallow(ifc_window *w)=0;
- virtual void appdeactivation_pop_disallow(ifc_window *w)=0;
- virtual int appdeactivation_isallowed(ifc_window *w)=0;
- virtual void appdeactivation_setbypass(int i)=0;
- #ifdef WASABI_COMPILE_PAINTSETS
- virtual int paintset_present(int set)=0;
- #ifdef WASABI_COMPILE_IMGLDR
- virtual void paintset_render(int set, ifc_canvas *c, const RECT *r, int alpha=255)=0;
- #ifdef WASABI_COMPILE_FONTS
- virtual void paintset_renderTitle(const wchar_t *t, ifc_canvas *c, const RECT *r, int alpha=255)=0;
- #endif // fonts
- #endif // imgldr
- #endif // paintsets
- virtual int forwardOnMouseWheel(int l, int a)=0;
- // fg> this may need to go away eventually but i need it _right now_
- virtual void setDefaultDropTarget(void *dt)=0;
- virtual void *getDefaultDropTarget()=0;
- virtual int pushKeyboardLock()=0;
- virtual int popKeyboardLock()=0;
- virtual int isKeyboardLocked()=0;
- protected:
- RECVS_DISPATCH;
- };
- // {ABB8FBC7-6255-4d41-ACAB-D3D61DDD74EE}
- static const GUID wndApiServiceGuid =
- { 0xabb8fbc7, 0x6255, 0x4d41, { 0xac, 0xab, 0xd3, 0xd6, 0x1d, 0xdd, 0x74, 0xee } };
- extern wnd_api *wndApi;
- #endif
|