1
0
forked from 0ad/0ad

Removes Z value from TextRenderer translate, renames TextRenderer methods to more explicit ones.

This was SVN commit r25645.
This commit is contained in:
Vladislav Belov 2021-06-02 21:21:28 +00:00
parent ad9cb9d467
commit 2d455df18d
8 changed files with 52 additions and 65 deletions

View File

@ -33,8 +33,8 @@
CTextRenderer::CTextRenderer()
{
ResetTransform();
Color(CColor(1.0f, 1.0f, 1.0f, 1.0f));
Font(str_sans_10);
SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
SetCurrentFont(str_sans_10);
}
void CTextRenderer::ResetTransform()
@ -63,10 +63,10 @@ void CTextRenderer::SetTransform(const CMatrix3D& transform)
m_Dirty = true;
}
void CTextRenderer::Translate(float x, float y, float z)
void CTextRenderer::Translate(float x, float y)
{
CMatrix3D m;
m.SetTranslation(x, y, z);
m.SetTranslation(x, y, 0.0f);
m_Transform = m_Transform * m;
m_Dirty = true;
}
@ -76,7 +76,7 @@ void CTextRenderer::SetClippingRect(const CRect& rect)
m_Clipping = rect;
}
void CTextRenderer::Color(const CColor& color)
void CTextRenderer::SetCurrentColor(const CColor& color)
{
if (m_Color != color)
{
@ -85,12 +85,7 @@ void CTextRenderer::Color(const CColor& color)
}
}
void CTextRenderer::Color(float r, float g, float b, float a)
{
Color(CColor(r, g, b, a));
}
void CTextRenderer::Font(CStrIntern font)
void CTextRenderer::SetCurrentFont(CStrIntern font)
{
if (font != m_FontName)
{
@ -137,7 +132,7 @@ void CTextRenderer::PutAdvance(const wchar_t* buf)
int w, h;
m_Font->CalculateStringSize(buf, w, h);
Translate((float)w, 0.0f, 0.0f);
Translate((float)w, 0.0f);
}
void CTextRenderer::Put(float x, float y, const wchar_t* buf)

View File

@ -42,7 +42,7 @@ public:
void SetTransform(const CMatrix3D& transform);
void Translate(float x, float y, float z);
void Translate(float x, float y);
/**
* Set clipping rectangle, in pre-transform coordinates (i.e. text is clipped against
@ -55,17 +55,12 @@ public:
/**
* Set the color for subsequent print calls.
*/
void Color(const CColor& color);
/**
* Set the color for subsequent print calls.
*/
void Color(float r, float g, float b, float a = 1.0);
void SetCurrentColor(const CColor& color);
/**
* Set the font for subsequent print calls.
*/
void Font(CStrIntern font);
void SetCurrentFont(CStrIntern font);
/**
* Print formatted text at (0,0) under the current transform,
@ -173,7 +168,7 @@ private:
CStrIntern m_FontName;
std::shared_ptr<CFont> m_Font;
bool m_Dirty;
bool m_Dirty = true;
std::list<SBatch> m_Batches;
};

View File

@ -449,7 +449,7 @@ void CGUIText::Draw(CGUI& pGUI, CCanvas2D& canvas, const CGUIColor& DefaultColor
CTextRenderer textRenderer;
textRenderer.SetClippingRect(clipping);
textRenderer.Translate(0.0f, 0.0f, 0.0f);
textRenderer.Translate(0.0f, 0.0f);
for (const STextCall& tc : m_TextCalls)
{
@ -457,8 +457,8 @@ void CGUIText::Draw(CGUI& pGUI, CCanvas2D& canvas, const CGUIColor& DefaultColor
if (tc.m_pSpriteCall)
continue;
textRenderer.Color(tc.m_UseCustomColor ? tc.m_Color : DefaultColor);
textRenderer.Font(tc.m_Font);
textRenderer.SetCurrentColor(tc.m_UseCustomColor ? tc.m_Color : DefaultColor);
textRenderer.SetCurrentFont(tc.m_Font);
textRenderer.Put(floorf(pos.X + tc.m_Pos.X), floorf(pos.Y + tc.m_Pos.Y), &tc.m_String);
}

View File

@ -1265,14 +1265,11 @@ void CInput::Draw(CCanvas2D& canvas)
float ls = (float)font.GetLineSpacing();
CTextRenderer textRenderer;
textRenderer.Font(font_name);
textRenderer.SetCurrentFont(font_name);
// Set the Z to somewhat more, so we can draw a selected area between the
// the control and the text.
textRenderer.Translate(
(float)(int)(m_CachedActualSize.left) + m_BufferZone,
(float)(int)(m_CachedActualSize.top+h) + m_BufferZone,
0.0f);
(float)(int)(m_CachedActualSize.top+h) + m_BufferZone);
// U+FE33: PRESENTATION FORM FOR VERTICAL LOW LINE
// (sort of like a | which is aligned to the left of most characters)
@ -1423,7 +1420,7 @@ void CInput::Draw(CCanvas2D& canvas)
buffered_y = -scroll;
// Setup initial color (then it might change and change back, when drawing selected area)
textRenderer.Color(m_TextColor);
textRenderer.SetCurrentColor(m_TextColor);
bool using_selected_color = false;
@ -1440,9 +1437,9 @@ void CInput::Draw(CCanvas2D& canvas)
// Text must always be drawn in integer values. So we have to convert scroll
if (m_MultiLine)
textRenderer.Translate(0.f, -(float)(int)scroll, 0.f);
textRenderer.Translate(0.f, -(float)(int)scroll);
else
textRenderer.Translate(-(float)(int)m_HorizontalScroll, 0.f, 0.f);
textRenderer.Translate(-(float)(int)m_HorizontalScroll, 0.f);
// We might as well use 'i' here, because we need it
// (often compared against ints, so don't make it size_t)
@ -1454,9 +1451,9 @@ void CInput::Draw(CCanvas2D& canvas)
{
// We still need to translate the OpenGL matrix
if (i == 0)
textRenderer.Translate(it->m_ListOfX[i], 0.f, 0.f);
textRenderer.Translate(it->m_ListOfX[i], 0.f);
else
textRenderer.Translate(it->m_ListOfX[i] - it->m_ListOfX[i-1], 0.f, 0.f);
textRenderer.Translate(it->m_ListOfX[i] - it->m_ListOfX[i-1], 0.f);
continue;
}
@ -1466,7 +1463,7 @@ void CInput::Draw(CCanvas2D& canvas)
if (SelectingText() && it->m_ListStart + i == VirtualTo)
{
using_selected_color = false;
textRenderer.Color(m_TextColor);
textRenderer.SetCurrentColor(m_TextColor);
}
// selecting only one, then we need only to draw a cursor.
@ -1480,7 +1477,7 @@ void CInput::Draw(CCanvas2D& canvas)
!using_selected_color)
{
using_selected_color = true;
textRenderer.Color(m_TextColorSelected);
textRenderer.SetCurrentColor(m_TextColorSelected);
}
if (i != (int)it->m_ListOfX.size())
@ -1499,18 +1496,18 @@ void CInput::Draw(CCanvas2D& canvas)
if (it->m_ListStart + (int)it->m_ListOfX.size() == m_iBufferPos)
{
textRenderer.Color(m_TextColor);
textRenderer.SetCurrentColor(m_TextColor);
if (m_CursorVisState)
textRenderer.PutAdvance(L"_");
if (using_selected_color)
textRenderer.Color(m_TextColorSelected);
textRenderer.SetCurrentColor(m_TextColorSelected);
}
textRenderer.SetTransform(savedTransform);
}
textRenderer.Translate(0.f, ls, 0.f);
textRenderer.Translate(0.f, ls);
}
canvas.DrawText(textRenderer);

View File

@ -189,7 +189,7 @@ void CConsole::Render()
DrawWindow(canvas);
CTextRenderer textRenderer;
textRenderer.Font(CStrIntern(CONSOLE_FONT));
textRenderer.SetCurrentFont(CStrIntern(CONSOLE_FONT));
// animation: slide in from top of screen
CMatrix3D transform = GetDefaultGuiMatrix();
const float DeltaY = (1.0f - m_fVisibleFrac) * m_fHeight;
@ -237,7 +237,7 @@ void CConsole::DrawHistory(CTextRenderer& textRenderer)
std::lock_guard<std::mutex> lock(m_Mutex); // needed for safe access to m_deqMsgHistory
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
for (Iter = m_deqMsgHistory.begin();
Iter != m_deqMsgHistory.end()
@ -259,12 +259,12 @@ void CConsole::DrawBuffer(CTextRenderer& textRenderer)
CMatrix3D savedTransform = textRenderer.GetTransform();
textRenderer.Translate(2.0f, m_fHeight - (float)m_iFontOffset + 1.0f, 0.0f);
textRenderer.Translate(2.0f, m_fHeight - (float)m_iFontOffset + 1.0f);
textRenderer.Color(1.0f, 1.0f, 0.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 0.0f, 1.0f));
textRenderer.PutAdvance(L"]");
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
if (m_iBufferPos == 0)
DrawCursor(textRenderer);
@ -300,13 +300,13 @@ void CConsole::DrawCursor(CTextRenderer& textRenderer)
if(m_bCursorVisState)
{
// Slightly translucent yellow
textRenderer.Color(1.0f, 1.0f, 0.0f, 0.8f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 0.0f, 0.8f));
// Cursor character is chosen to be an underscore
textRenderer.Put(0.0f, 0.0f, L"_");
// Revert to the standard text color
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
}
}

View File

@ -213,11 +213,11 @@ void CLogger::Render()
int lineSpacing = font.GetLineSpacing();
CTextRenderer textRenderer;
textRenderer.Font(font_name);
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentFont(font_name);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
// Offset by an extra 35px vertically to avoid the top bar.
textRenderer.Translate(4.0f, 35.0f + lineSpacing, 0.0f);
textRenderer.Translate(4.0f, 35.0f + lineSpacing);
// (Lock must come after loading the CFont, since that might log error messages
// and attempt to lock the mutex recursively which is forbidden)
@ -229,29 +229,29 @@ void CLogger::Render()
if (msg.method == Normal)
{
type = "info";
textRenderer.Color(0.0f, 0.8f, 0.0f);
textRenderer.SetCurrentColor(CColor(0.0f, 0.8f, 0.0f, 1.0f));
}
else if (msg.method == Warning)
{
type = "warning";
textRenderer.Color(1.0f, 1.0f, 0.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 0.0f, 1.0f));
}
else
{
type = "error";
textRenderer.Color(1.0f, 0.0f, 0.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 0.0f, 0.0f, 1.0f));
}
CMatrix3D savedTransform = textRenderer.GetTransform();
textRenderer.PrintfAdvance(L"[%8.3f] %hs: ", msg.time, type);
// Display the actual message in white so it's more readable
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
textRenderer.Put(0.0f, 0.0f, msg.message.c_str());
textRenderer.SetTransform(savedTransform);
textRenderer.Translate(0.0f, (float)lineSpacing, 0.0f);
textRenderer.Translate(0.0f, (float)lineSpacing);
}
CCanvas2D canvas;

View File

@ -194,10 +194,10 @@ void CProfileViewer::RenderProfile()
// Print table and column titles.
CTextRenderer textRenderer;
textRenderer.Font(font_name);
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentFont(font_name);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
textRenderer.PrintfAt(2.0f, lineSpacing, L"%hs", table->GetTitle().c_str());
textRenderer.Translate(22.0f, lineSpacing*2.0f, 0.0f);
textRenderer.Translate(22.0f, lineSpacing*2.0f);
float colX = 0.0f;
for (size_t col = 0; col < columns.size(); ++col)
@ -214,7 +214,7 @@ void CProfileViewer::RenderProfile()
colX += columns[col].width;
}
textRenderer.Translate(0.0f, lineSpacing, 0.0f);
textRenderer.Translate(0.0f, lineSpacing);
// Print rows
int currentExpandId = 1;
@ -222,9 +222,9 @@ void CProfileViewer::RenderProfile()
for (size_t row = 0; row < numrows; ++row)
{
if (table->IsHighlightRow(row))
textRenderer.Color(1.0f, 0.5f, 0.5f);
textRenderer.SetCurrentColor(CColor(1.0f, 0.5f, 0.5f, 1.0f));
else
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
if (table->GetChild(row))
{
@ -247,14 +247,14 @@ void CProfileViewer::RenderProfile()
rowColX += columns[col].width;
}
textRenderer.Translate(0.0f, lineSpacing, 0.0f);
textRenderer.Translate(0.0f, lineSpacing);
}
textRenderer.Color(1.0f, 1.0f, 1.0f);
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 1.0f, 1.0f));
if (m->path.size() > 1)
{
textRenderer.Translate(0.0f, lineSpacing, 0.0f);
textRenderer.Translate(0.0f, lineSpacing);
textRenderer.Put(-15.0f, 0.0f, L"0");
textRenderer.Put(0.0f, 0.0f, L"back to parent");
}

View File

@ -617,8 +617,8 @@ void TerrainRenderer::RenderPriorities(int cullGroup)
CCanvas2D canvas;
CTextRenderer textRenderer;
textRenderer.Font(CStrIntern("mono-stroke-10"));
textRenderer.Color(1.0f, 1.0f, 0.0f);
textRenderer.SetCurrentFont(CStrIntern("mono-stroke-10"));
textRenderer.SetCurrentColor(CColor(1.0f, 1.0f, 0.0f, 1.0f));
std::vector<CPatchRData*>& visiblePatches = m->visiblePatches[cullGroup];
for (size_t i = 0; i < visiblePatches.size(); ++i)