Skip to content

Commit

Permalink
#5893: Migrate text rendering in the MeasurementTool
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Feb 13, 2022
1 parent cedc797 commit 2723f4c
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 12 deletions.
36 changes: 26 additions & 10 deletions radiant/xyview/tools/MeasurementTool.cpp
Expand Up @@ -118,6 +118,7 @@ MeasurementTool::Result MeasurementTool::onCancel(IInteractiveView& view)
_vertices.clear();
_line.clear();
_points.clear();
_texts.clear();

return Result::Finished;
}
Expand Down Expand Up @@ -155,25 +156,40 @@ void MeasurementTool::ensureShaders(RenderSystem& renderSystem)
{
_pointShader = renderSystem.capture(BuiltInShaderType::Point);
}

if (!_textRenderer)
{
_textRenderer = renderSystem.captureTextRenderer(IGLFont::Style::Mono, 14);
}
}

void MeasurementTool::render(RenderSystem& renderSystem, IRenderableCollector& collector, const VolumeTest& volume)
{
ensureShaders(renderSystem);
ensureShaders(renderSystem);

_points.update(_pointShader);
_line.update(_wireShader);

_texts.resize(_vertices.size() - 1);

// Render distance string
for (std::size_t i = 1; i < _vertices.size(); ++i)
{
const auto& a = _vertices[i - 1];
const auto& b = _vertices[i];
// Render distance string
for (std::size_t i = 1; i < _vertices.size(); ++i)
{
auto& text = _texts.at(i - 1);

glColor4fv(_colour);
glRasterPos3dv((a+b)*0.5);
GlobalOpenGL().drawString(string::to_string((a-b).getLength()));
}
if (!text)
{
text.reset(new render::StaticRenderableText("", { 0,0,0 }, _colour));
text->update(_textRenderer);
}

const auto& a = _vertices[i - 1];
const auto& b = _vertices[i];

text->setColour(_colour);
text->setText(string::to_string((a - b).getLength()));
text->setWorldPosition((a + b) * 0.5);
}
}

} // namespace
7 changes: 5 additions & 2 deletions radiant/xyview/tools/MeasurementTool.h
Expand Up @@ -3,9 +3,10 @@
#include "imousetool.h"
#include "iorthoview.h"
#include "math/Vector3.h"
#include "math/Vector4.h"
#include "render.h"
#include "render/Colour4.h"
#include "render/RenderableVertexArray.h"
#include "render/StaticRenderableText.h"

namespace ui
{
Expand All @@ -21,11 +22,13 @@ class MeasurementTool :
std::vector<Vertex3f> _vertices;
render::RenderablePoints _points;
render::RenderableLine _line;
ITextRenderer::Ptr _textRenderer;
std::vector<std::shared_ptr<render::StaticRenderableText>> _texts;

ShaderPtr _pointShader;
ShaderPtr _wireShader;

Colour4 _colour;
Vector4 _colour;

public:
MeasurementTool();
Expand Down

0 comments on commit 2723f4c

Please sign in to comment.