diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2012-09-26 16:31:04 +0200 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2012-09-26 16:31:04 +0200 |
commit | 45fd8aad33029746424031e12777f2824bda245e (patch) | |
tree | 7c984ec6bfda42c807ba48440f6d61fcef9056ef /src/graphics/engine | |
parent | b06544871ae48871fc302706ecc49b78c6bcb3d2 (diff) | |
download | colobot-45fd8aad33029746424031e12777f2824bda245e.tar.gz colobot-45fd8aad33029746424031e12777f2824bda245e.tar.bz2 colobot-45fd8aad33029746424031e12777f2824bda245e.zip |
Fog color fix; refactoring
- fixed fog color setting
- removed unused glSecondaryColor and altered struct VertexCol
- minor refactoring in CText
Diffstat (limited to 'src/graphics/engine')
-rw-r--r-- | src/graphics/engine/engine.cpp | 16 | ||||
-rw-r--r-- | src/graphics/engine/text.cpp | 78 | ||||
-rw-r--r-- | src/graphics/engine/text.h | 7 |
3 files changed, 51 insertions, 50 deletions
diff --git a/src/graphics/engine/engine.cpp b/src/graphics/engine/engine.cpp index 37f9b00..c170922 100644 --- a/src/graphics/engine/engine.cpp +++ b/src/graphics/engine/engine.cpp @@ -3417,10 +3417,10 @@ void CEngine::DrawBackgroundGradient(const Color& up, const Color& down) VertexCol vertex[4] = { - VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1], color[2]), - VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0], color[2]), - VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1], color[2]), - VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0], color[2]) + VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1]), + VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0]), + VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1]), + VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0]) }; m_device->DrawPrimitive(PRIMITIVE_TRIANGLE_STRIP, vertex, 4); @@ -3567,10 +3567,10 @@ void CEngine::DrawOverColor() VertexCol vertex[4] = { - VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1], color[2]), - VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0], color[2]), - VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1], color[2]), - VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0], color[2]) + VertexCol(Math::Vector(p1.x, p1.y, 0.0f), color[1]), + VertexCol(Math::Vector(p1.x, p2.y, 0.0f), color[0]), + VertexCol(Math::Vector(p2.x, p1.y, 0.0f), color[1]), + VertexCol(Math::Vector(p2.x, p2.y, 0.0f), color[0]) }; m_device->DrawPrimitive(PRIMITIVE_TRIANGLE_STRIP, vertex, 4); diff --git a/src/graphics/engine/text.cpp b/src/graphics/engine/text.cpp index da9f4ac..00b6617 100644 --- a/src/graphics/engine/text.cpp +++ b/src/graphics/engine/text.cpp @@ -150,8 +150,8 @@ void CText::FlushCache() } void CText::DrawText(const std::string &text, const std::vector<FontMetaChar> &format, - float size, Math::Point pos, float width, TextAlign align, - int eol) + float size, Math::Point pos, float width, TextAlign align, + int eol) { float sw = 0.0f; @@ -172,8 +172,8 @@ void CText::DrawText(const std::string &text, const std::vector<FontMetaChar> &f } void CText::DrawText(const std::string &text, FontType font, - float size, Math::Point pos, float width, TextAlign align, - int eol) + float size, Math::Point pos, float width, TextAlign align, + int eol) { float sw = 0.0f; @@ -194,8 +194,8 @@ void CText::DrawText(const std::string &text, FontType font, } void CText::SizeText(const std::string &text, const std::vector<FontMetaChar> &format, - float size, Math::Point pos, TextAlign align, - Math::Point &start, Math::Point &end) + float size, Math::Point pos, TextAlign align, + Math::Point &start, Math::Point &end) { start = end = pos; @@ -217,8 +217,8 @@ void CText::SizeText(const std::string &text, const std::vector<FontMetaChar> &f } void CText::SizeText(const std::string &text, FontType font, - float size, Math::Point pos, TextAlign align, - Math::Point &start, Math::Point &end) + float size, Math::Point pos, TextAlign align, + Math::Point &start, Math::Point &end) { start = end = pos; @@ -277,7 +277,7 @@ float CText::GetHeight(FontType font, float size) float CText::GetStringWidth(const std::string &text, - const std::vector<FontMetaChar> &format, float size) + const std::vector<FontMetaChar> &format, float size) { assert(StrUtils::Utf8StringLength(text) == format.size()); @@ -344,7 +344,7 @@ float CText::GetCharWidth(UTF8Char ch, FontType font, float size, float offset) int CText::Justify(const std::string &text, const std::vector<FontMetaChar> &format, - float size, float width) + float size, float width) { assert(StrUtils::Utf8StringLength(text) == format.size()); @@ -427,7 +427,7 @@ int CText::Justify(const std::string &text, FontType font, float size, float wid } int CText::Detect(const std::string &text, const std::vector<FontMetaChar> &format, - float size, float offset) + float size, float offset) { assert(StrUtils::Utf8StringLength(text) == format.size()); @@ -500,7 +500,7 @@ int CText::Detect(const std::string &text, FontType font, float size, float offs } void CText::DrawString(const std::string &text, const std::vector<FontMetaChar> &format, - float size, Math::Point pos, float width, int eol) + float size, Math::Point pos, float width, int eol) { assert(StrUtils::Utf8StringLength(text) == format.size()); @@ -511,9 +511,10 @@ void CText::DrawString(const std::string &text, const std::vector<FontMetaChar> unsigned int fmtIndex = 0; - std::vector<UTF8Char> chars = StringToUTFCharList(text); - for(auto it=chars.begin(); it != chars.end(); ++it){ - + std::vector<UTF8Char> chars; + StringToUTFCharList(text, chars); + for (auto it = chars.begin(); it != chars.end(); ++it) + { font = static_cast<FontType>(format[fmtIndex] & FONT_MASK_FONT); // TODO: if (font == FONT_BUTTON) @@ -546,37 +547,38 @@ void CText::DrawString(const std::string &text, const std::vector<FontMetaChar> // TODO: eol } -std::vector<UTF8Char> CText::StringToUTFCharList(const std::string &text) { - std::vector<UTF8Char> v; - unsigned int index = 0; - while (index < text.length()) - { - UTF8Char ch; - - int len = StrUtils::Utf8CharSizeAt(text, index); - if (len >= 1) - ch.c1 = text[index]; - if (len >= 2) - ch.c2 = text[index+1]; - if (len >= 3) - ch.c3 = text[index+2]; - - index += len; - - v.push_back(ch); - } - return v; +void CText::StringToUTFCharList(const std::string &text, std::vector<UTF8Char> &chars) +{ + unsigned int index = 0; + while (index < text.length()) + { + UTF8Char ch; + + int len = StrUtils::Utf8CharSizeAt(text, index); + if (len >= 1) + ch.c1 = text[index]; + if (len >= 2) + ch.c2 = text[index+1]; + if (len >= 3) + ch.c3 = text[index+2]; + + index += len; + + chars.push_back(ch); + } } void CText::DrawString(const std::string &text, FontType font, - float size, Math::Point pos, float width, int eol) + float size, Math::Point pos, float width, int eol) { assert(font != FONT_BUTTON); m_engine->SetState(ENG_RSTATE_TEXT); - std::vector<UTF8Char> chars = StringToUTFCharList(text); - for(auto it=chars.begin(); it != chars.end(); ++it){ + std::vector<UTF8Char> chars; + StringToUTFCharList(text, chars); + for (auto it = chars.begin(); it != chars.end(); ++it) + { DrawCharAndAdjustPos(*it, font, size, pos); } } diff --git a/src/graphics/engine/text.h b/src/graphics/engine/text.h index 0ecf7cd..bb9a32d 100644 --- a/src/graphics/engine/text.h +++ b/src/graphics/engine/text.h @@ -293,11 +293,10 @@ protected: float size, Math::Point pos, float width, int eol); void DrawHighlight(FontHighlight hl, Math::Point pos, Math::Point size); void DrawCharAndAdjustPos(UTF8Char ch, FontType font, float size, Math::Point &pos); - std::vector<UTF8Char> - StringToUTFCharList(const std::string &text); + void StringToUTFCharList(const std::string &text, std::vector<UTF8Char> &chars); protected: - CInstanceManager* m_iMan; + CInstanceManager* m_iMan; CEngine* m_engine; CDevice* m_device; @@ -307,7 +306,7 @@ protected: std::map<FontType, MultisizeFont*> m_fonts; FontType m_lastFontType; - int m_lastFontSize; + int m_lastFontSize; CachedFont* m_lastCachedFont; }; |