diff options
Diffstat (limited to 'hammer/texturewindow.h')
| -rw-r--r-- | hammer/texturewindow.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/hammer/texturewindow.h b/hammer/texturewindow.h new file mode 100644 index 0000000..9db7acb --- /dev/null +++ b/hammer/texturewindow.h @@ -0,0 +1,133 @@ +//========= Copyright 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 |