diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/wnd/wndapi.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/wnd/wndapi.h')
-rw-r--r-- | Src/Wasabi/api/wnd/wndapi.h | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wnd/wndapi.h b/Src/Wasabi/api/wnd/wndapi.h new file mode 100644 index 00000000..21e5a748 --- /dev/null +++ b/Src/Wasabi/api/wnd/wndapi.h @@ -0,0 +1,101 @@ +#ifndef _WNDAPI_H +#define _WNDAPI_H + +#include <api/wnd/api_wnd.h> +#include <bfc/ptrlist.h> +#include <tataki/bitmap/autobitmap.h> +#include <api/wnd/popexitchecker.h> +// --- + +class BaseTexture +{ + public: + BaseTexture(ifc_window *_wnd, const wchar_t *_bmp) : wnd(_wnd), texture(_bmp) {} + virtual ~BaseTexture() {} + + SkinBitmap *getTexture() { return texture.getBitmap(); } + ifc_window *getWnd() { return wnd; } + + virtual void renderBaseTexture(ifc_window *wndbase, ifc_canvas *c, const RECT &r, ifc_window *dest, int alpha); + + private: + ifc_window *wnd; + AutoSkinBitmap texture; +}; + +// --- + +class WndApi : public wnd_apiI +{ + public: + + WndApi(); + virtual ~WndApi(); + + virtual ifc_window *main_getRootWnd(); + virtual void main_setRootWnd(ifc_window *w); + virtual ifc_window *getModalWnd(); + virtual void pushModalWnd(ifc_window *w=MODALWND_NOWND); + virtual void popModalWnd(ifc_window *w=MODALWND_NOWND); + virtual ifc_window *rootWndFromPoint(POINT *pt); + virtual ifc_window *rootWndFromOSHandle(OSWINDOWHANDLE wnd); + virtual void registerRootWnd(ifc_window *wnd); + virtual void unregisterRootWnd(ifc_window *wnd); + virtual int rootwndIsValid(ifc_window *wnd); + virtual void hookKeyboard(ifc_window *hooker); + virtual void unhookKeyboard(ifc_window *hooker); + virtual void kbdReset(); + virtual int interceptOnChar(unsigned int c); + virtual int interceptOnKeyDown(int k); + virtual int interceptOnKeyUp(int k); + virtual int interceptOnSysKeyDown(int k, int kd); + virtual int interceptOnSysKeyUp(int k, int kd); + virtual int forwardOnChar(ifc_window *from, unsigned int c, int kd); + virtual int forwardOnKeyDown(ifc_window *from, int k, int kd); + virtual int forwardOnKeyUp(ifc_window *from, int k, int kd); + virtual int forwardOnSysKeyDown(ifc_window *from, int k, int kd); + virtual int forwardOnSysKeyUp(ifc_window *from, int k, int kd); + virtual int forwardOnKillFocus(); + virtual void popupexit_deregister(PopupExitCallback *cb); + virtual void popupexit_register(PopupExitCallback *cb, ifc_window *watched); + virtual int popupexit_check(ifc_window *w); + virtual void popupexit_signal(); + virtual void skin_renderBaseTexture(ifc_window *base, ifc_canvas *c, const RECT *r, ifc_window *destWnd, int alpha=255); + virtual void skin_registerBaseTextureWindow(ifc_window *window, const wchar_t *bmp=NULL); + virtual void skin_unregisterBaseTextureWindow(ifc_window *window); + virtual void appdeactivation_push_disallow(ifc_window *w); + virtual void appdeactivation_pop_disallow(ifc_window *w); + virtual int appdeactivation_isallowed(ifc_window *w); + virtual void appdeactivation_setbypass(int i); +#ifdef WASABI_COMPILE_PAINTSETS + virtual int paintset_present(int set); +#ifdef WASABI_COMPILE_IMGLDR + virtual void paintset_render(int set, ifc_canvas *c, const RECT *r, int alpha=255); +#ifdef WASABI_COMPILE_FONTS + virtual void paintset_renderTitle(const wchar_t *t, ifc_canvas *c, const RECT *r, int alpha=255); +#endif // fonts +#endif // imgldr +#endif // paintsets + virtual int forwardOnMouseWheel(int l, int a); + virtual void setDefaultDropTarget(void *dt); + virtual void *getDefaultDropTarget(); + static int getNumBaseTextures() { return baseTextureList.getNumItems(); } + virtual int pushKeyboardLock(); + virtual int popKeyboardLock(); + virtual int isKeyboardLocked(); + + PopupExitChecker popupExitChecker; + private: + + static BaseTexture *getBaseTexture(ifc_window *b); + static void renderBaseTexture(ifc_window *base, ifc_canvas *c, const RECT &r, ifc_window *dest, int alpha); + static void renderBaseTexture(ifc_window *base, BaseTexture *s, ifc_canvas *c, const RECT &r, ifc_window *dest, int alpha); + static PtrList<BaseTexture> baseTextureList; + static ifc_window *genericwnd; + static void *default_drop_target; + static int kbdlock; +}; + +extern WndApi _wndApi; + +#endif |