-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCTexture.cpp
More file actions
executable file
·124 lines (103 loc) · 2.48 KB
/
Copy pathCTexture.cpp
File metadata and controls
executable file
·124 lines (103 loc) · 2.48 KB
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
#include "CTexture.h"
#include <stdio.h>
#include <sstream>
CTexture::CTexture()
{
mTexture = NULL;
Angle = 0.0;
}
CTexture::~CTexture()
{
}
void CTexture::Draw(SDL_Renderer *renderer, int x, int y, int w, int h, float angle)
{
if (mTexture != NULL)
{
//Set rendering space and render to screen
SDL_Rect renderQuad = { x, y, w, h };
//Set clip rendering dimensions
//if (clip != NULL)
//{
// renderQuad.w = clip->w;
// renderQuad.h = clip->h;
//}
//Render to screen
SDL_RenderCopyEx(renderer, mTexture, NULL, &renderQuad, angle, NULL, SDL_FLIP_NONE);
}
}
void CTexture::Draw(SDL_Renderer *renderer, int x, int y, float angle)
{
if (mTexture != NULL)
{
//Set rendering space and render to screen
SDL_Rect renderQuad = { x, y, mTexW, mTexH };
//Set clip rendering dimensions
//if (clip != NULL)
//{
// renderQuad.w = clip->w;
// renderQuad.h = clip->h;
//}
//Render to screen
SDL_RenderCopyEx(renderer, mTexture, NULL, &renderQuad, angle, NULL, SDL_FLIP_NONE);
}
}
void CTexture::Draw(SDL_Renderer *renderer)
{
if (mTexture != NULL)
{
//Set rendering space and render to screen
SDL_Rect renderQuad = { X, Y, mTexW, mTexH };
//Set clip rendering dimensions
//if (clip != NULL)
//{
// renderQuad.w = clip->w;
// renderQuad.h = clip->h;
//}
//Render to screen
SDL_RenderCopyEx(renderer, mTexture, NULL, &renderQuad, 0.0, NULL, SDL_FLIP_NONE);
}
}
void CTexture::SetTexture(SDL_Texture *tex)
{
mTexture = tex;
}
void CTexture::SetPosition(int x, int y)
{
X = x;
Y = y;
}
bool CTexture::LoadFromFile(SDL_Renderer *renderer, std::string path)
{
//Get rid of preexisting texture
//free();
//The final texture
SDL_Texture* newTexture = NULL;
//Load image at specified path
SDL_Surface* loadedSurface = IMG_Load(path.c_str());
if (loadedSurface == NULL)
{
printf("Unable to load image %s! SDL_image Error: %s\n", path.c_str(), IMG_GetError());
}
else
{
//Color key image
SDL_SetColorKey(loadedSurface, SDL_TRUE, SDL_MapRGB(loadedSurface->format, 0, 0xFF, 0xFF));
//Create texture from surface pixels
newTexture = SDL_CreateTextureFromSurface(renderer, loadedSurface);
if (newTexture == NULL)
{
printf("Unable to create texture from %s! SDL Error: %s\n", path.c_str(), SDL_GetError());
}
else
{
//Get image dimensions
mTexW = loadedSurface->w;
mTexH = loadedSurface->h;
}
//Get rid of old loaded surface
SDL_FreeSurface(loadedSurface);
}
//Return success
mTexture = newTexture;
return mTexture != NULL;
}