aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/wnd/wndapi.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/wnd/wndapi.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/wnd/wndapi.h')
-rw-r--r--Src/Wasabi/api/wnd/wndapi.h101
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