summaryrefslogtreecommitdiff
path: root/hammer/texture.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /hammer/texture.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'hammer/texture.cpp')
-rw-r--r--hammer/texture.cpp215
1 files changed, 215 insertions, 0 deletions
diff --git a/hammer/texture.cpp b/hammer/texture.cpp
new file mode 100644
index 0000000..d474eef
--- /dev/null
+++ b/hammer/texture.cpp
@@ -0,0 +1,215 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Simple texture object used for sprites. Handed to the renderer
+// for binding. May become a general purpose texture object.
+//
+//=============================================================================//
+
+#include "stdafx.h"
+#include "Texture.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include <tier0/memdbgon.h>
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Constuctor. Initializes data members.
+//-----------------------------------------------------------------------------
+CTexture::CTexture( void )
+{
+ m_nWidth = 0;
+ m_nHeight = 0;
+
+ m_bHasAlpha = false;
+
+ m_pImageData = NULL;
+
+ m_nTextureID = TEXTURE_ID_NONE;
+
+ m_szName[0] = '\0';
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Destructor. Frees the texture image data.
+//-----------------------------------------------------------------------------
+CTexture::~CTexture( void )
+{
+ if ( m_pImageData != NULL )
+ {
+ delete [] m_pImageData;
+ }
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Allocates image data for a given texture size and pixel format.
+// Input : nWidth - Desired width of image, in texels.
+// nHeight - Desired height of image, in texels.
+// nFlags - Flags indicating the pixel format of the image data. The default
+// is 24 bit RGB, no alpha component, but can be set to:
+//
+// TEXTURE_HAS_ALPHA: the image has an alpha component. Each texel is 32 bits.
+//
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool CTexture::Allocate( int nWidth, int nHeight, int nFlags )
+{
+ if ( m_pImageData != NULL )
+ {
+ delete [] m_pImageData;
+
+ m_pImageData = NULL;
+ m_nWidth = 0;
+ m_nHeight = 0;
+ }
+
+ if (( nWidth == 0 ) || ( nHeight == 0 ))
+ {
+ return( false );
+ }
+
+ if ( nFlags & TEXTURE_HAS_ALPHA )
+ {
+ m_pImageData = new unsigned char [nWidth * nHeight * 4];
+ m_bHasAlpha = true;
+ }
+ else
+ {
+ m_pImageData = new unsigned char [nWidth * nHeight * 3];
+ m_bHasAlpha = false;
+ }
+
+ if ( m_pImageData != NULL )
+ {
+ m_nWidth = nWidth;
+ m_nHeight = nHeight;
+ }
+
+ return( m_pImageData != NULL );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *pDC -
+// rect -
+// iFontHeight -
+// dwFlags -
+//-----------------------------------------------------------------------------
+void CTexture::Draw(CDC *pDC, RECT &rect, int iFontHeight, int iIconHeight, DrawTexData_t &DrawTexData)
+{
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Returns the full path of the file from which this texture was loaded.
+//-----------------------------------------------------------------------------
+const char *CTexture::GetFileName() const
+{
+ static char szEmpty[] = "";
+ return(szEmpty);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Gets the image data in RGB format, or queries the image data size.
+// Input : pData - Buffer to receive image data. If NULL, no image data is
+// copied. Otherwise, the buffer must be large enough to hold the
+// image data.
+// Output : Returns the image data size in bytes.
+//-----------------------------------------------------------------------------
+int CTexture::GetImageDataRGB( void *pData )
+{
+ int nSize = 0;
+
+ if ( m_bHasAlpha )
+ {
+ // Conversion from 32 to 24 bits not implemented.
+ Assert( FALSE );
+ }
+ else
+ {
+ nSize = m_nWidth * m_nHeight * 3;
+
+ if (( pData != NULL ) && ( nSize > 0 ))
+ {
+ memcpy( pData, m_pImageData, nSize );
+ }
+ }
+
+ return( nSize );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Gets the image data in RGBA format, or queries the image data size.
+// Input : pData - Buffer to receive image data. If NULL, no image data is
+// copied. Otherwise, the buffer must be large enough to hold the
+// image data.
+// Output : Returns the image data size in bytes.
+//-----------------------------------------------------------------------------
+int CTexture::GetImageDataRGBA( void *pData )
+{
+ int nSize = 0;
+
+ if ( m_bHasAlpha )
+ {
+ nSize = m_nWidth * m_nHeight * 4;
+
+ if (( pData != NULL ) && ( nSize > 0 ))
+ {
+ memcpy( pData, m_pImageData, nSize );
+ }
+ }
+ else
+ {
+ // Conversion from 24 to 32 bits not implemented.
+ Assert( FALSE );
+ }
+
+ return( nSize );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Returns a string of comma delimited keywords associated with this
+// material.
+// Input : pszKeywords - Buffer to receive keywords, NULL to query string length.
+// Output : Returns the number of characters in the keyword string.
+//-----------------------------------------------------------------------------
+int CTexture::GetKeywords(char *pszKeywords) const
+{
+ if (pszKeywords != NULL)
+ {
+ *pszKeywords = '\0';
+ }
+
+ return(0);
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Input : *pszName -
+// Output :
+//-----------------------------------------------------------------------------
+int CTexture::GetShortName(char *pszName) const
+{
+ if (pszName != NULL)
+ {
+ strcpy(pszName, m_szName);
+ }
+
+ return(strlen(m_szName));
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+// Output : Returns true on success, false on failure.
+//-----------------------------------------------------------------------------
+bool CTexture::Load(void)
+{
+ return(true);
+}