diff options
Diffstat (limited to 'hammer/wadtexture.h')
| -rw-r--r-- | hammer/wadtexture.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/hammer/wadtexture.h b/hammer/wadtexture.h new file mode 100644 index 0000000..3a439a5 --- /dev/null +++ b/hammer/wadtexture.h @@ -0,0 +1,178 @@ +//========= 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 <afxtempl.h> +#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 |