mirror of
https://github.com/Maschell/libgui-sdl.git
synced 2024-11-04 23:35:10 +01:00
Add GuiImage:setBlendMode
Signed-off-by: Thomas Rohloff <v10lator@myway.de>
This commit is contained in:
parent
e61d10c828
commit
37550b59d4
@ -41,10 +41,15 @@ public:
|
||||
|
||||
void setTexture(GuiTextureData *tex);
|
||||
|
||||
int setBlendMode(SDL_BlendMode blendMode);
|
||||
|
||||
private:
|
||||
GuiTextureData *texture = nullptr;
|
||||
bool freeTextureData = false;
|
||||
|
||||
// Color of the rect that's drawn if the picture has no texture.
|
||||
SDL_Color color = {0, 0, 0, 0};
|
||||
|
||||
protected:
|
||||
SDL_BlendMode blendMode;
|
||||
};
|
||||
|
@ -47,11 +47,24 @@ void GuiImage::draw(Renderer *renderer) {
|
||||
if (texture) {
|
||||
texture->draw(renderer, rect, getAngle());
|
||||
} else {
|
||||
// copy the texture to the rendering context
|
||||
SDL_BlendMode mode;
|
||||
SDL_GetRenderDrawBlendMode(renderer->getRenderer(), &mode);
|
||||
|
||||
// adjust blend mode
|
||||
if(blendMode != mode){
|
||||
SDL_SetRenderDrawBlendMode(renderer->getRenderer(), blendMode);
|
||||
}
|
||||
|
||||
SDL_SetRenderDrawColor(renderer->getRenderer(), color.r, color.g, color.b, color.a);
|
||||
SDL_RenderFillRect(renderer->getRenderer(), &rect);
|
||||
if(getAngle() != 0.0f){
|
||||
LG_Log("Drawing a rotated rect is not supported yet");
|
||||
}
|
||||
|
||||
if(blendMode != mode){
|
||||
SDL_SetRenderDrawBlendMode(renderer->getRenderer(), mode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -64,3 +77,8 @@ void GuiImage::setTexture(GuiTextureData *tex) {
|
||||
this->setSize(tex->getWidth(), tex->getHeight());
|
||||
}
|
||||
}
|
||||
|
||||
int GuiImage::setBlendMode(SDL_BlendMode blendMode) {
|
||||
this->blendMode = blendMode;
|
||||
return this->texture ? this->texture->setBlendMode(blendMode) : 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user