//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ==== // // Purpose: Defines the interface a given texture for the 3D renderer. Current // implementations are for world textures (WADTexture.cpp) and sprite // textures (Texture.cpp). // //============================================================================= #ifndef IEDITORTEXTURE_H #define IEDITORTEXTURE_H #pragma once #include class CDC; class CPalette; class IMaterial; // // Set your texture ID to this in your implementation's constructor. // #define TEXTURE_ID_NONE -1 // // Texture formats. hack: MUST correlate with radio buttons in IDD_OPTIONS_CONFIGS. // enum TEXTUREFORMAT { tfNone = -1, tfWAD = 0, tfWAL = 1, tfWAD3 = 2, tfWAD4 = 3, tfWAD5 = 4, tfVMT = 5, tfSprite = 6 // dvs: not sure if I want to do it this way }; // // Flags for DrawTexData_t. // #define drawCaption 0x01 #define drawResizeAlways 0x02 #define drawIcons 0x04 #define drawErrors 0x08 #define drawUsageCount 0x10 struct DrawTexData_t { int nFlags; int nUsageCount; }; class IEditorTexture { public: virtual ~IEditorTexture(void) { } // // dvs: remove one of these // virtual int GetPreviewImageWidth( void ) const = 0; virtual int GetPreviewImageHeight( void ) const = 0; virtual int GetWidth( void ) const = 0; virtual int GetHeight( void ) const = 0; virtual int GetMappingWidth( void ) const = 0; virtual int GetMappingHeight( void ) const = 0; virtual float GetDecalScale( void ) const = 0; // // dvs: Try to remove as many of these as possible: // virtual const char *GetName( void ) const = 0; virtual int GetShortName( char *szShortName ) const = 0; virtual int GetKeywords( char *szKeywords ) const = 0; virtual void Draw(CDC *pDC, RECT &rect, int iFontHeight, int iIconHeight, DrawTexData_t &DrawTexData) = 0; virtual TEXTUREFORMAT GetTextureFormat( void ) const = 0; virtual int GetSurfaceAttributes( void ) const = 0; virtual int GetSurfaceContents(void ) const = 0; virtual int GetSurfaceValue( void ) const = 0; virtual CPalette *GetPalette( void ) const = 0; virtual bool HasData( void ) const = 0; virtual bool HasPalette( void ) const = 0; virtual bool Load( void ) = 0; // ensure that texture is loaded. could this be done internally? virtual void Reload( bool bFullReload ) = 0; // The texture changed. If bFullReload is true, then the material system reloads it too. virtual bool IsLoaded( void ) const = 0; virtual const char *GetFileName( void ) const = 0; virtual bool IsWater( void ) const = 0; //----------------------------------------------------------------------------- // Purpose: // Input : pData - // Output : //----------------------------------------------------------------------------- virtual int GetImageDataRGB( void *pData = NULL ) = 0; //----------------------------------------------------------------------------- // Purpose: // Input : pData - // Output : //----------------------------------------------------------------------------- virtual int GetImageDataRGBA( void *pData = NULL ) = 0; //----------------------------------------------------------------------------- // Purpose: Returns true if this texture has an alpha component, false if not. //----------------------------------------------------------------------------- virtual bool HasAlpha( void ) const = 0; //----------------------------------------------------------------------------- // Purpose: Returns whether this texture is a dummy texture or not. Dummy textures // serve as placeholders for textures that were found in the map, but // not in the WAD (or the materials tree). The dummy texture enables us // to bind the texture, find it by name, etc. //----------------------------------------------------------------------------- virtual bool IsDummy( void ) const = 0; // dvs: perhaps not the best name? //----------------------------------------------------------------------------- // Purpose: Returns the unique texture ID for this texture object. The texture ID // identifies the texture object across all renderers, and is assigned // by the first renderer that actually binds the texture thru BindTexture. // // Only the renderer ever needs to call SetTextureID. //----------------------------------------------------------------------------- virtual int GetTextureID( void ) const = 0; //----------------------------------------------------------------------------- // Purpose: Sets the unique texture ID for this texture object. The texture ID // identifies the texture object across all renderers, and is assigned // by the first renderer that actually binds the texture thru BindTexture. // // Only the renderer should ever call SetTextureID! //----------------------------------------------------------------------------- virtual void SetTextureID( int nTextureID ) = 0; //----------------------------------------------------------------------------- // Returns the material system material associated with a texture //----------------------------------------------------------------------------- virtual IMaterial* GetMaterial( bool bForceLoad=true ) { return 0; } }; typedef CUtlVector EditorTextureList_t; #endif // IEDITORTEXTURE_H