diff options
Diffstat (limited to 'Src/Wasabi/api/wnd/rootwnd.h')
-rw-r--r-- | Src/Wasabi/api/wnd/rootwnd.h | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/Src/Wasabi/api/wnd/rootwnd.h b/Src/Wasabi/api/wnd/rootwnd.h new file mode 100644 index 00000000..2b33e324 --- /dev/null +++ b/Src/Wasabi/api/wnd/rootwnd.h @@ -0,0 +1,275 @@ +#ifndef _ROOTWND_H +#define _ROOTWND_H + +#include "api_window.h" +#include <bfc/wasabi_std.h> +#include <bfc/dispatch.h> +#include <api/wnd/cursor.h> + +class ifc_canvas; +class api_region; +class TimerClient; +class ifc_dependent; +class GuiObject; +class FindObjectCallback; +class Cursor; +class Accessible; +class Canvas; + +// only these methods are safe across dll boundaries +// this is the pointer you find in the GWL_USERDATA of a window + +class DragInterface; + +class NOVTABLE RootWndI : public ifc_window +{ +protected: + RootWndI() {} // protect constructor + +public: + virtual OSWINDOWHANDLE getOsWindowHandle()=0; + virtual OSMODULEHANDLE getOsModuleHandle()=0; + virtual void performBatchProcesses()=0; + virtual TimerClient *getTimerClient()=0; + virtual const wchar_t *getRootWndName()=0; + virtual const wchar_t *getId()=0; + virtual int init(ifc_window *parent, int nochild)=0; + virtual int isInited()=0; + virtual int isPostOnInit()=0; + + virtual int setVirtual(int i)=0; + + virtual int isClickThrough()=0; + virtual int onMouseMove(int x, int y)=0; + virtual int onLeftButtonUp(int x, int y)=0; + virtual int onRightButtonUp(int x, int y)=0; + virtual int onLeftButtonDown(int x, int y)=0; + virtual int onRightButtonDown(int x, int y)=0; + virtual int onLeftButtonDblClk(int x, int y)=0; + virtual int onRightButtonDblClk(int x, int y)=0; + + virtual DragInterface *getDragInterface()=0; + + virtual int getCursorType(int x, int y)=0; + virtual OSCURSORHANDLE getCustomCursor(int x, int y)=0; + virtual ifc_window *rootWndFromPoint(POINT *pt)=0; + + virtual void getClientRect(RECT *r)=0; + virtual void getNonClientRect(RECT *rect)=0; + virtual void getWindowRect(RECT *r)=0; + + virtual void setVisible(int show)=0; + virtual void setCloaked(int cloak)=0; + virtual void onSetVisible(int show)=0; + virtual int isVisible(int within=0)=0; + + virtual void *getInterface(GUID interface_guid)=0; + + virtual void invalidate()=0; + virtual void invalidateRect(RECT *r)=0; + virtual void invalidateRgn(api_region *r)=0; + virtual void invalidateFrom(ifc_window *who)=0; + virtual void invalidateRectFrom(RECT *r, ifc_window *who)=0; + virtual void invalidateRgnFrom(api_region *r, ifc_window *who)=0; + virtual void validate()=0; + virtual void validateRect(RECT *r)=0; + virtual void validateRgn(api_region *reg)=0; + virtual void onChildInvalidate(api_region *r, ifc_window *who)=0; + + virtual int rootwnd_paintTree(ifc_canvas *canvas, api_region *r)=0; + virtual int paint (Canvas *canvas, api_region *r)=0; + virtual Canvas *getFrameBuffer()=0; + + virtual ifc_window *getParent()=0; + virtual ifc_window *getRootParent()=0; + virtual ifc_window *getDesktopParent()=0; + virtual void setParent(ifc_window *parent)=0; + + virtual int onSiblingInvalidateRgn(api_region *r, ifc_window *who, int who_idx, int my_idx)=0; + virtual int wantSiblingInvalidations()=0; + + virtual int cascadeRepaintFrom(ifc_window *who, int pack=1)=0; + virtual int cascadeRepaintRgnFrom(api_region *reg, ifc_window *who, int pack=1)=0; + virtual int cascadeRepaintRectFrom(RECT *r, ifc_window *who, int pack=1)=0; + virtual int cascadeRepaint(int pack=1)=0; + virtual int cascadeRepaintRgn(api_region *reg, int pack=1)=0; + virtual int cascadeRepaintRect(RECT *r, int pack=1)=0; + virtual void repaint()=0; + + virtual void setClickThrough(int ct)=0; + virtual ifc_window *getBaseTextureWindow()=0; + virtual void rootwnd_renderBaseTexture(ifc_canvas *c, const RECT *r, int alpha=255)=0; +#if defined (_WIN64) + virtual int childNotify(ifc_window* child, int msg, int p1, int p2) = 0; +#else + virtual int childNotify(ifc_window *child, int msg, intptr_t p1, intptr_t p2)=0; +#endif + virtual int getPreferences(int what)=0; + virtual void setPreferences(int what, int v)=0; + + virtual api_region *getRegion()=0; + virtual int getRegionOp()=0; + virtual void setRegionOp(int op)=0; + virtual int isRectRgn()=0; + virtual void setRectRgn(int rrgn)=0; + virtual void invalidateWindowRegion()=0; + virtual api_region *getComposedRegion()=0; + virtual api_region *getSubtractorRegion()=0; + + virtual void setStartHidden(int sh)=0; + virtual double getRenderRatio()=0; + virtual void setRenderRatio(double r)=0; + virtual void setRatioLinked(int l)=0; + virtual int handleRatio()=0; + virtual void resize(int x, int y, int w, int h, int wantcb=1)=0; + virtual void move(int x, int y)=0; + virtual void notifyDeferredMove(int x, int y)=0; + + virtual void getPosition(POINT *pt)=0; + virtual ifc_window *getForwardWnd()=0; + + virtual void registerRootWndChild(ifc_window *child)=0; + virtual void unregisterRootWndChild(ifc_window *child)=0; + virtual ifc_window *findRootWndChild(int x, int y, int only_virtuals=0)=0; + virtual ifc_window *enumRootWndChildren(int _enum)=0; + virtual int getNumRootWndChildren()=0; + + virtual int isVirtual()=0; + + virtual void bringVirtualToFront(ifc_window *w)=0; + virtual void bringVirtualToBack(ifc_window *w)=0; + virtual void bringVirtualAbove(ifc_window *w, ifc_window *b)=0; + virtual void bringVirtualBelow(ifc_window *w, ifc_window *b)=0; + virtual int checkDoubleClick(int button, int x, int y)=0; + + virtual void onCancelCapture()=0; + virtual void cancelCapture()=0; + + virtual void clientToScreen(int *x, int *y)=0; + virtual void screenToClient(int *x, int *y)=0; + + virtual void setVirtualChildCapture(ifc_window *child)=0; + virtual ifc_window *getVirtualChildCapture()=0; + + virtual int ptInRegion(int x, int y)=0; + + virtual int onActivate()=0; + virtual void activate()=0; + virtual int onDeactivate()=0; + virtual int isActive()=0; + virtual int handleTransparency()=0; + virtual int handleDesktopAlpha()=0; + + virtual int getNotifyId()=0; + virtual void setEnabled(int en)=0; + virtual int isEnabled(int within=0)=0; + virtual int onEnable(int e)=0; + + virtual int getPaintingAlpha()=0; + virtual void getAlpha(int *active=NULL, int *inactive=NULL)=0; + virtual void setAlpha(int activealpha, int inactivealpha=-1)=0; + + virtual void setTip(const wchar_t *tip)=0; + virtual int runModal()=0; + virtual void endModal(int retcode)=0; + virtual int wantAutoContextMenu()=0; + virtual int wantActivation()=0; + + virtual void bringToFront()=0; + virtual void bringToBack()=0; + virtual void setFocus()=0; + virtual int gotFocus()=0; + virtual ifc_window *getNextVirtualFocus(ifc_window *w)=0; + virtual void setVirtualChildFocus(ifc_window *w)=0; + virtual void setVirtualTabOrder(ifc_window *w, int a)=0; + virtual int getVirtualTabOrder(ifc_window *w)=0; + virtual int wantFocus()=0; + virtual void setTabOrder(int a)=0; + virtual int getTabOrder()=0; + virtual ifc_window *getTab(int what=TAB_GETCURRENT)=0; + virtual void setAutoTabOrder()=0; + virtual void setVirtualAutoTabOrder(ifc_window *w)=0; + virtual ifc_window *getCurVirtualChildFocus()=0; + virtual void onSetRootFocus(ifc_window *w)=0; + + virtual int onAcceleratorEvent(const wchar_t *name)=0; + + virtual int onChar(unsigned int c)=0; + virtual int onKeyDown(int keycode)=0; + virtual int onKeyUp(int keycode)=0; + virtual int onSysKeyDown(int keyCode, int keyData)=0; + virtual int onSysKeyUp(int keyCode, int keyData)=0; + virtual int onKillFocus()=0; + virtual int onGetFocus()=0; + virtual ifc_dependent *rootwnd_getDependencyPtr()=0; + virtual void addMinMaxEnforcer(ifc_window *w)=0; + virtual void removeMinMaxEnforcer(ifc_window *w)=0; + virtual ifc_window *enumMinMaxEnforcer(int n)=0; + virtual int getNumMinMaxEnforcers()=0; + virtual void signalMinMaxEnforcerChanged()=0; + + virtual int onAction(const wchar_t *action, const wchar_t *param=NULL, int x=-1, int y=-1, intptr_t p1=0, intptr_t p2=0, void *data=NULL, size_t datalen=0, ifc_window *source=NULL)=0; + + virtual void setRenderBaseTexture(int r)=0; + virtual int getRenderBaseTexture()=0; + virtual GuiObject *getGuiObject()=0; // not guaranteed non null + + virtual int getFlag(int flag)=0; + virtual int triggerEvent(int event, intptr_t p1, intptr_t p2)=0; + + + virtual int allowDeactivation()=0; + virtual void setAllowDeactivation(int allow)=0; + + virtual ifc_window *findWindow(const wchar_t *id)=0; + virtual ifc_window *findWindowByInterface(GUID interface_guid)=0; + virtual ifc_window *findWindowByCallback(FindObjectCallback *cb)=0; + virtual ifc_window *findWindowChain(FindObjectCallback *cb, ifc_window *wcaller)=0; + + virtual void focusNext()=0; + virtual void focusPrevious()=0; + + virtual void setWindowTitle(const wchar_t *title) = 0; + virtual ifc_window *enumTab(int i)=0; + virtual int getNumTabs()=0; + + virtual int getFocusOnClick()=0; + virtual void setFocusOnClick(int i)=0; + + virtual void setNoDoubleClicks(int no)=0; + virtual void setNoLeftClicks(int no)=0; + virtual void setNoRightClicks(int no)=0; + virtual void setNoMouseMoves(int no)=0; + virtual void setNoContextMenus(int no)=0; + + virtual int wantDoubleClicks()=0; + virtual int wantLeftClicks()=0; + virtual int wantRightClicks()=0; + virtual int wantMouseMoves()=0; + virtual int wantContextMenus()=0; + + virtual void setDefaultCursor(Cursor *c)=0; + + virtual Accessible *getAccessibleObject(int createifnotexist=1)=0; + virtual int accessibility_getState()=0; + +#ifdef EXPERIMENTAL_INDEPENDENT_AOT + virtual void setAlwaysOnTop(int i)=0; + virtual int getAlwaysOnTop()=0; +#endif + +#ifndef WA3COMPATIBILITY + virtual void setDropTarget(void *dt)=0; + virtual void *getDropTarget()=0; +#endif + + virtual int isMinimized()=0; + virtual void maximize(int axis=MAXIMIZE_WIDTH|MAXIMIZE_HEIGHT)=0; + virtual void restore(int what=RESTORE_X|RESTORE_Y|RESTORE_WIDTH|RESTORE_HEIGHT)=0; + virtual int getRestoredRect(RECT *r)=0; + +protected: + RECVS_DISPATCH; +}; + +#endif |