1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
#include "ReadableGuiView.h"
#include "math/Vector4.h"
#include "gui/GuiWindowDef.h"
namespace gui
{
ReadableGuiView::ReadableGuiView(wxWindow* parent) :
GuiView(parent)
{}
void ReadableGuiView::setGLViewPort()
{
double width = _windowDims[0];
double height = _windowDims[1];
double aspectRatio = _bgDims[0] / _bgDims[1];
if (width / height > aspectRatio)
{
width = height * aspectRatio;
}
else
{
height = width / aspectRatio;
}
SetSize(static_cast<int>(width), -1);
glViewport(0, 0, static_cast<GLsizei>(width), static_cast<GLsizei>(height));
}
void ReadableGuiView::setGui(const IGuiPtr& gui)
{
// Call the base class first
GuiView::setGui(gui);
Vector2 topLeft(0, 0);
Vector2 bottomRight(640, 480);
if (_gui != NULL)
{
IGuiWindowDefPtr bgWindowDef = _gui->findWindowDef("backgroundImage");
if (!bgWindowDef)
{
bgWindowDef = _gui->findWindowDef("backgroundmulti");
if (!bgWindowDef)
{
bgWindowDef = _gui->findWindowDef("backgroundsingle");
}
}
if (bgWindowDef != NULL)
{
const Vector4& rect = bgWindowDef->rect;
topLeft = Vector2(rect[0], rect[1]);
bottomRight = Vector2(rect[0] + rect[2], rect[1] + rect[3]);
}
}
_bgDims = bottomRight - topLeft;
_renderer.setVisibleArea(topLeft, bottomRight);
}
} // namespace
|