20 BEGIN_IGRAPHICS_NAMESPACE
33 void SetWinModuleHandle(
void* pInstance)
override { mHInstance = (HINSTANCE) pInstance; }
34 void* GetWinModuleHandle()
override {
return mHInstance; }
36 void ForceEndUserEdit()
override;
37 float GetPlatformWindowScale()
const override {
return GetScreenScale(); }
39 void PlatformResize(
bool parentHasResized)
override;
42 void DrawResize()
override;
45 void CheckTabletInput(UINT msg);
46 void DestroyEditWindow();
48 void HideMouseCursor(
bool hide,
bool lock)
override;
49 void MoveMouseCursor(
float x,
float y)
override;
50 ECursor SetMouseCursor(ECursor cursorType)
override;
52 void GetMouseLocation(
float& x,
float&y)
const override;
54 EMsgBoxResult ShowMessageBox(
const char* str,
const char* caption, EMsgBoxType type, IMsgBoxCompletionHanderFunc completionHandler)
override;
56 void* OpenWindow(
void* pParent)
override;
57 void CloseWindow()
override;
58 bool WindowIsOpen()
override {
return (mPlugWnd); }
60 void UpdateTooltips()
override {}
62 bool RevealPathInExplorerOrFinder(WDL_String& path,
bool select)
override;
63 void PromptForFile(WDL_String& fileName, WDL_String& path, EFileAction action,
const char* ext)
override;
64 void PromptForDirectory(WDL_String& dir)
override;
65 bool PromptForColor(
IColor& color,
const char* str, IColorPickerHandlerFunc func)
override;
68 HMENU CreateMenu(
IPopupMenu& menu,
long* pOffsetIdx);
70 bool OpenURL(
const char* url,
const char* msgWindowTitle,
const char* confirmMsg,
const char* errMsgOnFailure);
72 void* GetWindow()
override {
return mPlugWnd; }
73 HWND GetParentWindow()
const {
return mParentWnd; }
75 void SetMainWndClassName(
const char* name) { mMainWndClassName.Set(name); }
77 IRECT GetWindowRECT();
78 void SetWindowTitle(
const char* str);
80 const char* GetPlatformAPIStr()
override {
return "win32"; };
82 bool GetTextFromClipboard(WDL_String& str)
override;
83 bool SetTextInClipboard(
const char* str)
override;
85 bool PlatformSupportsMultiTouch()
const override;
88 static LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
89 static LRESULT CALLBACK ParamEditProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
90 static BOOL CALLBACK FindMainWindow(HWND hWnd, LPARAM lParam);
96 void CreatePlatformTextEntry(
int paramIdx,
const IText& text,
const IRECT& bounds,
int length,
const char* str)
override;
98 void SetTooltip(
const char* tooltip);
106 void OnDisplayTimer(
int vBlankCount = 0);
117 PlatformFontPtr LoadPlatformFont(
const char* fontID,
const char* fileNameOrResID)
override;
118 PlatformFontPtr LoadPlatformFont(
const char* fontID,
const char* fontName, ETextStyle style)
override;
119 PlatformFontPtr LoadPlatformFont(
const char* fontID,
void* pData,
int dataSize)
override;
120 void CachePlatformFont(
const char* fontID,
const PlatformFontPtr& font)
override;
122 inline IMouseInfo GetMouseInfo(LPARAM lParam, WPARAM wParam);
123 inline IMouseInfo GetMouseInfoDeltas(
float& dX,
float& dY, LPARAM lParam, WPARAM wParam);
124 bool MouseCursorIsLocked();
127 void CreateGLContext();
128 void DestroyGLContext();
129 void ActivateGLContext()
override;
130 void DeactivateGLContext()
override;
131 HGLRC mHGLRC =
nullptr;
132 HGLRC mStartHGLRC =
nullptr;
133 HDC mStartHDC =
nullptr;
136 HINSTANCE mHInstance =
nullptr;
137 HWND mPlugWnd =
nullptr;
138 HWND mParamEditWnd =
nullptr;
139 HWND mTooltipWnd =
nullptr;
140 HWND mParentWnd =
nullptr;
141 HWND mMainWnd =
nullptr;
142 WNDPROC mDefEditProc =
nullptr;
143 HFONT mEditFont =
nullptr;
146 void StartVBlankThread(HWND hWnd);
147 void StopVBlankThread();
149 HWND mVBlankWindow = 0;
150 volatile bool mVBlankShutdown =
false;
151 HANDLE mVBlankThread = INVALID_HANDLE_VALUE;
152 volatile DWORD mVBlankCount = 0;
153 int mVBlankSkipUntil = 0;
154 bool mVSYNCEnabled =
false;
156 const IParam* mEditParam =
nullptr;
160 EParamEditMsg mParamEditMsg = kNone;
161 bool mShowingTooltip =
false;
162 float mHiddenCursorX = 0.f;
163 float mHiddenCursorY = 0.f;
164 int mTooltipIdx = -1;
166 WDL_String mMainWndClassName;
168 static StaticStorage<InstalledFont> sPlatformFontCache;
169 static StaticStorage<HFontHolder> sHFontCache;
171 std::unordered_map<ITouchID, IMouseInfo> mDeltaCapture;
174 END_IGRAPHICS_NAMESPACE
Used to manage a rectangular area, independent of draw class/platform.
IGraphics platform class for Windows.
Used for choosing a drawing backend.
IPlug's parameter class.
Used to manage color data, independent of draw class/platform.
An editor delegate base class for a SOMETHING that uses IGraphics for it's UI.
IText is used to manage font and text/text entry style for a piece of text on the UI...
Used to group mouse coordinates with mouse modifier information.