ISurface: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| m (ischeme) | Thunder4ik (talk | contribs)  m (→See also: clean up, replaced: See Also → See also) | ||
| (7 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| This page goes into depth on using functions provided in this interface. | This page goes into depth on using functions provided in this interface. | ||
|   // |   //===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======// | ||
|   // |   // | ||
|   // Purpose:   |   // Purpose:   | ||
|   // |   // | ||
|   // $NoKeywords: $ |   // $NoKeywords: $ | ||
|   // |   //===========================================================================// | ||
|   #ifndef ISURFACE_H |   #ifndef ISURFACE_H | ||
| Line 16: | Line 16: | ||
|   #include <vgui/VGUI.h> |   #include <vgui/VGUI.h> | ||
|   #include <vgui/IHTML.h> // CreateHTML, PaintHTML   |   #include <vgui/IHTML.h> // CreateHTML, PaintHTML   | ||
|   #include "interface.h" |   #include "tier1/interface.h" | ||
|  #include "bitmap/imageformat.h" | |||
|   #include "appframework/IAppSystem.h" |   #include "appframework/IAppSystem.h" | ||
|   #include "Vector2D.h"  // must be before the namespace line |   #include "Vector2D.h"  // must be before the namespace line | ||
|  #include "IVguiMatInfo.h" | |||
|   #ifdef CreateFont |   #ifdef CreateFont | ||
| Line 34: | Line 37: | ||
|   { |   { | ||
|   class  |   class IImage; | ||
|   class  |  class Image; | ||
|   class Point; | |||
|   // handles |   // handles | ||
|   typedef unsigned long HCursor; |   typedef unsigned long HCursor; | ||
|   typedef unsigned long HTexture; |   typedef unsigned long HTexture; | ||
|   typedef unsigned long  |   typedef unsigned long HFont; | ||
| Line 114: | Line 118: | ||
|   // Purpose: Wraps contextless windows system functions |   // Purpose: Wraps contextless windows system functions | ||
|   //----------------------------------------------------------------------------- |   //----------------------------------------------------------------------------- | ||
|   class ISurface :  |   class '''ISurface''' : public IAppSystem | ||
|   { |   { | ||
|   public: |   public: | ||
| Line 150: | Line 154: | ||
|   	virtual void [[DrawUnicodeChar]](wchar_t wch, FontDrawType_t drawType = FONT_DRAW_DEFAULT ) = 0; |   	virtual void [[DrawUnicodeChar]](wchar_t wch, FontDrawType_t drawType = FONT_DRAW_DEFAULT ) = 0; | ||
|   	virtual void  |   	virtual void DrawFlushText() = 0;		// flushes any buffered text [[]](for rendering optimizations) | ||
|   	virtual IHTML *[[CreateHTMLWindow]](vgui::IHTMLEvents *events,VPANEL context)=0; |   	virtual IHTML *[[CreateHTMLWindow]](vgui::IHTMLEvents *events,VPANEL context)=0; | ||
|   	virtual void [[PaintHTMLWindow]](vgui::IHTML *htmlwin) =0; |   	virtual void [[PaintHTMLWindow]](vgui::IHTML *htmlwin) =0; | ||
| Line 165: | Line 169: | ||
|   	virtual int [[CreateNewTextureID]]( bool procedural = false ) = 0; |   	virtual int [[CreateNewTextureID]]( bool procedural = false ) = 0; | ||
|  #ifdef _XBOX | |||
|  	virtual void [[DestroyTextureID]]( int id ) = 0; | |||
|  	virtual bool [[IsCachedForRendering]]( int id, bool bSyncWait ) = 0; | |||
|  	virtual void [[CopyFrontBufferToBackBuffer]]() = 0; | |||
|  	virtual void [[UncacheUnusedMaterials]]() = 0; | |||
|  #endif | |||
|   	virtual void [[GetScreenSize]](int &wide, int &tall) = 0; |   	virtual void [[GetScreenSize]](int &wide, int &tall) = 0; | ||
|   	virtual void [[SetAsTopMost]](VPANEL panel, bool state) = 0; |   	virtual void [[SetAsTopMost]](VPANEL panel, bool state) = 0; | ||
|   	virtual void [[BringToFront]](VPANEL panel) = 0; |   	virtual void [[BringToFront]](VPANEL panel) = 0; | ||
|   	virtual void [[ |   	virtual void SetForegroundWindow [[]](VPANEL panel) = 0; | ||
|   	virtual void [[SetPanelVisible]](VPANEL panel, bool state) = 0; |   	virtual void [[SetPanelVisible]](VPANEL panel, bool state) = 0; | ||
|   	virtual void [[SetMinimized]](VPANEL panel, bool state) = 0; |   	virtual void [[SetMinimized]](VPANEL panel, bool state) = 0; | ||
| Line 175: | Line 185: | ||
|   	virtual void [[FlashWindow]](VPANEL panel, bool state) = 0; |   	virtual void [[FlashWindow]](VPANEL panel, bool state) = 0; | ||
|   	virtual void [[SetTitle]](VPANEL panel, const wchar_t *title) = 0; |   	virtual void [[SetTitle]](VPANEL panel, const wchar_t *title) = 0; | ||
|   	virtual void  |   	virtual void SetAsToolBar(VPANEL panel, bool state) = 0;		// removes the window's task bar entry [[]](for context menu's, etc.) | ||
|   	// windows stuff |   	// windows stuff | ||
| Line 188: | Line 198: | ||
|   	// returns true if the surface supports minimize & maximize capabilities |   	// returns true if the surface supports minimize & maximize capabilities | ||
|   	enum  |   	enum SurfaceFeature_e | ||
|   	{ |   	{ | ||
|   		ANTIALIASED_FONTS	= 1, |   		ANTIALIASED_FONTS	= 1, | ||
| Line 221: | Line 231: | ||
|   	// adds to the font |   	// adds to the font | ||
|   	enum  |   	enum EFontFlags | ||
|   	{ |   	{ | ||
|   		FONTFLAG_NONE, |   		FONTFLAG_NONE, | ||
| Line 235: | Line 245: | ||
|   		FONTFLAG_OUTLINE		= 0x200, |   		FONTFLAG_OUTLINE		= 0x200, | ||
|   		FONTFLAG_CUSTOM			= 0x400,		// custom generated font - never fall back to asian compatibility mode |   		FONTFLAG_CUSTOM			= 0x400,		// custom generated font - never fall back to asian compatibility mode | ||
|  		FONTFLAG_BITMAP			= 0x800,		// compiled bitmap font - no fallbacks | |||
|   	}; |   	}; | ||
|   	virtual bool [[SetFontGlyphSet]](HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags) = 0; |   	virtual bool [[SetFontGlyphSet]](HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags) = 0; | ||
|   	// adds a custom font file (only supports true type font files (.ttf) for now) |   	// adds a custom font file (only supports true type font files (.ttf) for now) | ||
|   	virtual bool [[AddCustomFontFile]](const char *fontFileName) = 0; |   	virtual bool [[AddCustomFontFile]](const char *fontFileName) = 0; | ||
|   	// returns the details about the font |   	// returns the details about the font | ||
| Line 257: | Line 269: | ||
|   	//!! these functions should not be accessed directly, but only through other vgui items |   	//!! these functions should not be accessed directly, but only through other vgui items | ||
|   	//!! need to move these to  |   	//!! need to move these to separate interface | ||
|   	virtual int [[GetPopupCount]]() = 0; |   	virtual int [[GetPopupCount]]() = 0; | ||
|   	virtual VPANEL [[GetPopup]](int index) = 0; |   	virtual VPANEL [[GetPopup]](int index) = 0; | ||
| Line 292: | Line 304: | ||
|   	virtual void [[DrawTexturedLine]]( const Vertex_t &a, const Vertex_t &b ) = 0; |   	virtual void [[DrawTexturedLine]]( const Vertex_t &a, const Vertex_t &b ) = 0; | ||
|   	virtual void [[DrawOutlinedCircle]](int x, int y, int radius, int segments) = 0; |   	virtual void [[DrawOutlinedCircle]](int x, int y, int radius, int segments) = 0; | ||
|   	virtual void  |   	virtual void DrawTexturedPolyLine( const Vertex_t *p,int n ) = 0; // [[]](Note: this connects the first and last points). | ||
|   	virtual void [[DrawTexturedSubRect]]( int x0, int y0, int x1, int y1, float texs0, float text0, float texs1, float text1 ) = 0; |   	virtual void [[DrawTexturedSubRect]]( int x0, int y0, int x1, int y1, float texs0, float text0, float texs1, float text1 ) = 0; | ||
|   	virtual void [[DrawTexturedPolygon]](int n, Vertex_t *pVertices) = 0; |   	virtual void [[DrawTexturedPolygon]](int n, Vertex_t *pVertices) = 0; | ||
| Line 313: | Line 325: | ||
|   	// video mode changing |   	// video mode changing | ||
|   	virtual void [[OnScreenSizeChanged]]( int nOldWidth, int nOldHeight ) = 0; |   	virtual void [[OnScreenSizeChanged]]( int nOldWidth, int nOldHeight ) = 0; | ||
|  #if !defined( _XBOX ) | |||
|  	virtual vgui::HCursor	CreateCursorFromFile( char const *curOrAniFile, char const *pPathID = 0 ) = 0; | |||
|  #endif | |||
|  	// create IVguiMatInfo object ( IMaterial wrapper in VguiMatSurface, NULL in CWin32Surface ) | |||
|  	virtual IVguiMatInfo *[[DrawGetTextureMatInfoFactory]]( int id ) = 0; | |||
|  	virtual void [[PaintTraverseEx]](VPANEL panel, bool paintPopups = false ) = 0; | |||
|  	virtual float [[GetZPos]]() const = 0; | |||
|  	// From the Xbox | |||
|  	virtual void [[SetPanelForInput]]( VPANEL vpanel ) = 0; | |||
|  	virtual void [[DrawFilledRectFade]]( int x0, int y0, int x1, int y1, unsigned int alpha0, unsigned int alpha1, bool bHorizontal ) = 0; | |||
|  	virtual void [[DrawSetTextureRGBAEx]](int id, const unsigned char *rgba, int wide, int tall, ImageFormat imageFormat ) = 0; | |||
|  	virtual void [[DrawSetTextScale]](float sx, float sy) = 0; | |||
|  	virtual bool [[SetBitmapFontGlyphSet]](HFont font, const char *windowsFontName, float scalex, float scaley, int flags) = 0; | |||
|  	// adds a bitmap font file | |||
|  	virtual bool [[AddBitmapFontFile]](const char *fontFileName) = 0; | |||
|  	// sets a symbol for the bitmap font | |||
|  	virtual void [[SetBitmapFontName]]( const char *pName, const char *pFontFilename ) = 0; | |||
|  	// gets the bitmap font filename | |||
|  	virtual const char *[[GetBitmapFontName]]( const char *pName ) = 0; | |||
|  	virtual IImage *[[GetIconImageForFullPath]]( char const *pFullPath ) = 0; | |||
|  	virtual void [[DrawUnicodeString]]( const wchar_t *pwString, FontDrawType_t drawType = FONT_DRAW_DEFAULT ) = 0; | |||
|   }; |   }; | ||
|   } |   } | ||
|   #define VGUI_SURFACE_INTERFACE_VERSION " |   #define VGUI_SURFACE_INTERFACE_VERSION "VGUI_Surface030" | ||
|   #endif // ISURFACE_H |   #endif // ISURFACE_H | ||
| ==See  | ==See also== | ||
| * [[:Category:ISurface]] | * [[:Category:ISurface]] | ||
| * [[IMatSystemSurface]] | * [[IMatSystemSurface]] | ||
| * [[IScheme]] | * [[IScheme]] | ||
| [[Category:Interfaces]] | [[Category:Interfaces]] | ||
Latest revision as of 08:04, 4 January 2024
This page goes into depth on using functions provided in this interface.
//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======//
//
// Purpose: 
//
// $NoKeywords: $
//===========================================================================//
#ifndef ISURFACE_H
#define ISURFACE_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui/VGUI.h>
#include <vgui/IHTML.h> // CreateHTML, PaintHTML 
#include "tier1/interface.h"
#include "bitmap/imageformat.h"
#include "appframework/IAppSystem.h"
#include "Vector2D.h"  // must be before the namespace line
#include "IVguiMatInfo.h"
#ifdef CreateFont
#undef CreateFont
#endif
#ifdef PlaySound
#undef PlaySound
#endif
class Color;
namespace vgui
{
class IImage;
class Image;
class Point;
// handles
typedef unsigned long HCursor;
typedef unsigned long HTexture;
typedef unsigned long HFont;
//SRC only defines
struct Vertex_t
{
	Vertex_t() {}
	Vertex_t( const Vector2D &pos, const Vector2D &coord = Vector2D( 0, 0 ) )
	{
		m_Position = pos;
		m_TexCoord = coord;
	}
	void Init( const Vector2D &pos, const Vector2D &coord = Vector2D( 0, 0 ) )
	{
		m_Position = pos;
		m_TexCoord = coord;
	}
	
	Vector2D	m_Position;
	Vector2D	m_TexCoord;
};
enum FontDrawType_t
{
	// Use the "additive" value from the scheme file
	FONT_DRAW_DEFAULT = 0,
	// Overrides
	FONT_DRAW_NONADDITIVE,
	FONT_DRAW_ADDITIVE,
	FONT_DRAW_TYPE_COUNT = 2,
};
// Refactor these two
struct CharRenderInfo
{
	// In:
	FontDrawType_t	drawType;
	wchar_t			ch;
	// Out
	bool			valid;
	// In/Out (true by default)
	bool			shouldclip;
	// Text pos
	int				x, y;
	// Top left and bottom right
	Vertex_t		verts[ 2 ];
	int				textureId;
	int				abcA;
	int				abcB;
	int				abcC;
	int				fontTall;
	HFont			currentFont;
};
struct IntRect
{
	int x0;
	int y0;
	int x1;
	int y1;
};
//-----------------------------------------------------------------------------
// Purpose: Wraps contextless windows system functions
//-----------------------------------------------------------------------------
class ISurface : public IAppSystem
{
public:
	// call to Shutdown surface; surface can no longer be used after this is called
	virtual void Shutdown() = 0;
	// frame
	virtual void RunFrame() = 0;
	// hierarchy root
	virtual VPANEL GetEmbeddedPanel() = 0;
	virtual void SetEmbeddedPanel( VPANEL pPanel ) = 0;
	// drawing context
	virtual void PushMakeCurrent(VPANEL panel, bool useInsets) = 0;
	virtual void PopMakeCurrent(VPANEL panel) = 0;
	// rendering functions
	virtual void DrawSetColor(int r, int g, int b, int a) = 0;
	virtual void DrawSetColor(Color col) = 0;
	
	virtual void DrawFilledRect(int x0, int y0, int x1, int y1) = 0;
	virtual void DrawFilledRectArray( IntRect *pRects, int numRects ) = 0;
	virtual void DrawOutlinedRect(int x0, int y0, int x1, int y1) = 0;
	virtual void DrawLine(int x0, int y0, int x1, int y1) = 0;
	virtual void DrawPolyLine(int *px, int *py, int numPoints) = 0;
	virtual void DrawSetTextFont(HFont font) = 0;
	virtual void DrawSetTextColor(int r, int g, int b, int a) = 0;
	virtual void DrawSetTextColor(Color col) = 0;
	virtual void DrawSetTextPos(int x, int y) = 0;
	virtual void DrawGetTextPos(int& x,int& y) = 0;
	virtual void DrawPrintText(const wchar_t *text, int textLen, FontDrawType_t drawType = FONT_DRAW_DEFAULT ) = 0;
	virtual void DrawUnicodeChar(wchar_t wch, FontDrawType_t drawType = FONT_DRAW_DEFAULT ) = 0;
	virtual void DrawFlushText() = 0;		// flushes any buffered text [[]](for rendering optimizations)
	virtual IHTML *CreateHTMLWindow(vgui::IHTMLEvents *events,VPANEL context)=0;
	virtual void PaintHTMLWindow(vgui::IHTML *htmlwin) =0;
	virtual void DeleteHTMLWindow(IHTML *htmlwin)=0;
	virtual int	 DrawGetTextureId( char const *filename ) = 0;
	virtual bool DrawGetTextureFile(int id, char *filename, int maxlen ) = 0;
	virtual void DrawSetTextureFile(int id, const char *filename, int hardwareFilter, bool forceReload) = 0;
	virtual void DrawSetTextureRGBA(int id, const unsigned char *rgba, int wide, int tall, int hardwareFilter, bool forceReload)=0;
	virtual void DrawSetTexture(int id) = 0;
	virtual void DrawGetTextureSize(int id, int &wide, int &tall) = 0;
	virtual void DrawTexturedRect(int x0, int y0, int x1, int y1) = 0;
	virtual bool IsTextureIDValid(int id) = 0;
	virtual int CreateNewTextureID( bool procedural = false ) = 0;
#ifdef _XBOX
	virtual void DestroyTextureID( int id ) = 0;
	virtual bool IsCachedForRendering( int id, bool bSyncWait ) = 0;
	virtual void CopyFrontBufferToBackBuffer() = 0;
	virtual void UncacheUnusedMaterials() = 0;
#endif
	virtual void GetScreenSize(int &wide, int &tall) = 0;
	virtual void SetAsTopMost(VPANEL panel, bool state) = 0;
	virtual void BringToFront(VPANEL panel) = 0;
	virtual void SetForegroundWindow [[]](VPANEL panel) = 0;
	virtual void SetPanelVisible(VPANEL panel, bool state) = 0;
	virtual void SetMinimized(VPANEL panel, bool state) = 0;
	virtual bool IsMinimized(VPANEL panel) = 0;
	virtual void FlashWindow(VPANEL panel, bool state) = 0;
	virtual void SetTitle(VPANEL panel, const wchar_t *title) = 0;
	virtual void SetAsToolBar(VPANEL panel, bool state) = 0;		// removes the window's task bar entry [[]](for context menu's, etc.)
	// windows stuff
	virtual void CreatePopup(VPANEL panel, bool minimised, bool showTaskbarIcon = true, bool disabled = false, bool mouseInput = true , bool kbInput = true) = 0;
	virtual void SwapBuffers(VPANEL panel) = 0;
	virtual void Invalidate(VPANEL panel) = 0;
	virtual void SetCursor(HCursor cursor) = 0;
	virtual bool IsCursorVisible() = 0;
	virtual void ApplyChanges() = 0;
	virtual bool IsWithin(int x, int y) = 0;
	virtual bool HasFocus() = 0;
	
	// returns true if the surface supports minimize & maximize capabilities
	enum SurfaceFeature_e
	{
		ANTIALIASED_FONTS	= 1,
		DROPSHADOW_FONTS	= 2,
		ESCAPE_KEY			= 3,
		OPENING_NEW_HTML_WINDOWS = 4,
		FRAME_MINIMIZE_MAXIMIZE	 = 5,
		OUTLINE_FONTS	= 6,
		DIRECT_HWND_RENDER		= 7,
	};
	virtual bool SupportsFeature(SurfaceFeature_e feature) = 0;
	// restricts what gets drawn to one panel and it's children
	// currently only works in the game
	virtual void RestrictPaintToSinglePanel(VPANEL panel) = 0;
	// these two functions obselete, use IInput::SetAppModalSurface() instead
	virtual void SetModalPanel(VPANEL ) = 0;
	virtual VPANEL GetModalPanel() = 0;
	virtual void UnlockCursor() = 0;
	virtual void LockCursor() = 0;
	virtual void SetTranslateExtendedKeys(bool state) = 0;
	virtual VPANEL GetTopmostPopup() = 0;
	// engine-only focus handling (replacing WM_FOCUS windows handling)
	virtual void SetTopLevelFocus(VPANEL panel) = 0;
	// fonts
	// creates an empty handle to a vgui font.  windows fonts can be add to this via SetFontGlyphSet().
	virtual HFont CreateFont() = 0;
	// adds to the font
	enum EFontFlags
	{
		FONTFLAG_NONE,
		FONTFLAG_ITALIC			= 0x001,
		FONTFLAG_UNDERLINE		= 0x002,
		FONTFLAG_STRIKEOUT		= 0x004,
		FONTFLAG_SYMBOL			= 0x008,
		FONTFLAG_ANTIALIAS		= 0x010,
		FONTFLAG_GAUSSIANBLUR	= 0x020,
		FONTFLAG_ROTARY			= 0x040,
		FONTFLAG_DROPSHADOW		= 0x080,
		FONTFLAG_ADDITIVE		= 0x100,
		FONTFLAG_OUTLINE		= 0x200,
		FONTFLAG_CUSTOM			= 0x400,		// custom generated font - never fall back to asian compatibility mode
		FONTFLAG_BITMAP			= 0x800,		// compiled bitmap font - no fallbacks
	};
	virtual bool SetFontGlyphSet(HFont font, const char *windowsFontName, int tall, int weight, int blur, int scanlines, int flags) = 0;
	// adds a custom font file (only supports true type font files (.ttf) for now)
	virtual bool AddCustomFontFile(const char *fontFileName) = 0;
	// returns the details about the font
	virtual int GetFontTall(HFont font) = 0;
	virtual int GetFontAscent(HFont font, wchar_t wch) = 0;
	virtual bool IsFontAdditive(HFont font) = 0;
	virtual void GetCharABCwide(HFont font, int ch, int &a, int &b, int &c) = 0;
	virtual int GetCharacterWidth(HFont font, int ch) = 0;
	virtual void GetTextSize(HFont font, const wchar_t *text, int &wide, int &tall) = 0;
	// notify icons?!?
	virtual VPANEL GetNotifyPanel() = 0;
	virtual void SetNotifyIcon(VPANEL context, HTexture icon, VPANEL panelToReceiveMessages, const char *text) = 0;
	// plays a sound
	virtual void PlaySound(const char *fileName) = 0;
	//!! these functions should not be accessed directly, but only through other vgui items
	//!! need to move these to separate interface
	virtual int GetPopupCount() = 0;
	virtual VPANEL GetPopup(int index) = 0;
	virtual bool ShouldPaintChildPanel(VPANEL childPanel) = 0;
	virtual bool RecreateContext(VPANEL panel) = 0;
	virtual void AddPanel(VPANEL panel) = 0;
	virtual void ReleasePanel(VPANEL panel) = 0;
	virtual void MovePopupToFront(VPANEL panel) = 0;
	virtual void MovePopupToBack(VPANEL panel) = 0;
	virtual void SolveTraverse(VPANEL panel, bool forceApplySchemeSettings = false) = 0;
	virtual void PaintTraverse(VPANEL panel) = 0;
	virtual void EnableMouseCapture(VPANEL panel, bool state) = 0;
	// returns the size of the workspace
	virtual void GetWorkspaceBounds(int &x, int &y, int &wide, int &tall) = 0;
	// gets the absolute coordinates of the screen (in windows space)
	virtual void GetAbsoluteWindowBounds(int &x, int &y, int &wide, int &tall) = 0;
	// gets the base resolution used in proportional mode
	virtual void GetProportionalBase( int &width, int &height ) = 0;
	virtual void CalculateMouseVisible() = 0;
	virtual bool NeedKBInput() = 0;
	virtual bool HasCursorPosFunctions() = 0;
	virtual void SurfaceGetCursorPos(int &x, int &y) = 0;
	virtual void SurfaceSetCursorPos(int x, int y) = 0;
	// SRC only functions!!!
	virtual void DrawTexturedLine( const Vertex_t &a, const Vertex_t &b ) = 0;
	virtual void DrawOutlinedCircle(int x, int y, int radius, int segments) = 0;
	virtual void DrawTexturedPolyLine( const Vertex_t *p,int n ) = 0; // [[]](Note: this connects the first and last points).
	virtual void DrawTexturedSubRect( int x0, int y0, int x1, int y1, float texs0, float text0, float texs1, float text1 ) = 0;
	virtual void DrawTexturedPolygon(int n, Vertex_t *pVertices) = 0;
	virtual const wchar_t *GetTitle(VPANEL panel) = 0;
	virtual bool IsCursorLocked( void ) const = 0;
	virtual void SetWorkspaceInsets( int left, int top, int right, int bottom ) = 0;
	// Lower level char drawing code, call DrawGet then pass in info to DrawRender
	virtual bool DrawGetUnicodeCharRenderInfo( wchar_t ch, CharRenderInfo& info ) = 0;
	virtual void DrawRenderCharFromInfo( const CharRenderInfo& info ) = 0;
	// global alpha setting functions
	// affect all subsequent draw calls - shouldn't normally be used directly, only in Panel::PaintTraverse()
	virtual void DrawSetAlphaMultiplier( float alpha /* [0..1] */ ) = 0;
	virtual float DrawGetAlphaMultiplier() = 0;
	// web browser
	virtual void SetAllowHTMLJavaScript( bool state ) = 0;
	// video mode changing
	virtual void OnScreenSizeChanged( int nOldWidth, int nOldHeight ) = 0;
#if !defined( _XBOX )
	virtual vgui::HCursor	CreateCursorFromFile( char const *curOrAniFile, char const *pPathID = 0 ) = 0;
#endif
	// create IVguiMatInfo object ( IMaterial wrapper in VguiMatSurface, NULL in CWin32Surface )
	virtual IVguiMatInfo *DrawGetTextureMatInfoFactory( int id ) = 0;
	virtual void PaintTraverseEx(VPANEL panel, bool paintPopups = false ) = 0;
	virtual float GetZPos() const = 0;
	// From the Xbox
	virtual void SetPanelForInput( VPANEL vpanel ) = 0;
	virtual void DrawFilledRectFade( int x0, int y0, int x1, int y1, unsigned int alpha0, unsigned int alpha1, bool bHorizontal ) = 0;
	virtual void DrawSetTextureRGBAEx(int id, const unsigned char *rgba, int wide, int tall, ImageFormat imageFormat ) = 0;
	virtual void DrawSetTextScale(float sx, float sy) = 0;
	virtual bool SetBitmapFontGlyphSet(HFont font, const char *windowsFontName, float scalex, float scaley, int flags) = 0;
	// adds a bitmap font file
	virtual bool AddBitmapFontFile(const char *fontFileName) = 0;
	// sets a symbol for the bitmap font
	virtual void SetBitmapFontName( const char *pName, const char *pFontFilename ) = 0;
	// gets the bitmap font filename
	virtual const char *GetBitmapFontName( const char *pName ) = 0;
	virtual IImage *GetIconImageForFullPath( char const *pFullPath ) = 0;
	virtual void DrawUnicodeString( const wchar_t *pwString, FontDrawType_t drawType = FONT_DRAW_DEFAULT ) = 0;
};
}
#define VGUI_SURFACE_INTERFACE_VERSION "VGUI_Surface030"
#endif // ISURFACE_H