summaryrefslogtreecommitdiffstats
path: root/src/graphics/engine/engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphics/engine/engine.cpp')
-rw-r--r--src/graphics/engine/engine.cpp43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp
index 7e00134..f3eb1dc 100644
--- a/src/graphics/engine/engine.cpp
+++ b/src/graphics/engine/engine.cpp
@@ -333,6 +333,8 @@ void CEngine::Destroy()
void CEngine::ResetAfterDeviceChanged()
{
+ m_text->FlushCache();
+
// TODO reload textures, reset device state, etc.
}
@@ -2254,13 +2256,14 @@ bool CEngine::ChangeTextureColor(const std::string& texName,
int dx = img.GetSize().x;
- int dy = img.GetSize().x;
+ int dy = img.GetSize().y;
+
+ int sx = static_cast<int>(Math::Max(ts.x*dx, 0));
+ int sy = static_cast<int>(Math::Max(ts.y*dy, 0));
- int sx = static_cast<int>(ts.x*dx);
- int sy = static_cast<int>(ts.y*dy);
+ int ex = static_cast<int>(Math::Min(ti.x*dx, dx));
+ int ey = static_cast<int>(Math::Min(ti.y*dy, dy));
- int ex = static_cast<int>(ti.x*dx);
- int ey = static_cast<int>(ti.y*dy);
ColorHSV cr1 = RGB2HSV(colorRef1);
ColorHSV cn1 = RGB2HSV(colorNew1);
@@ -2286,9 +2289,9 @@ bool CEngine::ChangeTextureColor(const std::string& texName,
if (c.h < 0.0f) c.h -= 1.0f;
if (c.h > 1.0f) c.h += 1.0f;
color = HSV2RGB(c);
- color.r += shift;
- color.g += shift;
- color.b += shift;
+ color.r = Math::Norm(color.r + shift);
+ color.g = Math::Norm(color.g + shift);
+ color.b = Math::Norm(color.b + shift);
img.SetPixel(Math::IntPoint(x, y), color);
}
else if (tolerance2 != -1.0f &&
@@ -2300,9 +2303,9 @@ bool CEngine::ChangeTextureColor(const std::string& texName,
if (c.h < 0.0f) c.h -= 1.0f;
if (c.h > 1.0f) c.h += 1.0f;
color = HSV2RGB(c);
- color.r += shift;
- color.g += shift;
- color.b += shift;
+ color.r = Math::Norm(color.r + shift);
+ color.g = Math::Norm(color.g + shift);
+ color.b = Math::Norm(color.b + shift);
img.SetPixel(Math::IntPoint(x, y), color);
}
}
@@ -2312,9 +2315,9 @@ bool CEngine::ChangeTextureColor(const std::string& texName,
fabs(color.g - colorRef1.g) +
fabs(color.b - colorRef1.b) < tolerance1 * 3.0f)
{
- color.r = colorNew1.r + color.r - colorRef1.r + shift;
- color.g = colorNew1.g + color.g - colorRef1.g + shift;
- color.b = colorNew1.b + color.b - colorRef1.b + shift;
+ color.r = Math::Norm(colorNew1.r + color.r - colorRef1.r + shift);
+ color.g = Math::Norm(colorNew1.g + color.g - colorRef1.g + shift);
+ color.b = Math::Norm(colorNew1.b + color.b - colorRef1.b + shift);
img.SetPixel(Math::IntPoint(x, y), color);
}
else if (tolerance2 != -1 &&
@@ -2322,9 +2325,9 @@ bool CEngine::ChangeTextureColor(const std::string& texName,
fabs(color.g - colorRef2.g) +
fabs(color.b - colorRef2.b) < tolerance2 * 3.0f)
{
- color.r = colorNew2.r + color.r - colorRef2.r + shift;
- color.g = colorNew2.g + color.g - colorRef2.g + shift;
- color.b = colorNew2.b + color.b - colorRef2.b + shift;
+ color.r = Math::Norm(colorNew2.r + color.r - colorRef2.r + shift);
+ color.g = Math::Norm(colorNew2.g + color.g - colorRef2.g + shift);
+ color.b = Math::Norm(colorNew2.b + color.b - colorRef2.b + shift);
img.SetPixel(Math::IntPoint(x, y), color);
}
}
@@ -3891,7 +3894,7 @@ void CEngine::DrawStats()
std::string triangleText = str.str();
float height = m_text->GetAscent(FONT_COLOBOT, 12.0f);
- float width = 0.15f;
+ float width = 0.2f;
Math::Point pos(0.04f, 0.04f + height);
@@ -3911,11 +3914,11 @@ void CEngine::DrawStats()
SetState(ENG_RSTATE_TEXT);
- m_text->DrawText(triangleText, FONT_COLOBOT, 12.0f, pos, 1.0f, TEXT_ALIGN_LEFT, 0);
+ m_text->DrawText(triangleText, FONT_COLOBOT, 12.0f, pos, 1.0f, TEXT_ALIGN_LEFT, 0, Color(1.0f, 1.0f, 1.0f, 1.0f));
pos.y -= height;
- m_text->DrawText(m_fpsText, FONT_COLOBOT, 12.0f, pos, 1.0f, TEXT_ALIGN_LEFT, 0);
+ m_text->DrawText(m_fpsText, FONT_COLOBOT, 12.0f, pos, 1.0f, TEXT_ALIGN_LEFT, 0, Color(1.0f, 1.0f, 1.0f, 1.0f));
}