/
GenSkins.h
166 lines (126 loc) · 4.16 KB
/
GenSkins.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/*********************************************************************************\
* GenSkins.h
* Generic Skin classes
* (C) 2002 MasterMind
\*********************************************************************************/
#ifndef __GENSKINS_H__
#define __GENSKINS_H__
#include <xtl.h>
#include <map>
#include <list>
#include "XBFont_mxm.h"
#include "ImageSource.h"
#include "StdString.h"
#include "XmlTree.h"
#define LET_IMAGE 0
#define LET_TEXT 1
#define LET_SPECIAL 2
#define LES_CACHE 0
#define LES_DYNAMIC 1
#define LEJ_LEFTX 0x0000
#define LEJ_TOPY 0x0000
#define LEJ_CENTERX 0x0001
#define LEJ_RIGHTX 0x0002
#define LEJ_CENTERY 0x0004
#define LEJ_BOTTOMY 0x0008
#define LEJ_PROPORTION 0x2000
#define LEJ_STRETCH 0x4000
#define LEJ_SHRINK 0x8000
class CGenericSkin;
class CLayoutElement;
extern CStdString GetElementText( LPCTSTR szSubSource, LPCTSTR szSourceLoc );
extern LPDIRECT3DTEXTURE8 GetElementTexture( LPCTSTR szSubSource, LPCTSTR szSourceLoc );
extern HRESULT RenderSpecial( CLayoutElement *pElement );
class CLayoutElement
{
public:
CLayoutElement();
~CLayoutElement();
CLayoutElement * GetPtr( void );
HRESULT Render( LPDIRECT3DDEVICE8 pDevice );
HRESULT RenderImage( LPDIRECT3DDEVICE8 pDevice );
HRESULT RenderText( LPDIRECT3DDEVICE8 pDevice );
HRESULT ProcessNode( CXMLNode * pNode );
TMapStrings m_msAttributes;
int m_iSource;
CStdString m_sSubSource;
CStdStringW m_sCacheString;
LPDIRECT3DTEXTURE8 m_pCacheTexture;
CGenericSkin * m_pParentSkin;
CStdString m_sFont;
int m_iType;
int m_iPosX; // Defaults to 0
int m_iPosY; // Defaults to 0
int m_iWidth; // Defaults to -1
int m_iHeight; // Defaults to -1
int m_iJustifyX; // 0=Left, 1=Center, 2=Right
int m_iJustifyY; // 0=Top, 1=Center, 2=Bottom
WORD m_wJustify; // XXYY
DWORD m_dwaColor[4]; // 4 corners for boxes
// for Text: 0 - text color, 1 - shadow 2 - Glow
DWORD m_dwColor;
DWORD m_dwAltColor;
CStdString m_sSourceLoc;
PVOID m_pSpecialDataPtr;
};
typedef list<CLayoutElement> TLayoutElements;
class CLayout
{
TLayoutElements m_elements;
TLayoutElements::iterator m_iterCurElement;
CStdString m_sName;
public:
CStdString GetName( void ) { return m_sName; };
void SetName( LPCTSTR szName ) { m_sName = szName; };
HRESULT Render( LPDIRECT3DDEVICE8 pDevice );
HRESULT ProcessNode( CXMLNode * pNode );
HRESULT ProcessLayoutElemNode( CXMLNode * pNode );
void Activate( void );
void Deactivate( void );
void Initialize( void );
CLayout();
~CLayout();
CLayoutElement * GetFirstElement( void );
CLayoutElement * GetNextElement( void );
CLayoutElement * GetLastElement( void );
CLayoutElement * AddLayoutElement( void );
};
typedef map<CStdString, CXBFont> TFontItems;
typedef map<CStdString, CImageSource> TImageItems;
typedef map<CStdString, CLayout> TLayouts;
class CGenericSkin
{
TImageItems m_images;
TFontItems m_fonts;
LPDIRECT3DDEVICE8 m_pd3dDevice;
LPDIRECTSOUND8 m_pDSound;
CLayout * m_pCacheLayout;
CStdString m_sCacheLayoutName;
CStdString m_sBasePath;
public:
HRESULT ProcessMainNode( CXMLNode * pNode );
HRESULT ProcessInfoNode( CXMLNode * pNode );
HRESULT ProcessResourceNode( CXMLNode * pNode );
HRESULT ProcessLayoutNode( CXMLNode * pNode );
CGenericSkin();
~CGenericSkin();
void SetDevices( LPDIRECT3DDEVICE8 pd3dDevice = NULL, LPDIRECTSOUND8 pDSound = NULL );
CStdString m_sSkinName;
CStdString m_sVersion;
CStdString m_sAuthor;
CStdString m_sCopyright;
TLayouts m_layouts;
TMapStrings m_msInformation;
HRESULT Render( LPCTSTR szLayout );
HRESULT Render( CLayout * pLayout );
CLayout * AddLayout( LPCTSTR szLayout );
CLayout * GetLayout( LPCTSTR szLayout );
HRESULT LoadSkin( LPCTSTR szXMLFile );
CXBFont * GetFontResource( LPCTSTR szName );
CXBFont * AddFontResource( LPCTSTR szName, LPCTSTR szFilePath = NULL );
CXBFont * AddFontResource( LPCTSTR szName, const LPBYTE pDataBuffer, LPCTSTR szSection = NULL );
CImageSource * GetImgResource( LPCTSTR szName );
CImageSource * AddImgResource( LPCTSTR szName, LPCTSTR szFilePath = NULL );
CImageSource * AddImgResource( LPCTSTR szName, const LPBYTE pDataBuffer, DWORD dwSize, LPCTSTR szSection = NULL );
};
#endif // __GENSKINS_H__