Skip to content
Snippets Groups Projects
Commit eee8e5fb authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

OpenGL camera and program ownership moved to Canvas

parent 858f8384
No related branches found
No related tags found
No related merge requests found
......@@ -54,12 +54,17 @@ Canvas::Canvas()
: aspectRatio(1), colorBgR(1), colorBgG(1), colorBgB(1), currentZoomLevel(0), camera(nullptr),
program(nullptr), model(nullptr)
{
setCamera((camera = new Camera));
setProgram((program = new Program));
connect(&geometryStore(), &GeometryStore::deletingGeometry, this, &Canvas::releaseBuffer);
}
Canvas::~Canvas()
{
releaseBuffers();
delete camera;
delete program;
}
void Canvas::setBgColor(QColor const& c)
......@@ -98,6 +103,8 @@ void Canvas::setModel(Model* m)
});
setCamera();
camera->set();
}
Model* Canvas::getModel()
......
......@@ -58,6 +58,8 @@ public:
void horizontalCameraTurn(float angle);
void verticalCameraTurn(float angle);
Camera* cam() { return camera; }
private:
QRect viewport;
float aspectRatio, colorBgR, colorBgG, colorBgB;
......
......@@ -23,29 +23,25 @@
namespace RealSpace {
//------------------------------------------------------------------------------
Widget3D::Widget3D() : canvas(nullptr), camera(nullptr), program(nullptr) {
Widget3D::Widget3D() : canvas(nullptr) {
auto box = new QHBoxLayout;
setLayout(box);
box->setMargin(0);
box->addWidget((canvas = new Canvas));
canvas->setCamera((camera = new Camera));
canvas->setProgram((program = new Program));
}
Widget3D::~Widget3D() {
delete program;
delete camera;
}
Camera& Widget3D::cam() { return *canvas->cam(); }
void Widget3D::setBackground(QColor const& color) {
canvas->setBgColor(color);
}
void Widget3D::setModel(Model* model) {
canvas->setModel(model);
connect(camera, &RealSpace::Camera::updated, model, &Model::cameraUpdated);
camera->set();
}
void Widget3D::defaultView()
......
......@@ -33,7 +33,7 @@ public:
Widget3D();
~Widget3D();
Camera& cam() { return *camera; }
Camera& cam();
void setBackground(QColor const&);
void setModel(Model*); // model owned elsewhere, may be nullptr
......@@ -46,8 +46,6 @@ public:
private:
Canvas *canvas;
Camera *camera;
Program *program;
};
//------------------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment