1 /*
2  * OpenBOR - http://www.LavaLit.com
3  * -----------------------------------------------------------------------
4  * Licensed under the BSD license, see LICENSE in OpenBOR root for details.
5  *
6  * Copyright (c) 2004 - 2011 OpenBOR Team
7  */
8 
9 // Skin.h: interface for the CSkin class.
10 //
11 //////////////////////////////////////////////////////////////////////
12 
13 #if !defined(AFX_Skin_H__05039157_ACED_4430_B306_D88792C7A755__INCLUDED_)
14 #define AFX_Skin_H__05039157_ACED_4430_B306_D88792C7A755__INCLUDED_
15 
16 #if _MSC_VER > 1000
17 #pragma once
18 #endif // _MSC_VER > 1000
19 
20 #include <xtl.h>
21 #include "XmlDocument.h"
22 
23 #include <map>
24 #include <string>
25 using namespace std;
26 
27 #define COORDINATE_X_BASE	0
28 #define COORDINATE_Y_BASE	100
29 #define DIMENSION_W_BASE	200
30 #define DIMENSION_H_BASE	300
31 
32 typedef map<int,float>COORDINATE_MAP;
33 
34 class CMode
35 {
36 public:
37 
38 	CMode();
39 	virtual ~CMode();
40 
41 	HRESULT Create(CXmlDocument* pSkin, XmlNode xnMode);
42 	string	ToString();
43 
44 	COORDINATE_MAP	m_coordinates;
45 	INT				m_iWidth;
46 	INT				m_iHeight;
47 	BOOL			m_bWidescreen;
48 
49 private:
50 
51 	VOID	AddControl(CXmlDocument* pSkin, XmlNode modeNode);
52 	VOID	SetControlPosition(INT iControlId, FLOAT x, FLOAT y);
53 	VOID	SetControlDimensions(INT iControlId, FLOAT width, FLOAT height);
54 
55 private:
56 
57 	INT				m_lastid;
58 	string			m_name;
59 };
60 
61 typedef map<string,CMode*>MODE_MAP;
62 
63 class CSkin : public CXmlDocument
64 {
65 public:
66 
67 	CSkin();
68 	virtual ~CSkin();
69 
70 	HRESULT Create(CHAR* szXmlFile);
71 	CMode*  GetMode(INT iWidth, INT iHeight, BOOL bWidescreen);
72 	CMode*  GetDefaultMode();
73 
74 private:
75 
76 	MODE_MAP	m_modes;
77 	CMode*		m_pDefaultMode;
78 };
79 
80 #endif // !defined(AFX_Skin_H__05039157_ACED_4430_B306_D88792C7A755__INCLUDED_)
81