Skip to content

Commit 1922cd7

Browse files
committed
setSpriteColor(Color) -> setSpriteColor(Rgb)
1 parent d95c5f0 commit 1922cd7

File tree

5 files changed

+37
-55
lines changed

5 files changed

+37
-55
lines changed

src/jngl/FrameBuffer.cpp

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,8 @@ void FrameBuffer::draw(const Vec2 position, const ShaderProgram* const shaderPro
110110
glUniformMatrix3fv(shaderProgram->getUniformLocation("modelview"), 1, GL_FALSE,
111111
opengl::modelview.data);
112112
} else {
113-
glUniform4f(Texture::shaderSpriteColorUniform, static_cast<float>(spriteColorRed) / 255.0f,
114-
static_cast<float>(spriteColorGreen) / 255.0f,
115-
static_cast<float>(spriteColorBlue) / 255.0f,
116-
static_cast<float>(spriteColorAlpha) / 255.0f);
113+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
114+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
117115
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, opengl::modelview.data);
118116
}
119117
impl->texture.draw();
@@ -129,10 +127,8 @@ void FrameBuffer::draw(Mat3 modelview, const ShaderProgram* const shaderProgram)
129127
-impl->height / getScaleFactor() / 2 })
130128
.data);
131129
} else {
132-
glUniform4f(Texture::shaderSpriteColorUniform, static_cast<float>(spriteColorRed) / 255.0f,
133-
static_cast<float>(spriteColorGreen) / 255.0f,
134-
static_cast<float>(spriteColorBlue) / 255.0f,
135-
static_cast<float>(spriteColorAlpha) / 255.0f);
130+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
131+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
136132
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE,
137133
modelview.scale(1, -1)
138134
.translate({ -impl->width / getScaleFactor() / 2,
@@ -151,10 +147,8 @@ void FrameBuffer::drawMesh(const std::vector<Vertex>& vertexes,
151147
glUniformMatrix3fv(shaderProgram->getUniformLocation("modelview"), 1, GL_FALSE,
152148
opengl::modelview.data);
153149
} else {
154-
glUniform4f(Texture::shaderSpriteColorUniform, static_cast<float>(spriteColorRed) / 255.0f,
155-
static_cast<float>(spriteColorGreen) / 255.0f,
156-
static_cast<float>(spriteColorBlue) / 255.0f,
157-
static_cast<float>(spriteColorAlpha) / 255.0f);
150+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
151+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
158152
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, opengl::modelview.data);
159153
}
160154
impl->texture.drawMesh(vertexes);

src/jngl/sprite.cpp

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,8 @@ void Sprite::draw() const {
148148
pushMatrix();
149149
opengl::translate(static_cast<float>(position.x), static_cast<float>(position.y));
150150
auto context = Texture::textureShaderProgram->use();
151-
glUniform4f(Texture::shaderSpriteColorUniform, float(spriteColorRed) / 255.0f,
152-
float(spriteColorGreen) / 255.0f, float(spriteColorBlue) / 255.0f,
153-
float(spriteColorAlpha) / 255.0f);
151+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(), gSpriteColor.getGreen(),
152+
gSpriteColor.getBlue(), gSpriteColor.getAlpha());
154153
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, opengl::modelview.data);
155154
texture->draw();
156155
popMatrix();
@@ -164,9 +163,8 @@ void Sprite::draw(Mat3 modelview, const ShaderProgram* const shaderProgram) cons
164163
glUniformMatrix3fv(shaderProgram->getUniformLocation("modelview"), 1, GL_FALSE,
165164
modelview.data);
166165
} else {
167-
glUniform4f(Texture::shaderSpriteColorUniform, float(spriteColorRed) / 255.0f,
168-
float(spriteColorGreen) / 255.0f, float(spriteColorBlue) / 255.0f,
169-
float(spriteColorAlpha) / 255.0f);
166+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
167+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
170168
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, modelview.data);
171169
}
172170
texture->draw();
@@ -181,8 +179,8 @@ void Sprite::draw(const ShaderProgram* const shaderProgram) const {
181179
opengl::modelview.data);
182180
}
183181
else {
184-
glUniform4f(Texture::shaderSpriteColorUniform, float(spriteColorRed) / 255.0f, float(spriteColorGreen) / 255.0f,
185-
float(spriteColorBlue) / 255.0f, float(spriteColorAlpha) / 255.0f);
182+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
183+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
186184
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, opengl::modelview.data);
187185
}
188186
texture->draw();
@@ -200,8 +198,8 @@ void Sprite::drawScaled(float xfactor, float yfactor,
200198
opengl::modelview.data);
201199
}
202200
else {
203-
glUniform4f(Texture::shaderSpriteColorUniform, float(spriteColorRed) / 255.0f, float(spriteColorGreen) / 255.0f,
204-
float(spriteColorBlue) / 255.0f, float(spriteColorAlpha) / 255.0f);
201+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
202+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
205203
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, opengl::modelview.data);
206204
}
207205
texture->draw();
@@ -218,9 +216,10 @@ void Sprite::drawClipped(float xstart, float xend, float ystart, float yend) con
218216
void Sprite::drawClipped(const Vec2 start, const Vec2 end) const {
219217
pushMatrix();
220218
opengl::translate(static_cast<float>(position.x), static_cast<float>(position.y));
221-
texture->drawClipped(float(start.x), float(end.x), float(start.y), float(end.y),
222-
float(spriteColorRed) / 255.0f, float(spriteColorGreen) / 255.0f,
223-
float(spriteColorBlue) / 255.0f, float(spriteColorAlpha) / 255.0f);
219+
texture->drawClipped(static_cast<float>(start.x), static_cast<float>(end.x),
220+
static_cast<float>(start.y), static_cast<float>(end.y),
221+
gSpriteColor.getRed(), gSpriteColor.getGreen(), gSpriteColor.getBlue(),
222+
gSpriteColor.getAlpha());
224223
popMatrix();
225224
}
226225

