//======== (C) Copyright 1999, 2000 Valve, L.L.C. All rights reserved. ======== // // The copyright to the contents herein is the property of Valve, L.L.C. // The contents may be used and/or copied only with the written permission of // Valve, L.L.C., or in accordance with the terms and conditions stipulated in // the agreement/contract under which the contents have been supplied. // // Purpose: An extra interface implemented by the material system // implementation of vgui::ISurface // // $Revision: $ // $NoKeywords: $ //============================================================================= #ifndef IMATSYSTEMSURFACE_V3_H #define IMATSYSTEMSURFACE_V3_H #ifdef _WIN32 #pragma once #endif class VMatrix; #include <vgui/VGUI.h> #include "vgui/isurfacev28.h" namespace MatSystemSurfaceV3 { //----------------------------------------------------------------------------- // Callbacks for mouse getting + setting //----------------------------------------------------------------------------- typedef void (*GetMouseCallback_t)(int &x, int &y); typedef void (*SetMouseCallback_t)(int x, int y); //----------------------------------------------------------------------------- // Callbacks for sound playing //----------------------------------------------------------------------------- typedef void (*PlaySoundFunc_t)(const char *pFileName); //----------------------------------------------------------------------------- // // An extra interface implemented by the material system implementation of vgui::ISurface // //----------------------------------------------------------------------------- #define MAT_SYSTEM_SURFACE_INTERFACE_VERSION_3 "MatSystemSurface003" class IMatSystemSurface : public SurfaceV28::ISurface { public: // Hook needed to get input to work. // If the app drives the input (like the engine needs to do for VCR mode), // it can set bLetAppDriveInput to true and call HandleWindowMessage for the Windows messages. virtual void AttachToWindow( void *hwnd, bool bLetAppDriveInput=false ) = 0; // If you specified true for bLetAppDriveInput, then call this for each window message that comes in. virtual void HandleWindowMessage( void *hwnd, unsigned int uMsg, unsigned int wParam, long lParam ) = 0; // Tells the surface to ignore windows messages virtual void EnableWindowsMessages( bool bEnable ) = 0; // Starts, ends 3D painting // NOTE: These methods should only be called from within the paint() // method of a panel. virtual void Begin3DPaint( int iLeft, int iTop, int iRight, int iBottom ) = 0; virtual void End3DPaint() = 0; // NOTE: This also should only be called from within the paint() // method of a panel. Use it to disable clipping for the rendering // of this panel. virtual void DisableClipping( bool bDisable ) = 0; // Prevents vgui from changing the cursor virtual bool IsCursorLocked() const = 0; // Sets the mouse get + set callbacks virtual void SetMouseCallbacks( GetMouseCallback_t getFunc, SetMouseCallback_t setFunc ) = 0; // Installs a function to play sounds virtual void InstallPlaySoundFunc( PlaySoundFunc_t soundFunc ) = 0; // Some drawing methods that cannot be accomplished under Win32 virtual void DrawColoredCircle( int centerx, int centery, float radius, int r, int g, int b, int a ) = 0; virtual int DrawColoredText( vgui::HFont font, int x, int y, int r, int g, int b, int a, char *fmt, ... ) = 0; // Draws text with current font at position and wordwrapped to the rect using color values specified virtual void DrawColoredTextRect( vgui::HFont font, int x, int y, int w, int h, int r, int g, int b, int a, char *fmt, ... ) = 0; virtual void DrawTextHeight( vgui::HFont font, int w, int& h, char *fmt, ... ) = 0; // Returns the length of the text string in pixels virtual int DrawTextLen( vgui::HFont font, char *fmt, ... ) = 0; // Draws a panel in 3D space. Assumes view + projection are already set up // Also assumes the (x,y) coordinates of the panels are defined in 640xN coords // (N isn't necessary 480 because the panel may not be 4x3) // The width + height specified are the size of the panel in world coordinates virtual void DrawPanelIn3DSpace( vgui::VPANEL pRootPanel, const VMatrix &panelCenterToWorld, int nPixelWidth, int nPixelHeight, float flWorldWidth, float flWorldHeight ) = 0; }; } // namespace MatSystemSurfaceV3 //----------------------------------------------------------------------------- // FIXME: This works around using scoped interfaces w/ EXPOSE_SINGLE_INTERFACE //----------------------------------------------------------------------------- class IMatSystemSurfaceV3 : public MatSystemSurfaceV3::IMatSystemSurface { public: }; #endif // IMATSYSTEMSURFACE_V3_H
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 5821 | Knut Wikstrom |
Added Valve Source code. This is NOT to be commited to other than new code from Valve. |