You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.4 KiB
133 lines
3.4 KiB
//========= 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
|