@@ -235,10 +234,8 @@ void Sprite::drawMesh(Mat3 modelview, const std::vector<Vertex>& vertexes,
235234
glUniformMatrix3fv(shaderProgram->getUniformLocation("modelview"), 1, GL_FALSE,
236235
modelview.data);
237236
} else {
238-
glUniform4f(Texture::shaderSpriteColorUniform, static_cast<float>(spriteColorRed) / 255.0f,
239-
static_cast<float>(spriteColorGreen) / 255.0f,
240-
static_cast<float>(spriteColorBlue) / 255.0f,
241-
static_cast<float>(spriteColorAlpha) / 255.0f);
237+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
238+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
242239
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, modelview.data);
243240
}
244241
texture->drawMesh(vertexes);
@@ -257,10 +254,8 @@ void Sprite::drawMesh(const std::vector<Vertex>& vertexes,
257254
glUniformMatrix3fv(shaderProgram->getUniformLocation("modelview"), 1, GL_FALSE,
258255
opengl::modelview.data);
259256
} else {
260-
glUniform4f(Texture::shaderSpriteColorUniform, static_cast<float>(spriteColorRed) / 255.0f,
261-
static_cast<float>(spriteColorGreen) / 255.0f,
262-
static_cast<float>(spriteColorBlue) / 255.0f,
263-
static_cast<float>(spriteColorAlpha) / 255.0f);
257+
glUniform4f(Texture::shaderSpriteColorUniform, gSpriteColor.getRed(),
258+
gSpriteColor.getGreen(), gSpriteColor.getBlue(), gSpriteColor.getAlpha());
264259
glUniformMatrix3fv(Texture::modelviewUniform, 1, GL_FALSE, opengl::modelview.data);
265260
}
266261
texture->drawMesh(vertexes);

src/jngl/sprite.hpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
// Copyright 2012-2023 Jan Niklas Hasse <[email protected]>
1+
// Copyright 2012-2024 Jan Niklas Hasse <[email protected]>
22
// For conditions of distribution and use, see copyright notice in LICENSE.txt
33
/// Contains jngl::Sprite class and related functions
44
/// \file
55
#pragma once
66

