Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
4.5 KiB

  1. //===== Copyright � 1996-2005, Valve Corporation, All rights reserved. ======//
  2. //
  3. // Purpose: An extra interface implemented by the material system
  4. // implementation of vgui::ISurface
  5. //
  6. // $Revision: $
  7. // $NoKeywords: $
  8. //===========================================================================//
  9. #ifndef IVGUIRENDERSURFACE_H
  10. #define IVGUIRENDERSURFACE_H
  11. #ifdef _WIN32
  12. #pragma once
  13. #endif
  14. #include <vgui/VGUI.h>
  15. #include "vgui/ISurface.h"
  16. //-----------------------------------------------------------------------------
  17. // Forward declarations
  18. //-----------------------------------------------------------------------------
  19. class VMatrix;
  20. class IMaterial2;
  21. struct InputEvent_t;
  22. FORWARD_DECLARE_HANDLE( InputContextHandle_t );
  23. //-----------------------------------------------------------------------------
  24. // Callbacks for mouse getting + setting
  25. //-----------------------------------------------------------------------------
  26. typedef void (*GetMouseCallback_t)(int &x, int &y);
  27. typedef void (*SetMouseCallback_t)(int x, int y);
  28. //-----------------------------------------------------------------------------
  29. // Callbacks for sound playing
  30. //-----------------------------------------------------------------------------
  31. typedef void (*PlaySoundFunc_t)(const char *pFileName);
  32. //-----------------------------------------------------------------------------
  33. //
  34. // An extra interface implemented by the material system implementation of vgui::ISurface
  35. //
  36. //-----------------------------------------------------------------------------
  37. class IVGuiRenderSurface : public vgui::ISurface
  38. {
  39. public:
  40. // If the app drives the input (like the engine needs to do for VCR mode),
  41. // it can call this, setting bLetAppDriveInput to true and call
  42. // HandleInputEvent for the input events.
  43. virtual void SetAppDrivesInput( bool bLetAppDriveInput ) = 0;
  44. // Tells the surface to ignore windows messages
  45. virtual void EnableWindowsMessages( bool bEnable ) = 0;
  46. // Starts, ends 3D painting
  47. // NOTE: These methods should only be called from within the paint()
  48. // method of a panel.
  49. virtual void Begin3DPaint( int iLeft, int iTop, int iRight, int iBottom ) = 0;
  50. virtual void End3DPaint() = 0;
  51. // NOTE: This also should only be called from within the paint()
  52. // method of a panel. Use it to disable clipping for the rendering
  53. // of this panel.
  54. virtual void DisableClipping( bool bDisable ) = 0;
  55. // Prevents vgui from changing the cursor
  56. virtual bool IsCursorLocked() const = 0;
  57. // Sets the mouse get + set callbacks
  58. virtual void SetMouseCallbacks( GetMouseCallback_t getFunc, SetMouseCallback_t setFunc ) = 0;
  59. // Installs a function to play sounds
  60. virtual void InstallPlaySoundFunc( PlaySoundFunc_t soundFunc ) = 0;
  61. // Some drawing methods that cannot be accomplished under Win32
  62. virtual void DrawColoredCircle( int centerx, int centery, float radius, int r, int g, int b, int a ) = 0;
  63. virtual void DrawColoredText( vgui::HFont font, int x, int y, int r, int g, int b, int a, const char *fmt, ... ) = 0;
  64. // Draws text with current font at position and wordwrapped to the rect using color values specified
  65. virtual void DrawColoredTextRect( vgui::HFont font, int x, int y, int w, int h, int r, int g, int b, int a, const char *fmt, ... ) = 0;
  66. virtual void DrawTextHeight( vgui::HFont font, int w, int& h, char *fmt, ... ) = 0;
  67. // Returns the length of the text string in pixels
  68. virtual int DrawTextLen( vgui::HFont font, const char *fmt, ... ) = 0;
  69. // Draws a panel in 3D space. Assumes view + projection are already set up
  70. // Also assumes the (x,y) coordinates of the panels are defined in 640xN coords
  71. // (N isn't necessary 480 because the panel may not be 4x3)
  72. // The width + height specified are the size of the panel in world coordinates
  73. virtual void DrawPanelIn3DSpace( vgui::VPANEL pRootPanel, const VMatrix &panelCenterToWorld, int nPixelWidth, int nPixelHeight, float flWorldWidth, float flWorldHeight ) = 0;
  74. // Binds a material to a surface texture ID
  75. virtual void DrawSetTextureMaterial( int id, IMaterial2 *pMaterial ) = 0;
  76. // Handles an input event, returns true if the event should be filtered from the rest of the game
  77. virtual bool HandleInputEvent( const InputEvent_t &event ) = 0;
  78. virtual void Set3DPaintTempRenderTarget( const char *pRenderTargetName ) = 0;
  79. virtual void Reset3DPaintTempRenderTarget( void ) = 0;
  80. // Gets a material bound to a surface texture ID
  81. virtual IMaterial2 *DrawGetTextureMaterial( int id ) = 0;
  82. // Sets the VGui input context
  83. virtual void SetInputContext( InputContextHandle_t hContext ) = 0;
  84. };
  85. #endif // IVGUIRENDERSURFACE_H