Subversion Repositories spk

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
11 cycrow 1
// TextureFile.h: interface for the CTextureFile class.
2
//
3
//////////////////////////////////////////////////////////////////////
4
 
5
#if !defined(AFX_TEXTUREFILE_H__07FEFD54_9847_4F3E_9BF1_20F80C6B5EA4__INCLUDED_)
6
#define AFX_TEXTUREFILE_H__07FEFD54_9847_4F3E_9BF1_20F80C6B5EA4__INCLUDED_
7
 
8
#if _MSC_VER > 1000
9
#pragma once
10
#endif // _MSC_VER > 1000
11
 
12
#define TEXTUREFILE_VERSION 1.20
13
 
14
#define DIRECT3D
15
 
16
enum {TEXTURELOAD_OK, TEXTURELOAD_NOFILE, TEXTURELOAD_INVALIDFORMAT, TEXTURELOAD_SIZEMISMATCH};
17
 
18
#include <Utils/String.h>
19
 
20
typedef struct {
21
	unsigned char r;
22
	unsigned char g;
23
	unsigned char b;
24
	unsigned char alpha;
25
} STextureData;
26
 
27
typedef struct {
28
	int width;
29
	int height;
30
	int num;
31
} STextureSize;
32
 
33
typedef struct {
34
	unsigned int cols;
35
	unsigned int rows;
36
	unsigned int x;
37
	unsigned int y;
38
} STextureFrames;
39
 
40
typedef struct {
41
	unsigned int minx;
42
	unsigned int maxx;
43
	unsigned int miny;
44
	unsigned int maxy;
45
} SFrameBounds;
46
 
47
typedef struct {
48
	char *name;
49
	int   delay;
50
	int   amt;
51
	int  *frames;
52
	bool  cont;
53
	bool  remove;
54
} SAnimation;
55
 
56
typedef struct {
57
	SAnimation *anim;
58
	int			curframe;
59
	int			delay;
60
	bool        reverse;
61
} SPlayAnimation;
62
 
63
//#include "Visualisation.h"
64
#include <d3dx9.h>
65
 
66
class CTextureFile  
67
{
68
public:
69
	static std::string GetErrorText ( int error );
70
 
71
public:
72
	bool CheckAlpha ( int x, int y, int frame, bool inccollisionmap = true );
73
	int GetFrameHeight();
74
	int GetFrameWidth();
75
	void SetEditor();
76
	SAnimation * GetAnimation ( int num );
77
	SAnimation * FindAnimation ( const char *search );
78
	int GetAnimationNum();
79
	SAnimation * AddNewAnimation ( const char *name );
80
	bool GetAlphaMap ( int *red, int *green, int *blue );
81
	void SetAlphaMap ( int red, int green, int blue );
82
	bool GetAlphaMap();
83
	void EnableAlphamap ( bool enable = true );
84
	void SetFrames ( int rows, int cols );
85
	const STextureFrames * GetFrames();
86
	void SetFrameSize ( int width, int height );
87
	bool Load ( const char *filename );
88
	bool Save ( const char *filename );
89
	bool SaveTGA ( const char *filename );
90
 
91
	int GetWidth() { return m_width; }
92
	int GetHeight() { return m_height; }
93
 
94
	int GetMinAlphaX ( int frame ) { return m_framebounds[frame].minx; }
95
	int GetMaxAlphaX ( int frame ) { return m_framebounds[frame].maxx; }
96
	int GetMinAlphaY ( int frame ) { return m_framebounds[frame].miny; }
97
	int GetMaxAlphaY ( int frame ) { return m_framebounds[frame].maxy; }
98
 
99
#ifdef DIRECT3D
100
	LPDIRECT3DTEXTURE9 CreateTexture ( LPDIRECT3DDEVICE9 device );
101
	LPDIRECT3DTEXTURE9 CreateCollisionTexture(LPDIRECT3DDEVICE9 device, DWORD nRed, DWORD nGreen, DWORD nBlue);
102
#endif //DIRECT3D
103
 
104
	int LoadTextureTGA(const char *filename );
105
	int LoadCollisionTGA(const char *filename );
106
 
107
	bool CollisionMap () { return m_collisionMap; }
108
 
109
	void WipeCollisionMap () { if ( m_collisionData ) delete [] m_collisionData; m_collisionMap = false; m_collisionData = NULL; }
110
 
111
	CTextureFile ( bool editor = false );
112
 
113
	virtual ~CTextureFile();
114
 
115
private:
116
	int ComputeMinAlphaX ( int frame );
117
	int ComputeMaxAlphaX ( int frame );
118
	int ComputeMinAlphaY ( int frame );
119
	int ComputeMaxAlphaY ( int frame );
120
 
121
	typedef struct {
122
		bool alpha;
123
		int alphamap[3];
124
		bool frames;
125
		int height;
126
		int width;
127
	} SFileHeader;
128
 
129
	STextureData *m_data;
130
	STextureFrames  m_frames;
131
 
132
	int  m_numData;		// number of entries in array (width * height)
133
	int  m_width;		// width of texture file
134
	int  m_height;		// height of texture file
135
	bool m_alpha;
136
	int  m_alphamap[3];
137
 
138
	int m_numframes;
139
	SFrameBounds *m_framebounds;
140
 
141
	void ClearHeader ( SFileHeader *header );
142
	STextureData *LoadTGA(const char *filename, STextureSize *tsize, int *error );
143
	STextureData *CreateData(int width, int height, STextureSize *size );
144
 
145
	SAnimation  *m_anim;
146
	int			 m_animNum;
147
 
148
	bool         m_editor;
149
 
150
	bool		 m_collisionMap;
151
	bool		*m_collisionData;
152
};
153
 
154
void IncAnimationFrame ( SPlayAnimation *anim, int *times = NULL );
155
void IncAnimationFrame ( SPlayAnimation *anim, bool endstop, int *times = NULL );
156
void DecAnimationFrame ( SPlayAnimation *anim, int *times = NULL );
157
void DecAnimationFrame ( SPlayAnimation *anim, bool endstop, int *times = NULL );
158
void DoAnimation ( SPlayAnimation *anim, bool endstopinc, bool endstopdec, int *times = NULL );
159
void ResetAnimation ( SPlayAnimation *anim );
160
 
161
#endif // !defined(AFX_TEXTUREFILE_H__07FEFD54_9847_4F3E_9BF1_20F80C6B5EA4__INCLUDED_)