7-
#include "Color.hpp"
87
#include "Drawable.hpp"
8+
#include "Rgb.hpp"
99
#include "ShaderProgram.hpp"
1010
#include "Vec2.hpp"
1111

@@ -185,7 +185,8 @@ void setSpriteColor(unsigned char red, unsigned char green, unsigned char blue,
185185

186186
void setSpriteColor(unsigned char red, unsigned char green, unsigned char blue);
187187

188-
void setSpriteColor(Color);
188+
/// Sets the global color used for drawing Sprites, leaves the alpha value untouched
189+
void setSpriteColor(Rgb);
189190

190191
void setSpriteAlpha(unsigned char alpha);
191192

src/spriteimpl.cpp

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,51 +3,43 @@
33

44
#include "spriteimpl.hpp"
55

6+
#include "jngl/Alpha.hpp"
67
#include "jngl/ImageData.hpp"
78
#include "jngl/message.hpp"
89
#include "texture.hpp"
910
#include "windowptr.hpp"
1011

1112
namespace jngl {
1213

13-
unsigned char spriteColorRed = 255, spriteColorGreen = 255, spriteColorBlue = 255,
14-
spriteColorAlpha = 255;
14+
Rgba gSpriteColor{ 1, 1, 1, 1 };
1515

1616
void setSpriteColor(unsigned char red, unsigned char green, unsigned char blue) {
17-
spriteColorRed = red;
18-
spriteColorGreen = green;
19-
spriteColorBlue = blue;
17+
gSpriteColor.setRgb(Rgb::u8(red, green, blue));
2018
}
2119

22-
void setSpriteColor(Color color) {
23-
spriteColorRed = color.getRed();
24-
spriteColorGreen = color.getGreen();
25-
spriteColorBlue = color.getBlue();
20+
void setSpriteColor(Rgb color) {
21+
gSpriteColor.setRgb(color);
2622
}
2723

2824
std::stack<float> spriteAlphas;
2925

3026
void pushSpriteAlpha(unsigned char alpha) {
31-
spriteAlphas.push(spriteColorAlpha);
32-
setSpriteAlpha(spriteColorAlpha * alpha / 255);
27+
spriteAlphas.push(gSpriteColor.getAlpha());
28+
gSpriteColor.setAlpha(gSpriteColor.getAlpha() * Alpha::u8(alpha).getAlpha());
3329
}
3430

3531
void popSpriteAlpha() {
36-
setSpriteAlpha(spriteAlphas.top());
32+
gSpriteColor.setAlpha(spriteAlphas.top());
3733
spriteAlphas.pop();
3834
}
3935

4036
void setSpriteColor(unsigned char red, unsigned char green, unsigned char blue,
4137
unsigned char alpha) {
42-
spriteColorRed = red;
43-
spriteColorGreen = green;
44-
spriteColorBlue = blue;
45-
spriteColorAlpha = alpha;
38+
gSpriteColor = Rgba::u8(red, green, blue, alpha);
4639
}
4740

4841
void setSpriteAlpha(unsigned char alpha) {
49-
spriteColorAlpha = alpha;
50-
setSpriteColor(spriteColorRed, spriteColorGreen, spriteColorBlue, alpha);
42+
gSpriteColor.setAlpha(Alpha::u8(alpha));
5143
}
5244

5345
std::unordered_map<std::string, std::shared_ptr<Sprite>> sprites_;

src/spriteimpl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace jngl {
1111
Finally loadSprite(const std::string&);
1212
Sprite& GetSprite(const std::string& filename, Sprite::LoadType loadType = Sprite::LoadType::NORMAL);
1313

14-
extern unsigned char spriteColorRed, spriteColorGreen, spriteColorBlue, spriteColorAlpha;
14+
extern Rgba gSpriteColor;
1515
extern Rgba gShapeColor;
1616

1717
} // namespace jngl

0 commit comments

Comments
 (0)