Skip to content

Commit

Permalink
#5436: Migrate XYWnd to use its own IGLFont instance
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Dec 2, 2020
1 parent fec5f41 commit ce89bf0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 13 deletions.
35 changes: 22 additions & 13 deletions radiant/xyview/XYWnd.cpp
Expand Up @@ -144,6 +144,8 @@ XYWnd::XYWnd(int id, wxWindow* parent) :
// Destructor
XYWnd::~XYWnd()
{
_font.reset();

destroyXYView();

// Store the current position and scale to the registry, so that it may be
Expand Down Expand Up @@ -229,6 +231,11 @@ void XYWnd::releaseStates()
_selectedShaderGroup.reset();
}

void XYWnd::ensureFont()
{
_font = GlobalOpenGL().getFont(IGLFont::Style::Sans, 14);
}

const std::string XYWnd::getViewTypeTitle(EViewType viewtype) {
if (viewtype == XY) {
return _("XY Top");
Expand Down Expand Up @@ -853,14 +860,14 @@ void XYWnd::drawGrid()
{
glRasterPos2d (x, offx);
sprintf(text, "%g", x);
GlobalOpenGL().drawString(text);
_font->drawString(text);
}

for (double y = yb - fmod(yb, stepy); y <= ye ; y += stepy)
{
glRasterPos2f (offy, y);
sprintf (text, "%g", y);
GlobalOpenGL().drawString(text);
_font->drawString(text);
}

if (isActive())
Expand All @@ -873,7 +880,7 @@ void XYWnd::drawGrid()
{
glRasterPos2d( _origin[nDim1] - w + 35 / _scale, _origin[nDim2] + h - 20 / _scale );

GlobalOpenGL().drawString(getViewTypeTitle(_viewType));
_font->drawString(getViewTypeTitle(_viewType));
}
}

Expand Down Expand Up @@ -1003,7 +1010,7 @@ void XYWnd::drawBlockGrid()
for (y=yb ; y<ye ; y+=blockSize) {
glRasterPos2f (x+(blockSize/2), y+(blockSize/2));
sprintf (text, "%i,%i",(int)floor(x/blockSize), (int)floor(y/blockSize) );
GlobalOpenGL().drawString(text);
_font->drawString(text);
}
}

Expand Down Expand Up @@ -1107,17 +1114,17 @@ void XYWnd::drawSizeInfo(int nDim1, int nDim2, const Vector3& vMinBounds, const

glRasterPos3f (Betwixt(vMinBounds[nDim1], vMaxBounds[nDim1]), vMinBounds[nDim2] - 20.0f / _scale, 0.0f);
dimensions << g_pDimStrings[nDim1] << vSize[nDim1];
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
dimensions.str("");

glRasterPos3f (vMaxBounds[nDim1] + 16.0f / _scale, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]), 0.0f);
dimensions << g_pDimStrings[nDim2] << vSize[nDim2];
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
dimensions.str("");

glRasterPos3f (vMinBounds[nDim1] + 4, vMaxBounds[nDim2] + 8 / _scale, 0.0f);
dimensions << "(" << g_pOrgStrings[0][0] << vMinBounds[nDim1] << " " << g_pOrgStrings[0][1] << vMaxBounds[nDim2] << ")";
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
}
else if (_viewType == XZ)
{
Expand Down Expand Up @@ -1146,17 +1153,17 @@ void XYWnd::drawSizeInfo(int nDim1, int nDim2, const Vector3& vMinBounds, const

glRasterPos3f (Betwixt(vMinBounds[nDim1], vMaxBounds[nDim1]), 0, vMinBounds[nDim2] - 20.0f / _scale);
dimensions << g_pDimStrings[nDim1] << vSize[nDim1];
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
dimensions.str("");

glRasterPos3f (vMaxBounds[nDim1] + 16.0f / _scale, 0, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]));
dimensions << g_pDimStrings[nDim2] << vSize[nDim2];
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
dimensions.str("");

glRasterPos3f (vMinBounds[nDim1] + 4, 0, vMaxBounds[nDim2] + 8 / _scale);
dimensions << "(" << g_pOrgStrings[1][0] << vMinBounds[nDim1] << " " << g_pOrgStrings[1][1] << vMaxBounds[nDim2] << ")";
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
}
else
{
Expand Down Expand Up @@ -1185,17 +1192,17 @@ void XYWnd::drawSizeInfo(int nDim1, int nDim2, const Vector3& vMinBounds, const

glRasterPos3f (0, Betwixt(vMinBounds[nDim1], vMaxBounds[nDim1]), vMinBounds[nDim2] - 20.0f / _scale);
dimensions << g_pDimStrings[nDim1] << vSize[nDim1];
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
dimensions.str("");

glRasterPos3f (0, vMaxBounds[nDim1] + 16.0f / _scale, Betwixt(vMinBounds[nDim2], vMaxBounds[nDim2]));
dimensions << g_pDimStrings[nDim2] << vSize[nDim2];
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
dimensions.str("");

glRasterPos3f (0, vMinBounds[nDim1] + 4.0f, vMaxBounds[nDim2] + 8 / _scale);
dimensions << "(" << g_pOrgStrings[2][0] << vMinBounds[nDim1] << " " << g_pOrgStrings[2][1] << vMaxBounds[nDim2] << ")";
GlobalOpenGL().drawString(dimensions.str());
_font->drawString(dimensions.str());
}
}

Expand Down Expand Up @@ -1278,6 +1285,8 @@ void XYWnd::updateModelview() {

void XYWnd::draw()
{
ensureFont();

// clear
glViewport(0, 0, _width, _height);
Vector3 colourGridBack = GlobalColourSchemeManager().getColour("grid_background");
Expand Down
3 changes: 3 additions & 0 deletions radiant/xyview/XYWnd.h
Expand Up @@ -86,6 +86,8 @@ class XYWnd :

sigc::connection _sigCameraChanged;

IGLFont::Ptr _font;

public:
// Constructor, this allocates the GL widget
XYWnd(int uniqueId, wxWindow* parent);
Expand Down Expand Up @@ -167,6 +169,7 @@ class XYWnd :
private:
XYMouseToolEvent createMouseEvent(const Vector2& point, const Vector2& delta = Vector2(0, 0));

void ensureFont();
void onContextMenu();
void drawSizeInfo(int nDim1, int nDim2, const Vector3& vMinBounds, const Vector3& vMaxBounds);
void drawCameraIcon();
Expand Down

0 comments on commit ce89bf0

Please sign in to comment.