//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: Implementation of the IEditorTexture interface for WAD textures. // //=============================================================================// #ifndef WADTEXTURE_H #define WADTEXTURE_H #ifdef _WIN32 #pragma once #endif #include #include "BlockArray.h" #include "IEditorTexture.h" class IMaterial; class CWADTexture : public IEditorTexture { public: CWADTexture(void); virtual ~CWADTexture(void); static bool Initialize(void); static void ShutDown(void); BOOL Init(int, DWORD, BOOL, LPCTSTR); BOOL AdjustTexture(char *pLoadBuf); inline const char *GetName(void) const { return(m_szName); } int GetShortName(char *pszName) const; int GetKeywords(char *pszKeywords) const; void Draw(CDC *pDC, RECT &rect, int iFontHeight, int iIconHeight, DrawTexData_t &DrawTexData);//, DWORD dwFlags = (drawCaption|drawIcons)); void GetSize(SIZE &size); const char *GetFileName(void) const; int GetImageDataRGB( void *pImageRGB ); int GetImageDataRGBA( void *pImageRGBA ); inline int GetImageWidth() const { return( m_datawidth ); } inline int GetImageHeight() const { return( m_dataheight ); } inline int GetWidth() const { return(m_nWidth); } inline int GetHeight() const { return(m_nHeight); } inline float GetDecalScale() const { return( 1.0f ); } CPalette *GetPalette() const; inline int GetTextureID() const { return( m_nTextureID ); } inline TEXTUREFORMAT GetTextureFormat() const { return(format); } inline int GetSurfaceAttributes() const { return(m_WALsurface); } inline int GetSurfaceContents() const { return(m_WALcontents); } inline int GetSurfaceValue() const { return(m_WALvalue); } inline bool HasAlpha() const { return( false ); } inline bool HasData( void ) const { return(m_pData != NULL); } inline bool HasPalette() const { return(m_bLocalPalette == TRUE); } inline bool IsDummy( void ) const { return( false ); } bool Load( void ); void Reload( bool bFullReload ) {} bool IsLoaded() const; inline void SetTextureFormat(TEXTUREFORMAT eFormat) { format = eFormat; } inline void SetTextureID( int nTextureID ) { m_nTextureID = nTextureID; } bool IsWater( void ) const { return false; } protected: BOOL Load(int fd, HANDLE hFile); void DrawNoImage(CDC *pDC, RECT &rect, int iFontHeight); char m_szName[MAX_PATH]; char m_szFileName[MAX_PATH]; // additional data for new .WAL textures: int m_WALsurface; int m_WALvalue; int m_WALcontents; // Used when the texture is in a .WAD or a .PAK file. // Otherwise, texture is loaded automatically. DWORD m_ulFileOffset; // Offset to texture in WAD file. DWORD m_ulFileID; // ID of WAD file the texture is in. TEXTUREFORMAT format; LOGPALETTE *m_pPalette; // This texture's palette. BOOL m_bLocalPalette; // Use m_pPalette? int m_nTextureID; // Uniquely identifies this texture in all 3D renderers. int m_datawidth; int m_dataheight; int m_nWidth; int m_nHeight; void *m_pData; // Loaded pixel data (NULL if not loaded) }; #endif // WADTEXTURE_H