Hook ISurface function.
1 #include <metahook.h> 2 #include <vgui/ISurface.h> 3 4 using namespace vgui; 5 6 ISurface *g_pSurface = 0; 7 8 void (__fastcall *g_pfnCSurface_Shutdown)(void *pthis, int edx) = 0; 9 void (__fastcall *g_pfnCSurface_RunFrame)(void *pthis, int edx) = 0; 10 VPANEL (__fastcall *g_pfnCSurface_GetEmbeddedPanel)(void *pthis, int edx) = 0; 11 void (__fastcall *g_pfnCSurface_SetEmbeddedPanel)(void *pthis, int edx, VPANEL pPanel) = 0; 12 void (__fastcall *g_pfnCSurface_PushMakeCurrent)(void *pthis, int edx, VPANEL panel, bool useInsets) = 0; 13 void (__fastcall *g_pfnCSurface_PopMakeCurrent)(void *pthis, int edx, VPANEL panel) = 0; 14 void (__fastcall *g_pfnCSurface_DrawSetColor)(void *pthis, int edx, int r, int g, int b, int a) = 0; 15 void (__fastcall *g_pfnCSurface_DrawSetColor2)(void *pthis, int edx, Color col) = 0; 16 void (__fastcall *g_pfnCSurface_DrawFilledRect)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0; 17 void (__fastcall *g_pfnCSurface_DrawOutlinedRect)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0; 18 void (__fastcall *g_pfnCSurface_DrawLine)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0; 19 void (__fastcall *g_pfnCSurface_DrawPolyLine)(void *pthis, int edx, int *px, int *py, int numPoints) = 0; 20 void (__fastcall *g_pfnCSurface_DrawSetTextFont)(void *pthis, int edx, HFont font) = 0; 21 void (__fastcall *g_pfnCSurface_DrawSetTextColor)(void *pthis, int edx, int r, int g, int b, int a) = 0; 22 void (__fastcall *g_pfnCSurface_DrawSetTextColor2)(void *pthis, int edx, Color col) = 0; 23 void (__fastcall *g_pfnCSurface_DrawSetTextPos)(void *pthis, int edx, int x, int y) = 0; 24 void (__fastcall *g_pfnCSurface_DrawGetTextPos)(void *pthis, int edx, int &x, int &y) = 0; 25 void (__fastcall *g_pfnCSurface_DrawPrintText)(void *pthis, int edx, const wchar_t *text, int textLen) = 0; 26 void (__fastcall *g_pfnCSurface_DrawUnicodeChar)(void *pthis, int edx, wchar_t wch) = 0; 27 void (__fastcall *g_pfnCSurface_DrawUnicodeCharAdd)(void *pthis, int edx, wchar_t wch) = 0; 28 void (__fastcall *g_pfnCSurface_DrawFlushText)(void *pthis, int edx) = 0; 29 IHTML* (__fastcall *g_pfnCSurface_CreateHTMLWindow)(void *pthis, int edx, IHTMLEvents *events, VPANEL context) = 0; 30 void (__fastcall *g_pfnCSurface_PaintHTMLWindow)(void *pthis, int edx, IHTML *htmlwin) = 0; 31 void (__fastcall *g_pfnCSurface_DeleteHTMLWindow)(void *pthis, int edx, IHTML *htmlwin) = 0; 32 void (__fastcall *g_pfnCSurface_DrawSetTextureFile)(void *pthis, int edx, int id, const char *filename, int hardwareFilter, bool forceReload) = 0; 33 void (__fastcall *g_pfnCSurface_DrawSetTextureRGBA)(void *pthis, int edx, int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload) = 0; 34 void (__fastcall *g_pfnCSurface_DrawSetTexture)(void *pthis, int edx, int id) = 0; 35 void (__fastcall *g_pfnCSurface_DrawGetTextureSize)(void *pthis, int edx, int id, int &wide, int &tall) = 0; 36 void (__fastcall *g_pfnCSurface_DrawTexturedRect)(void *pthis, int edx, int x0, int y0, int x1, int y1) = 0; 37 bool (__fastcall *g_pfnCSurface_IsTextureIDValid)(void *pthis, int edx, int id) = 0; 38 int (__fastcall *g_pfnCSurface_CreateNewTextureID)(void *pthis, int edx, bool procedural) = 0; 39 void (__fastcall *g_pfnCSurface_GetScreenSize)(void *pthis, int edx, int &wide, int &tall) = 0; 40 void (__fastcall *g_pfnCSurface_SetAsTopMost)(void *pthis, int edx, VPANEL panel, bool state) = 0; 41 void (__fastcall *g_pfnCSurface_BringToFront)(void *pthis, int edx, VPANEL panel) = 0; 42 void (__fastcall *g_pfnCSurface_SetForegroundWindow)(void *pthis, int edx, VPANEL panel) = 0; 43 void (__fastcall *g_pfnCSurface_SetPanelVisible)(void *pthis, int edx, VPANEL panel, bool state) = 0; 44 void (__fastcall *g_pfnCSurface_SetMinimized)(void *pthis, int edx, VPANEL panel, bool state) = 0; 45 bool (__fastcall *g_pfnCSurface_IsMinimized)(void *pthis, int edx, VPANEL panel) = 0; 46 void (__fastcall *g_pfnCSurface_FlashWindow)(void *pthis, int edx, VPANEL panel, bool state) = 0; 47 void (__fastcall *g_pfnCSurface_SetTitle)(void *pthis, int edx, VPANEL panel, const wchar_t *title) = 0; 48 void (__fastcall *g_pfnCSurface_SetAsToolBar)(void *pthis, int edx, VPANEL panel, bool state) = 0; 49 void (__fastcall *g_pfnCSurface_CreatePopup)(void *pthis, int edx, VPANEL panel, bool minimised, bool showTaskbarIcon, bool disabled, bool mouseInput, bool kbInput) = 0; 50 void (__fastcall *g_pfnCSurface_SwapBuffers)(void *pthis, int edx, VPANEL panel) = 0; 51 void (__fastcall *g_pfnCSurface_Invalidate)(void *pthis, int edx, VPANEL panel) = 0; 52 void (__fastcall *g_pfnCSurface_SetCursor)(void *pthis, int edx, HCursor cursor) = 0; 53 bool (__fastcall *g_pfnCSurface_IsCursorVisible)(void *pthis, int edx) = 0; 54 void (__fastcall *g_pfnCSurface_ApplyChanges)(void *pthis, int edx) = 0; 55 bool (__fastcall *g_pfnCSurface_IsWithin)(void *pthis, int edx, int x, int y) = 0; 56 bool (__fastcall *g_pfnCSurface_HasFocus)(void *pthis, int edx) = 0; 57 bool (__fastcall *g_pfnCSurface_SupportsFeature)(void *pthis, int edx, ISurface::SurfaceFeature_e feature) = 0; 58 void (__fastcall *g_pfnCSurface_RestrictPaintToSinglePanel)(void *pthis, int edx, VPANEL panel) = 0; 59 void (__fastcall *g_pfnCSurface_SetModalPanel)(void *pthis, int edx, VPANEL panel) = 0; 60 VPANEL (__fastcall *g_pfnCSurface_GetModalPanel)(void *pthis, int edx) = 0; 61 void (__fastcall *g_pfnCSurface_UnlockCursor)(void *pthis, int edx) = 0; 62 void (__fastcall *g_pfnCSurface_LockCursor)(void *pthis, int edx) = 0; 63 void (__fastcall *g_pfnCSurface_SetTranslateExtendedKeys)(void *pthis, int edx, bool state) = 0; 64 VPANEL (__fastcall *g_pfnCSurface_GetTopmostPopup)(void *pthis, int edx) = 0; 65 void (__fastcall *g_pfnCSurface_SetTopLevelFocus)(void *pthis, int edx, VPANEL panel) = 0; 66 HFont (__fastcall *g_pfnCSurface_CreateFont)(void *pthis, int edx) = 0; 67 bool (__fastcall *g_pfnCSurface_AddGlyphSetToFont)(void *pthis, int edx, HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int lowRange, int highRange) = 0; 68 bool (__fastcall *g_pfnCSurface_AddCustomFontFile)(void *pthis, int edx, const char *fontFileName) = 0; 69 int (__fastcall *g_pfnCSurface_GetFontTall)(void *pthis, int edx, HFont font) = 0; 70 void (__fastcall *g_pfnCSurface_GetCharABCwide)(void *pthis, int edx, HFont font, int ch, int &a, int &b, int &c) = 0; 71 int (__fastcall *g_pfnCSurface_GetCharacterWidth)(void *pthis, int edx, HFont font, int ch) = 0; 72 void (__fastcall *g_pfnCSurface_GetTextSize)(void *pthis, int edx, HFont font, const wchar_t *text, int &wide, int &tall) = 0; 73 VPANEL (__fastcall *g_pfnCSurface_GetNotifyPanel)(void *pthis, int edx) = 0; 74 void (__fastcall *g_pfnCSurface_SetNotifyIcon)(void *pthis, int edx, VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text) = 0; 75 void (__fastcall *g_pfnCSurface_PlaySound)(void *pthis, int edx, const char *fileName) = 0; 76 int (__fastcall *g_pfnCSurface_GetPopupCount)(void *pthis, int edx) = 0; 77 VPANEL (__fastcall *g_pfnCSurface_GetPopup)(void *pthis, int edx, int index) = 0; 78 bool (__fastcall *g_pfnCSurface_ShouldPaintChildPanel)(void *pthis, int edx, VPANEL childPanel) = 0; 79 bool (__fastcall *g_pfnCSurface_RecreateContext)(void *pthis, int edx, VPANEL panel) = 0; 80 void (__fastcall *g_pfnCSurface_AddPanel)(void *pthis, int edx, VPANEL panel) = 0; 81 void (__fastcall *g_pfnCSurface_ReleasePanel)(void *pthis, int edx, VPANEL panel) = 0; 82 void (__fastcall *g_pfnCSurface_MovePopupToFront)(void *pthis, int edx, VPANEL panel) = 0; 83 void (__fastcall *g_pfnCSurface_MovePopupToBack)(void *pthis, int edx, VPANEL panel) = 0; 84 void (__fastcall *g_pfnCSurface_SolveTraverse)(void *pthis, int edx, VPANEL panel, bool forceApplySchemeSettings) = 0; 85 void (__fastcall *g_pfnCSurface_PaintTraverse)(void *pthis, int edx, VPANEL panel) = 0; 86 void (__fastcall *g_pfnCSurface_EnableMouseCapture)(void *pthis, int edx, VPANEL panel, bool state) = 0; 87 void (__fastcall *g_pfnCSurface_GetWorkspaceBounds)(void *pthis, int edx, int &x, int &y, int &wide, int &tall) = 0; 88 void (__fastcall *g_pfnCSurface_GetAbsoluteWindowBounds)(void *pthis, int edx, int &x, int &y, int &wide, int &tall) = 0; 89 void (__fastcall *g_pfnCSurface_GetProportionalBase)(void *pthis, int edx, int &width, int &height) = 0; 90 void (__fastcall *g_pfnCSurface_CalculateMouseVisible)(void *pthis, int edx) = 0; 91 bool (__fastcall *g_pfnCSurface_NeedKBInput)(void *pthis, int edx) = 0; 92 bool (__fastcall *g_pfnCSurface_HasCursorPosFunctions)(void *pthis, int edx) = 0; 93 void (__fastcall *g_pfnCSurface_SurfaceGetCursorPos)(void *pthis, int edx, int &x, int &y) = 0; 94 void (__fastcall *g_pfnCSurface_SurfaceSetCursorPos)(void *pthis, int edx, int x, int y) = 0; 95 void (__fastcall *g_pfnCSurface_DrawTexturedPolygon)(void *pthis, int edx, int *p, int n) = 0; 96 int (__fastcall *g_pfnCSurface_GetFontAscent)(void *pthis, int edx, HFont font, wchar_t wch) = 0; 97 void (__fastcall *g_pfnCSurface_SetAllowHTMLJavaScript)(void *pthis, int edx, bool state) = 0; 98 99 class CSurface : public ISurface 100 { 101 public: 102 void Shutdown(void); 103 void RunFrame(void); 104 VPANEL GetEmbeddedPanel(void); 105 void SetEmbeddedPanel(VPANEL pPanel); 106 void PushMakeCurrent(VPANEL panel, bool useInsets); 107 void PopMakeCurrent(VPANEL panel); 108 void DrawSetColor(int r, int g, int b, int a); 109 void DrawSetColor(Color col); 110 void DrawFilledRect(int x0, int y0, int x1, int y1); 111 void DrawOutlinedRect(int x0, int y0, int x1, int y1); 112 void DrawLine(int x0, int y0, int x1, int y1); 113 void DrawPolyLine(int *px, int *py, int numPoints); 114 void DrawSetTextFont(HFont font); 115 void DrawSetTextColor(int r, int g, int b, int a); 116 void DrawSetTextColor(Color col); 117 void DrawSetTextPos(int x, int y); 118 void DrawGetTextPos(int &x, int &y); 119 void DrawPrintText(const wchar_t *text, int textLen); 120 void DrawUnicodeChar(wchar_t wch); 121 void DrawUnicodeCharAdd(wchar_t wch); 122 void DrawFlushText(void); 123 IHTML *CreateHTMLWindow(IHTMLEvents *events, VPANEL context); 124 void PaintHTMLWindow(IHTML *htmlwin); 125 void DeleteHTMLWindow(IHTML *htmlwin); 126 void DrawSetTextureFile(int id, const char *filename, int hardwareFilter, bool forceReload); 127 void DrawSetTextureRGBA(int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload); 128 void DrawSetTexture(int id); 129 void DrawGetTextureSize(int id, int &wide, int &tall); 130 void DrawTexturedRect(int x0, int y0, int x1, int y1); 131 bool IsTextureIDValid(int id); 132 int CreateNewTextureID(bool procedural = false); 133 void GetScreenSize(int &wide, int &tall); 134 void SetAsTopMost(VPANEL panel, bool state); 135 void BringToFront(VPANEL panel); 136 void SetForegroundWindow(VPANEL panel); 137 void SetPanelVisible(VPANEL panel, bool state); 138 void SetMinimized(VPANEL panel, bool state); 139 bool IsMinimized(VPANEL panel); 140 void FlashWindow(VPANEL panel, bool state); 141 void SetTitle(VPANEL panel, const wchar_t *title); 142 void SetAsToolBar(VPANEL panel, bool state); 143 void CreatePopup(VPANEL panel, bool minimised, bool showTaskbarIcon = true, bool disabled = false, bool mouseInput = true, bool kbInput = true); 144 void SwapBuffers(VPANEL panel); 145 void Invalidate(VPANEL panel); 146 void SetCursor(HCursor cursor); 147 bool IsCursorVisible(void); 148 void ApplyChanges(void); 149 bool IsWithin(int x, int y); 150 bool HasFocus(void); 151 bool SupportsFeature(SurfaceFeature_e feature); 152 void RestrictPaintToSinglePanel(VPANEL panel); 153 void SetModalPanel(VPANEL panel); 154 VPANEL GetModalPanel(void); 155 void UnlockCursor(void); 156 void LockCursor(void); 157 void SetTranslateExtendedKeys(bool state); 158 VPANEL GetTopmostPopup(void); 159 void SetTopLevelFocus(VPANEL panel); 160 HFont CreateFont(void); 161 bool AddGlyphSetToFont(HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int lowRange, int highRange); 162 bool AddCustomFontFile(const char *fontFileName); 163 int GetFontTall(HFont font); 164 void GetCharABCwide(HFont font, int ch, int &a, int &b, int &c); 165 int GetCharacterWidth(HFont font, int ch); 166 void GetTextSize(HFont font, const wchar_t *text, int &wide, int &tall); 167 VPANEL GetNotifyPanel(void); 168 void SetNotifyIcon(VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text); 169 void PlaySound(const char *fileName); 170 int GetPopupCount(void); 171 VPANEL GetPopup(int index); 172 bool ShouldPaintChildPanel(VPANEL childPanel); 173 bool RecreateContext(VPANEL panel); 174 void AddPanel(VPANEL panel); 175 void ReleasePanel(VPANEL panel); 176 void MovePopupToFront(VPANEL panel); 177 void MovePopupToBack(VPANEL panel); 178 void SolveTraverse(VPANEL panel, bool forceApplySchemeSettings = false); 179 void PaintTraverse(VPANEL panel); 180 void EnableMouseCapture(VPANEL panel, bool state); 181 void GetWorkspaceBounds(int &x, int &y, int &wide, int &tall); 182 void GetAbsoluteWindowBounds(int &x, int &y, int &wide, int &tall); 183 void GetProportionalBase(int &width, int &height); 184 void CalculateMouseVisible(void); 185 bool NeedKBInput(void); 186 bool HasCursorPosFunctions(void); 187 void SurfaceGetCursorPos(int &x, int &y); 188 void SurfaceSetCursorPos(int x, int y); 189 void DrawTexturedPolygon(int *p, int n); 190 int GetFontAscent(HFont font, wchar_t wch); 191 void SetAllowHTMLJavaScript(bool state); 192 }; 193 194 void CSurface::Shutdown(void) 195 { 196 return g_pfnCSurface_Shutdown(this, 0); 197 } 198 199 void CSurface::RunFrame(void) 200 { 201 return g_pfnCSurface_RunFrame(this, 0); 202 } 203 204 VPANEL CSurface::GetEmbeddedPanel(void) 205 { 206 return g_pfnCSurface_GetEmbeddedPanel(this, 0); 207 } 208 209 void CSurface::SetEmbeddedPanel(VPANEL pPanel) 210 { 211 return g_pfnCSurface_SetEmbeddedPanel(this, 0, pPanel); 212 } 213 214 void CSurface::PushMakeCurrent(VPANEL panel, bool useInsets) 215 { 216 return g_pfnCSurface_PushMakeCurrent(this, 0, panel, useInsets); 217 } 218 219 void CSurface::PopMakeCurrent(VPANEL panel) 220 { 221 return g_pfnCSurface_PopMakeCurrent(this, 0, panel); 222 } 223 224 void CSurface::DrawSetColor(int r, int g, int b, int a) 225 { 226 return g_pfnCSurface_DrawSetColor(this, 0, r, g, b, a); 227 } 228 229 void CSurface::DrawSetColor(Color col) 230 { 231 return g_pfnCSurface_DrawSetColor2(this, 0, col); 232 } 233 234 void CSurface::DrawFilledRect(int x0, int y0, int x1, int y1) 235 { 236 return g_pfnCSurface_DrawFilledRect(this, 0, x0, y0, x1, y1); 237 } 238 239 void CSurface::DrawOutlinedRect(int x0, int y0, int x1, int y1) 240 { 241 return g_pfnCSurface_DrawOutlinedRect(this, 0, x0, y0, x1, y1); 242 } 243 244 void CSurface::DrawLine(int x0, int y0, int x1, int y1) 245 { 246 return g_pfnCSurface_DrawLine(this, 0, x0, y0, x1, y1); 247 } 248 249 void CSurface::DrawPolyLine(int *px, int *py, int numPoints) 250 { 251 return g_pfnCSurface_DrawPolyLine(this, 0, px, py, numPoints); 252 } 253 254 void CSurface::DrawSetTextFont(HFont font) 255 { 256 return g_pfnCSurface_DrawSetTextFont(this, 0, font); 257 } 258 259 void CSurface::DrawSetTextColor(int r, int g, int b, int a) 260 { 261 return g_pfnCSurface_DrawSetTextColor(this, 0, r, g, b, a); 262 } 263 264 void CSurface::DrawSetTextColor(Color col) 265 { 266 return g_pfnCSurface_DrawSetTextColor2(this, 0, col); 267 } 268 269 void CSurface::DrawSetTextPos(int x, int y) 270 { 271 return g_pfnCSurface_DrawSetTextPos(this, 0, x, y); 272 } 273 274 void CSurface::DrawGetTextPos(int &x, int &y) 275 { 276 return g_pfnCSurface_DrawGetTextPos(this, 0, x, y); 277 } 278 279 void CSurface::DrawPrintText(const wchar_t *text, int textLen) 280 { 281 return g_pfnCSurface_DrawPrintText(this, 0, text, textLen); 282 } 283 284 void CSurface::DrawUnicodeChar(wchar_t wch) 285 { 286 return g_pfnCSurface_DrawUnicodeChar(this, 0, wch); 287 } 288 289 void CSurface::DrawUnicodeCharAdd(wchar_t wch) 290 { 291 return g_pfnCSurface_DrawUnicodeCharAdd(this, 0, wch); 292 } 293 294 void CSurface::DrawFlushText(void) 295 { 296 return g_pfnCSurface_DrawFlushText(this, 0); 297 } 298 299 IHTML* CSurface::CreateHTMLWindow(IHTMLEvents *events, VPANEL context) 300 { 301 return g_pfnCSurface_CreateHTMLWindow(this, 0, events, context); 302 } 303 304 void CSurface::PaintHTMLWindow(IHTML *htmlwin) 305 { 306 return g_pfnCSurface_PaintHTMLWindow(this, 0, htmlwin); 307 } 308 309 void CSurface::DeleteHTMLWindow(IHTML *htmlwin) 310 { 311 return g_pfnCSurface_DeleteHTMLWindow(this, 0, htmlwin); 312 } 313 314 void CSurface::DrawSetTextureFile(int id, const char *filename, int hardwareFilter, bool forceReload) 315 { 316 return g_pfnCSurface_DrawSetTextureFile(this, 0, id, filename, hardwareFilter, forceReload); 317 } 318 319 void CSurface::DrawSetTextureRGBA(int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload) 320 { 321 return g_pfnCSurface_DrawSetTextureRGBA(this, 0, id, rgba, wide, tall, hardwareFilter, forceReload); 322 } 323 324 void CSurface::DrawSetTexture(int id) 325 { 326 return g_pfnCSurface_DrawSetTexture(this, 0, id); 327 } 328 329 void CSurface::DrawGetTextureSize(int id, int &wide, int &tall) 330 { 331 return g_pfnCSurface_DrawGetTextureSize(this, 0, id, wide, tall); 332 } 333 334 void CSurface::DrawTexturedRect(int x0, int y0, int x1, int y1) 335 { 336 return g_pfnCSurface_DrawTexturedRect(this, 0, x0, y0, x1, y1); 337 } 338 339 bool CSurface::IsTextureIDValid(int id) 340 { 341 return g_pfnCSurface_IsTextureIDValid(this, 0, id); 342 } 343 344 int CSurface::CreateNewTextureID(bool procedural) 345 { 346 return g_pfnCSurface_CreateNewTextureID(this, 0, procedural); 347 } 348 349 void CSurface::GetScreenSize(int &wide, int &tall) 350 { 351 return g_pfnCSurface_GetScreenSize(this, 0, wide, tall); 352 } 353 354 void CSurface::SetAsTopMost(VPANEL panel, bool state) 355 { 356 return g_pfnCSurface_SetAsTopMost(this, 0, panel, state); 357 } 358 359 void CSurface::BringToFront(VPANEL panel) 360 { 361 return g_pfnCSurface_BringToFront(this, 0, panel); 362 } 363 364 void CSurface::SetForegroundWindow(VPANEL panel) 365 { 366 return g_pfnCSurface_SetForegroundWindow(this, 0, panel); 367 } 368 369 void CSurface::SetPanelVisible(VPANEL panel, bool state) 370 { 371 return g_pfnCSurface_SetPanelVisible(this, 0, panel, state); 372 } 373 374 void CSurface::SetMinimized(VPANEL panel, bool state) 375 { 376 return g_pfnCSurface_SetMinimized(this, 0, panel, state); 377 } 378 379 bool CSurface::IsMinimized(VPANEL panel) 380 { 381 return g_pfnCSurface_IsMinimized(this, 0, panel); 382 } 383 384 void CSurface::FlashWindow(VPANEL panel, bool state) 385 { 386 return g_pfnCSurface_FlashWindow(this, 0, panel, state); 387 } 388 389 void CSurface::SetTitle(VPANEL panel, const wchar_t *title) 390 { 391 return g_pfnCSurface_SetTitle(this, 0, panel, title); 392 } 393 394 void CSurface::SetAsToolBar(VPANEL panel, bool state) 395 { 396 return g_pfnCSurface_SetAsToolBar(this, 0, panel, state); 397 } 398 399 void CSurface::CreatePopup(VPANEL panel, bool minimised, bool showTaskbarIcon, bool disabled, bool mouseInput, bool kbInput) 400 { 401 return g_pfnCSurface_CreatePopup(this, 0, panel, minimised, showTaskbarIcon, disabled, mouseInput, kbInput); 402 } 403 404 void CSurface::SwapBuffers(VPANEL panel) 405 { 406 return g_pfnCSurface_SwapBuffers(this, 0, panel); 407 } 408 409 void CSurface::Invalidate(VPANEL panel) 410 { 411 return g_pfnCSurface_Invalidate(this, 0, panel); 412 } 413 414 void CSurface::SetCursor(HCursor cursor) 415 { 416 return g_pfnCSurface_SetCursor(this, 0, cursor); 417 } 418 419 bool CSurface::IsCursorVisible(void) 420 { 421 return g_pfnCSurface_IsCursorVisible(this, 0); 422 } 423 424 void CSurface::ApplyChanges(void) 425 { 426 return g_pfnCSurface_ApplyChanges(this, 0); 427 } 428 429 bool CSurface::IsWithin(int x, int y) 430 { 431 return g_pfnCSurface_IsWithin(this, 0, x, y); 432 } 433 434 bool CSurface::HasFocus(void) 435 { 436 return g_pfnCSurface_HasFocus(this, 0); 437 } 438 439 bool CSurface::SupportsFeature(SurfaceFeature_e feature) 440 { 441 return g_pfnCSurface_SupportsFeature(this, 0, feature); 442 } 443 444 void CSurface::RestrictPaintToSinglePanel(VPANEL panel) 445 { 446 return g_pfnCSurface_RestrictPaintToSinglePanel(this, 0, panel); 447 } 448 449 void CSurface::SetModalPanel(VPANEL panel) 450 { 451 return g_pfnCSurface_SetModalPanel(this, 0, panel); 452 } 453 454 VPANEL CSurface::GetModalPanel(void) 455 { 456 return g_pfnCSurface_GetModalPanel(this, 0); 457 } 458 459 void CSurface::UnlockCursor(void) 460 { 461 return g_pfnCSurface_UnlockCursor(this, 0); 462 } 463 464 void CSurface::LockCursor(void) 465 { 466 return g_pfnCSurface_LockCursor(this, 0); 467 } 468 469 void CSurface::SetTranslateExtendedKeys(bool state) 470 { 471 return g_pfnCSurface_SetTranslateExtendedKeys(this, 0, state); 472 } 473 474 VPANEL CSurface::GetTopmostPopup(void) 475 { 476 return g_pfnCSurface_GetTopmostPopup(this, 0); 477 } 478 479 void CSurface::SetTopLevelFocus(VPANEL panel) 480 { 481 return g_pfnCSurface_SetTopLevelFocus(this, 0, panel); 482 } 483 484 HFont CSurface::CreateFont(void) 485 { 486 return g_pfnCSurface_CreateFont(this, 0); 487 } 488 489 bool CSurface::AddGlyphSetToFont(HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags, int lowRange, int highRange) 490 { 491 return g_pfnCSurface_AddGlyphSetToFont(this, 0, font, windowsFontName, tall, weight, blur, scanlines, flags, lowRange, highRange); 492 } 493 494 bool CSurface::AddCustomFontFile(const char *fontFileName) 495 { 496 return g_pfnCSurface_AddCustomFontFile(this, 0, fontFileName); 497 } 498 499 int CSurface::GetFontTall(HFont font) 500 { 501 return g_pfnCSurface_GetFontTall(this, 0, font); 502 } 503 504 void CSurface::GetCharABCwide(HFont font, int ch, int &a, int &b, int &c) 505 { 506 return g_pfnCSurface_GetCharABCwide(this, 0, font, ch, a, b, c); 507 } 508 509 int CSurface::GetCharacterWidth(HFont font, int ch) 510 { 511 return g_pfnCSurface_GetCharacterWidth(this, 0, font, ch); 512 } 513 514 void CSurface::GetTextSize(HFont font, const wchar_t *text, int &wide, int &tall) 515 { 516 return g_pfnCSurface_GetTextSize(this, 0, font, text, wide, tall); 517 } 518 519 VPANEL CSurface::GetNotifyPanel(void) 520 { 521 return g_pfnCSurface_GetNotifyPanel(this, 0); 522 } 523 524 void CSurface::SetNotifyIcon(VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text) 525 { 526 return g_pfnCSurface_SetNotifyIcon(this, 0, context, icon, panelToReceiveMessages, text); 527 } 528 529 void CSurface::PlaySound(const char *fileName) 530 { 531 return g_pfnCSurface_PlaySound(this, 0, fileName); 532 } 533 534 int CSurface::GetPopupCount(void) 535 { 536 return g_pfnCSurface_GetPopupCount(this, 0); 537 } 538 539 VPANEL CSurface::GetPopup(int index) 540 { 541 return g_pfnCSurface_GetPopup(this, 0, index); 542 } 543 544 bool CSurface::ShouldPaintChildPanel(VPANEL childPanel) 545 { 546 return g_pfnCSurface_ShouldPaintChildPanel(this, 0, childPanel); 547 } 548 549 bool CSurface::RecreateContext(VPANEL panel) 550 { 551 return g_pfnCSurface_RecreateContext(this, 0, panel); 552 } 553 554 void CSurface::AddPanel(VPANEL panel) 555 { 556 return g_pfnCSurface_AddPanel(this, 0, panel); 557 } 558 559 void CSurface::ReleasePanel(VPANEL panel) 560 { 561 return g_pfnCSurface_ReleasePanel(this, 0, panel); 562 } 563 564 void CSurface::MovePopupToFront(VPANEL panel) 565 { 566 return g_pfnCSurface_MovePopupToFront(this, 0, panel); 567 } 568 569 void CSurface::MovePopupToBack(VPANEL panel) 570 { 571 return g_pfnCSurface_MovePopupToBack(this, 0, panel); 572 } 573 574 void CSurface::SolveTraverse(VPANEL panel, bool forceApplySchemeSettings) 575 { 576 return g_pfnCSurface_SolveTraverse(this, 0, panel, forceApplySchemeSettings); 577 } 578 579 void CSurface::PaintTraverse(VPANEL panel) 580 { 581 return g_pfnCSurface_PaintTraverse(this, 0, panel); 582 } 583 584 void CSurface::EnableMouseCapture(VPANEL panel, bool state) 585 { 586 return g_pfnCSurface_EnableMouseCapture(this, 0, panel, state); 587 } 588 589 void CSurface::GetWorkspaceBounds(int &x, int &y, int &wide, int &tall) 590 { 591 return g_pfnCSurface_GetWorkspaceBounds(this, 0, x, y, wide, tall); 592 } 593 594 void CSurface::GetAbsoluteWindowBounds(int &x, int &y, int &wide, int &tall) 595 { 596 return g_pfnCSurface_GetAbsoluteWindowBounds(this, 0, x, y, wide, tall); 597 } 598 599 void CSurface::GetProportionalBase(int &width, int &height) 600 { 601 return g_pfnCSurface_GetProportionalBase(this, 0, width, height); 602 } 603 604 void CSurface::CalculateMouseVisible(void) 605 { 606 return g_pfnCSurface_CalculateMouseVisible(this, 0); 607 } 608 609 bool CSurface::NeedKBInput(void) 610 { 611 return g_pfnCSurface_NeedKBInput(this, 0); 612 } 613 614 bool CSurface::HasCursorPosFunctions(void) 615 { 616 return g_pfnCSurface_HasCursorPosFunctions(this, 0); 617 } 618 619 void CSurface::SurfaceGetCursorPos(int &x, int &y) 620 { 621 return g_pfnCSurface_SurfaceGetCursorPos(this, 0, x, y); 622 } 623 624 void CSurface::SurfaceSetCursorPos(int x, int y) 625 { 626 return g_pfnCSurface_SurfaceSetCursorPos(this, 0, x, y); 627 } 628 629 void CSurface::DrawTexturedPolygon(int *p, int n) 630 { 631 return g_pfnCSurface_DrawTexturedPolygon(this, 0, p, n); 632 } 633 634 int CSurface::GetFontAscent(HFont font, wchar_t wch) 635 { 636 return g_pfnCSurface_GetFontAscent(this, 0, font, wch); 637 } 638 639 void CSurface::SetAllowHTMLJavaScript(bool state) 640 { 641 return g_pfnCSurface_SetAllowHTMLJavaScript(this, 0, state); 642 } 643 644 void Surface_InstallHook(void) 645 { 646 CreateInterfaceFn EngineCreateInterface = g_pMetaHookAPI->GetEngineFactory(); 647 g_pSurface = (ISurface *)EngineCreateInterface(VGUI_SURFACE_INTERFACE_VERSION, 0); 648 649 CSurface Surface; 650 DWORD *pVFTable = *(DWORD **)&Surface; 651 652 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 1, (void *)pVFTable[ 1], (void *&)g_pfnCSurface_Shutdown); 653 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 2, (void *)pVFTable[ 2], (void *&)g_pfnCSurface_RunFrame); 654 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 3, (void *)pVFTable[ 3], (void *&)g_pfnCSurface_GetEmbeddedPanel); 655 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 4, (void *)pVFTable[ 4], (void *&)g_pfnCSurface_SetEmbeddedPanel); 656 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 5, (void *)pVFTable[ 5], (void *&)g_pfnCSurface_PushMakeCurrent); 657 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 6, (void *)pVFTable[ 6], (void *&)g_pfnCSurface_PopMakeCurrent); 658 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 7, (void *)pVFTable[ 7], (void *&)g_pfnCSurface_DrawSetColor2); 659 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 8, (void *)pVFTable[ 8], (void *&)g_pfnCSurface_DrawSetColor); 660 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 9, (void *)pVFTable[ 9], (void *&)g_pfnCSurface_DrawFilledRect); 661 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 10, (void *)pVFTable[10], (void *&)g_pfnCSurface_DrawOutlinedRect); 662 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 11, (void *)pVFTable[11], (void *&)g_pfnCSurface_DrawLine); 663 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 12, (void *)pVFTable[12], (void *&)g_pfnCSurface_DrawPolyLine); 664 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 13, (void *)pVFTable[13], (void *&)g_pfnCSurface_DrawSetTextFont); 665 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 14, (void *)pVFTable[14], (void *&)g_pfnCSurface_DrawSetTextColor2); 666 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 15, (void *)pVFTable[15], (void *&)g_pfnCSurface_DrawSetTextColor); 667 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 16, (void *)pVFTable[16], (void *&)g_pfnCSurface_DrawSetTextPos); 668 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 17, (void *)pVFTable[17], (void *&)g_pfnCSurface_DrawGetTextPos); 669 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 18, (void *)pVFTable[18], (void *&)g_pfnCSurface_DrawPrintText); 670 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 19, (void *)pVFTable[19], (void *&)g_pfnCSurface_DrawUnicodeChar); 671 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 20, (void *)pVFTable[20], (void *&)g_pfnCSurface_DrawUnicodeCharAdd); 672 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 21, (void *)pVFTable[21], (void *&)g_pfnCSurface_DrawFlushText); 673 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 22, (void *)pVFTable[22], (void *&)g_pfnCSurface_CreateHTMLWindow); 674 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 23, (void *)pVFTable[23], (void *&)g_pfnCSurface_PaintHTMLWindow); 675 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 24, (void *)pVFTable[24], (void *&)g_pfnCSurface_DeleteHTMLWindow); 676 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 25, (void *)pVFTable[25], (void *&)g_pfnCSurface_DrawSetTextureFile); 677 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 26, (void *)pVFTable[26], (void *&)g_pfnCSurface_DrawSetTextureRGBA); 678 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 27, (void *)pVFTable[27], (void *&)g_pfnCSurface_DrawSetTexture); 679 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 28, (void *)pVFTable[28], (void *&)g_pfnCSurface_DrawGetTextureSize); 680 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 29, (void *)pVFTable[29], (void *&)g_pfnCSurface_DrawTexturedRect); 681 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 30, (void *)pVFTable[30], (void *&)g_pfnCSurface_IsTextureIDValid); 682 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 31, (void *)pVFTable[31], (void *&)g_pfnCSurface_CreateNewTextureID); 683 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 32, (void *)pVFTable[32], (void *&)g_pfnCSurface_GetScreenSize); 684 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 33, (void *)pVFTable[33], (void *&)g_pfnCSurface_SetAsTopMost); 685 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 34, (void *)pVFTable[34], (void *&)g_pfnCSurface_BringToFront); 686 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 35, (void *)pVFTable[35], (void *&)g_pfnCSurface_SetForegroundWindow); 687 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 36, (void *)pVFTable[36], (void *&)g_pfnCSurface_SetPanelVisible); 688 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 37, (void *)pVFTable[37], (void *&)g_pfnCSurface_SetMinimized); 689 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 38, (void *)pVFTable[38], (void *&)g_pfnCSurface_IsMinimized); 690 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 39, (void *)pVFTable[39], (void *&)g_pfnCSurface_FlashWindow); 691 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 40, (void *)pVFTable[40], (void *&)g_pfnCSurface_SetTitle); 692 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 41, (void *)pVFTable[41], (void *&)g_pfnCSurface_SetAsToolBar); 693 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 42, (void *)pVFTable[42], (void *&)g_pfnCSurface_CreatePopup); 694 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 43, (void *)pVFTable[43], (void *&)g_pfnCSurface_SwapBuffers); 695 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 44, (void *)pVFTable[44], (void *&)g_pfnCSurface_Invalidate); 696 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 45, (void *)pVFTable[45], (void *&)g_pfnCSurface_SetCursor); 697 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 46, (void *)pVFTable[46], (void *&)g_pfnCSurface_IsCursorVisible); 698 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 47, (void *)pVFTable[47], (void *&)g_pfnCSurface_ApplyChanges); 699 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 48, (void *)pVFTable[48], (void *&)g_pfnCSurface_IsWithin); 700 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 49, (void *)pVFTable[49], (void *&)g_pfnCSurface_HasFocus); 701 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 50, (void *)pVFTable[50], (void *&)g_pfnCSurface_SupportsFeature); 702 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 51, (void *)pVFTable[51], (void *&)g_pfnCSurface_RestrictPaintToSinglePanel); 703 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 52, (void *)pVFTable[52], (void *&)g_pfnCSurface_SetModalPanel); 704 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 53, (void *)pVFTable[53], (void *&)g_pfnCSurface_GetModalPanel); 705 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 54, (void *)pVFTable[54], (void *&)g_pfnCSurface_UnlockCursor); 706 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 55, (void *)pVFTable[55], (void *&)g_pfnCSurface_LockCursor); 707 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 56, (void *)pVFTable[56], (void *&)g_pfnCSurface_SetTranslateExtendedKeys); 708 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 57, (void *)pVFTable[57], (void *&)g_pfnCSurface_GetTopmostPopup); 709 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 58, (void *)pVFTable[58], (void *&)g_pfnCSurface_SetTopLevelFocus); 710 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 59, (void *)pVFTable[59], (void *&)g_pfnCSurface_CreateFont); 711 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 60, (void *)pVFTable[60], (void *&)g_pfnCSurface_AddGlyphSetToFont); 712 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 61, (void *)pVFTable[61], (void *&)g_pfnCSurface_AddCustomFontFile); 713 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 62, (void *)pVFTable[62], (void *&)g_pfnCSurface_GetFontTall); 714 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 63, (void *)pVFTable[63], (void *&)g_pfnCSurface_GetCharABCwide); 715 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 64, (void *)pVFTable[64], (void *&)g_pfnCSurface_GetCharacterWidth); 716 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 65, (void *)pVFTable[65], (void *&)g_pfnCSurface_GetTextSize); 717 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 66, (void *)pVFTable[66], (void *&)g_pfnCSurface_GetNotifyPanel); 718 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 67, (void *)pVFTable[67], (void *&)g_pfnCSurface_SetNotifyIcon); 719 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 68, (void *)pVFTable[68], (void *&)g_pfnCSurface_PlaySound); 720 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 69, (void *)pVFTable[69], (void *&)g_pfnCSurface_GetPopupCount); 721 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 70, (void *)pVFTable[70], (void *&)g_pfnCSurface_GetPopup); 722 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 71, (void *)pVFTable[71], (void *&)g_pfnCSurface_ShouldPaintChildPanel); 723 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 72, (void *)pVFTable[72], (void *&)g_pfnCSurface_RecreateContext); 724 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 73, (void *)pVFTable[73], (void *&)g_pfnCSurface_AddPanel); 725 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 74, (void *)pVFTable[74], (void *&)g_pfnCSurface_ReleasePanel); 726 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 75, (void *)pVFTable[75], (void *&)g_pfnCSurface_MovePopupToFront); 727 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 76, (void *)pVFTable[76], (void *&)g_pfnCSurface_MovePopupToBack); 728 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 77, (void *)pVFTable[77], (void *&)g_pfnCSurface_SolveTraverse); 729 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 78, (void *)pVFTable[78], (void *&)g_pfnCSurface_PaintTraverse); 730 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 79, (void *)pVFTable[79], (void *&)g_pfnCSurface_EnableMouseCapture); 731 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 80, (void *)pVFTable[80], (void *&)g_pfnCSurface_GetWorkspaceBounds); 732 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 81, (void *)pVFTable[81], (void *&)g_pfnCSurface_GetAbsoluteWindowBounds); 733 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 82, (void *)pVFTable[82], (void *&)g_pfnCSurface_GetProportionalBase); 734 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 83, (void *)pVFTable[83], (void *&)g_pfnCSurface_CalculateMouseVisible); 735 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 84, (void *)pVFTable[84], (void *&)g_pfnCSurface_NeedKBInput); 736 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 85, (void *)pVFTable[85], (void *&)g_pfnCSurface_HasCursorPosFunctions); 737 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 86, (void *)pVFTable[86], (void *&)g_pfnCSurface_SurfaceGetCursorPos); 738 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 87, (void *)pVFTable[87], (void *&)g_pfnCSurface_SurfaceSetCursorPos); 739 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 88, (void *)pVFTable[88], (void *&)g_pfnCSurface_DrawTexturedPolygon); 740 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 89, (void *)pVFTable[89], (void *&)g_pfnCSurface_GetFontAscent); 741 g_pMetaHookAPI->VFTHook(g_pSurface, 0, 90, (void *)pVFTable[90], (void *&)g_pfnCSurface_SetAllowHTMLJavaScript); 742 }