csgo-2018-source/hammer/texturewindow.h
2021-07-24 21:11:47 -07:00

134 lines
3.4 KiB
C++

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef TEXTUREWINDOW_H
#define TEXTUREWINDOW_H
#ifdef _WIN32
#pragma once
#endif
#include "IEditorTexture.h"
#include "UtlVector.h"
struct TextureWindowTex_t
{
IEditorTexture *pTex;
int nUsageCount;
};
class TextureWindowTexList : public CUtlVector<TextureWindowTex_t>
{
public:
inline int Find(IEditorTexture *pTex)
{
for (int i = 0; i < Count(); i++)
{
if (Element(i).pTex == pTex)
{
return i;
}
}
return -1;
}
};
class CTextureWindow : public CWnd
{
public:
CTextureWindow();
virtual ~CTextureWindow();
void Create(CWnd *pParentWnd, RECT& rect);
struct TWENUMPOS
{
IEditorTexture *pTex;
RECT texrect;
int cur_x, cur_y;
RECT clientrect;
int largest_y;
int iTexIndex;
int nUsageCount; // The number of times this texture is used in the map. Only set in "Used Textures Only" mode.
};
enum
{
TYPEFILTER_OPAQUE = 0x1,
TYPEFILTER_TRANSLUCENT = 0x2,
TYPEFILTER_SELFILLUM = 0x4,
TYPEFILTER_ENVMASK = 0x8,
TYPEFILTER_ALL = (TYPEFILTER_OPAQUE|TYPEFILTER_TRANSLUCENT|TYPEFILTER_SELFILLUM|TYPEFILTER_ENVMASK),
};
void EnableUpdate(bool bEnable);
void UpdateScrollSizes();
BOOL EnumTexturePositions(TWENUMPOS *pTE, BOOL bStart = FALSE);
void SetDisplaySize(int iSize);
void HighlightCurTexture(CDC *pDC = NULL);
void SetNameFilter(LPCTSTR pszFilter);
void SetKeywords(const char *pszKeywords);
void SetTextureFormat(TEXTUREFORMAT eTextureFormat);
void SelectTexture(LPCTSTR pszTexture, BOOL bAllowRedraw = TRUE);
void SetSpecificList(TextureWindowTexList *pList);
void SetTypeFilter( int filter, bool enable );
void ShowErrors( bool enable ) { m_bShowErrors = true; }
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTextureWindow)
//}}AFX_VIRTUAL
char szCurTexture[128];
protected:
bool MatchKeywords(const char *pszSearch, char **pszKeyword, int nKeywords);
int total_x;
int total_y;
int iDisplaySize;
int iTexNameCharWidth;
BOOL bFirstPaint;
CFont TexFont;
TextureWindowTexList *m_pSpecificList;
CRect rectHighlight;
int m_nTypeFilter;
char m_szFilter[128]; // Name filter, space, comma, or semicolon delimited.
int m_nFilters; // The number of names that were parsed out of the name filter.
char *m_Filters[64]; // The individual name filters.
char m_szKeywords[128]; // Keyword filter, space, comma, or semicolon delimited.
int m_nKeywords; // The number of keywords that were parsed out of the name filter.
char *m_Keyword[64]; // The individual keywords.
bool m_bEnableUpdate; // Locks GUI updates to control repaints.
bool m_bShowErrors;
TEXTUREFORMAT m_eTextureFormat;
//{{AFX_MSG(CTextureWindow)
afx_msg void OnPaint();
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
#endif // TEXTUREWINDOW_H