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
|
/*
** Haaf's Game Engine 1.7
** Copyright (C) 2003-2007, Relish Games
** hge.relishgames.com
**
** hgeSprite helper class header
*/
#ifndef HGESPRITE_H
#define HGESPRITE_H
#include "hge.h"
#include "hgerect.h"
/*
** HGE Sprite class
*/
class hgeSprite
{
public:
hgeSprite(HTEXTURE tex, float x, float y, float w, float h);
hgeSprite(const hgeSprite &spr);
~hgeSprite() { hge->Release(); }
void Render(float x, float y);
void RenderEx(float x, float y, float rot, float hscale=1.0f, float vscale=0.0f);
void RenderStretch(float x1, float y1, float x2, float y2);
void Render4V(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3);
void SetTexture(HTEXTURE tex);
void SetTextureRect(float x, float y, float w, float h, bool adjSize = true);
void SetColor(DWORD col, int i=-1);
void SetZ(float z, int i=-1);
void SetBlendMode(int blend) { quad.blend=blend; }
void SetHotSpot(float x, float y) { hotX=x; hotY=y; }
void SetFlip(bool bX, bool bY, bool bHotSpot = false);
HTEXTURE GetTexture() const { return quad.tex; }
void GetTextureRect(float *x, float *y, float *w, float *h) const { *x=tx; *y=ty; *w=width; *h=height; }
DWORD GetColor(int i=0) const { return quad.v[i].col; }
float GetZ(int i=0) const { return quad.v[i].z; }
int GetBlendMode() const { return quad.blend; }
void GetHotSpot(float *x, float *y) const { *x=hotX; *y=hotY; }
void GetFlip(bool *bX, bool *bY) const { *bX=bXFlip; *bY=bYFlip; }
float GetWidth() const { return width; }
float GetHeight() const { return height; }
hgeRect* GetBoundingBox(float x, float y, hgeRect *rect) const { rect->Set(x-hotX, y-hotY, x-hotX+width, y-hotY+height); return rect; }
hgeRect* GetBoundingBoxEx(float x, float y, float rot, float hscale, float vscale, hgeRect *rect) const;
protected:
hgeSprite();
static HGE *hge;
hgeQuad quad;
float tx, ty, width, height;
float tex_width, tex_height;
float hotX, hotY;
bool bXFlip, bYFlip, bHSFlip;
};
#endif
|