//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: Implementation of IEditorTexture interface for placeholder textures. // Placeholder textures are used for textures that are referenced in // the map file but not found in storage. // //=============================================================================// #include "stdafx.h" #include #include #include #include #include #include "DummyTexture.h" // memdbgon must be the last include file in a .cpp file!!! #include //----------------------------------------------------------------------------- // Purpose: Constructor. //----------------------------------------------------------------------------- CDummyTexture::CDummyTexture(const char *pszName, TEXTUREFORMAT eFormat) { if (pszName != NULL) { strcpy(m_szName, pszName); } else { strcpy(m_szName, "Missing texture"); } m_eTextureFormat = eFormat; } //----------------------------------------------------------------------------- // Purpose: Destructor. //----------------------------------------------------------------------------- CDummyTexture::~CDummyTexture() { } //----------------------------------------------------------------------------- // Purpose: Returns an empty string, since we have no source file. //----------------------------------------------------------------------------- const char *CDummyTexture::GetFileName() const { static char *pszEmpty = ""; return(pszEmpty); } //----------------------------------------------------------------------------- // 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 CDummyTexture::GetKeywords(char *pszKeywords) const { if (pszKeywords != NULL) { *pszKeywords = '\0'; } return(0); } //----------------------------------------------------------------------------- // Purpose: // Input : *pszName - // Output : //----------------------------------------------------------------------------- // dvs: move into a common place for CWADTexture & CDummyTexture int CDummyTexture::GetShortName(char *pszName) const { char szBuf[MAX_PATH]; if (pszName == NULL) { pszName = szBuf; } if (m_eTextureFormat == tfWAL) { const char *psz = strstr(m_szName, "textures"); if (psz == NULL) { psz = m_szName; } else { psz += strlen("textures\\"); } strcpy(pszName, psz); // remove extension char *pszExtension = strstr(pszName, ".wal"); if (pszExtension) { *pszExtension = 0; } } else { strcpy(pszName, m_szName); } return(strlen(pszName)); } //----------------------------------------------------------------------------- // Purpose: If the buffer pointer passed in is not NULL, copies the image data // in RGB format to the buffer // Input : pImageRGB - Pointer to buffer that receives the image data. If the // pointer is NULL, no data is copied, only the data size is returned. // Output : Returns a the size of the RGB image in bytes. //----------------------------------------------------------------------------- int CDummyTexture::GetImageDataRGB( void *pImageRGB ) { return(0); } //----------------------------------------------------------------------------- // Purpose: If the buffer pointer passed in is not NULL, copies the image data // in RGBA format to the buffer // Input : pImageRGBA - Pointer to buffer that receives the image data. If the // pointer is NULL, no data is copied, only the data size is returned. // Output : Returns a the size of the RGBA image in bytes. //----------------------------------------------------------------------------- int CDummyTexture::GetImageDataRGBA( void *pImageRGBA ) { return(0); } //----------------------------------------------------------------------------- // Purpose: // Input : size - //----------------------------------------------------------------------------- void CDummyTexture::GetSize( SIZE &size ) const { size.cx = 0; size.cy = 0; } //----------------------------------------------------------------------------- // Purpose: Renders "No Image" into a device context as a placeholder for the // missing texture. // Input : pDC - // rect - // iFontHeight - // dwFlags - //----------------------------------------------------------------------------- void CDummyTexture::Draw(CDC *pDC, RECT &rect, int iFontHeight, int iIconHeight, DrawTexData_t &DrawTexData) { CFont *pOldFont = (CFont *)pDC->SelectStockObject(ANSI_VAR_FONT); COLORREF crText = pDC->SetTextColor(RGB(0xff, 0xff, 0xff)); COLORREF crBack = pDC->SetBkColor(RGB(0, 0, 0)); pDC->FillRect(&rect, CBrush::FromHandle(HBRUSH(GetStockObject(BLACK_BRUSH)))); pDC->TextOut(rect.left + 2, rect.top + 2, "No Image", 8); pDC->SelectObject(pOldFont); pDC->SetTextColor(crText); pDC->SetBkColor(crBack); } //----------------------------------------------------------------------------- // Purpose: Loads this texture from disk if it is not already loaded. // Output : Returns true on success, false on failure. //----------------------------------------------------------------------------- bool CDummyTexture::Load( void ) { return(true); }