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.
127 lines
4.0 KiB
127 lines
4.0 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef ISCHEME_H |
|
#define ISCHEME_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui/VGUI.h> |
|
#include "tier1/interface.h" |
|
|
|
class Color; |
|
class KeyValues; |
|
|
|
namespace vgui |
|
{ |
|
|
|
typedef unsigned long HScheme; |
|
typedef unsigned long HTexture; |
|
|
|
class IBorder; |
|
class IImage; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Holds all panel rendering data |
|
// This functionality is all wrapped in the Panel::GetScheme*() functions |
|
//----------------------------------------------------------------------------- |
|
class IScheme : public IBaseInterface |
|
{ |
|
public: |
|
// gets a string from the default settings section |
|
virtual const char *GetResourceString(const char *stringName) = 0; |
|
|
|
// returns a pointer to an existing border |
|
virtual IBorder *GetBorder(const char *borderName) = 0; |
|
|
|
// returns a pointer to an existing font |
|
virtual HFont GetFont(const char *fontName, bool proportional = false) = 0; |
|
|
|
// inverse font lookup |
|
virtual char const *GetFontName( const HFont& font ) = 0; |
|
|
|
// colors |
|
virtual Color GetColor(const char *colorName, Color defaultColor) = 0; |
|
|
|
// Get the number of borders |
|
virtual int GetBorderCount() const = 0; |
|
|
|
// Get the border at the given index |
|
virtual IBorder *GetBorderAtIndex( int iIndex ) = 0; |
|
|
|
// Get the number of fonts |
|
virtual int GetFontCount() const = 0; |
|
|
|
// Get the font at the given index |
|
virtual HFont GetFontAtIndex( int iIndex ) = 0; |
|
|
|
// Get color data |
|
virtual const KeyValues *GetColorData() const = 0; |
|
}; |
|
|
|
|
|
|
|
class ISchemeManager: public IBaseInterface |
|
{ |
|
public: |
|
// loads a scheme from a file |
|
// first scheme loaded becomes the default scheme, and all subsequent loaded scheme are derivitives of that |
|
virtual HScheme LoadSchemeFromFile(const char *fileName, const char *tag) = 0; |
|
|
|
// reloads the scheme from the file - should only be used during development |
|
virtual void ReloadSchemes() = 0; |
|
|
|
// reloads scheme fonts |
|
virtual void ReloadFonts() = 0; |
|
|
|
// returns a handle to the default (first loaded) scheme |
|
virtual HScheme GetDefaultScheme() = 0; |
|
|
|
// returns a handle to the scheme identified by "tag" |
|
virtual HScheme GetScheme(const char *tag) = 0; |
|
|
|
// returns a pointer to an image |
|
virtual IImage *GetImage(const char *imageName, bool hardwareFiltered) = 0; |
|
virtual HTexture GetImageID(const char *imageName, bool hardwareFiltered) = 0; |
|
|
|
// This can only be called at certain times, like during paint() |
|
// It will assert-fail if you call it at the wrong time... |
|
|
|
// FIXME: This interface should go away!!! It's an icky back-door |
|
// If you're using this interface, try instead to cache off the information |
|
// in ApplySchemeSettings |
|
virtual IScheme *GetIScheme( HScheme scheme ) = 0; |
|
|
|
// unload all schemes |
|
virtual void Shutdown( bool full = true ) = 0; |
|
|
|
// gets the proportional coordinates for doing screen-size independant panel layouts |
|
// use these for font, image and panel size scaling (they all use the pixel height of the display for scaling) |
|
virtual int GetProportionalScaledValue( int normalizedValue) = 0; |
|
virtual int GetProportionalNormalizedValue(int scaledValue) = 0; |
|
|
|
// loads a scheme from a file |
|
// first scheme loaded becomes the default scheme, and all subsequent loaded scheme are derivitives of that |
|
virtual HScheme LoadSchemeFromFileEx( VPANEL sizingPanel, const char *fileName, const char *tag) = 0; |
|
// gets the proportional coordinates for doing screen-size independant panel layouts |
|
// use these for font, image and panel size scaling (they all use the pixel height of the display for scaling) |
|
virtual int GetProportionalScaledValueEx( HScheme scheme, int normalizedValue ) = 0; |
|
virtual int GetProportionalNormalizedValueEx( HScheme scheme, int scaledValue ) = 0; |
|
|
|
// Returns true if image evicted, false otherwise |
|
virtual bool DeleteImage( const char *pImageName ) = 0; |
|
}; |
|
|
|
#define VGUI_SCHEME_INTERFACE_VERSION "VGUI_Scheme010" |
|
|
|
|
|
} // namespace vgui |
|
|
|
|
|
#endif // ISCHEME_H
|
|
|