DYTSrouce/src/viewer/OsgWidget.cpp

72 lines
1.5 KiB
C++
Raw Normal View History

2025-02-22 15:16:54 +00:00
#include "viewer/OsgWidget.h"
#include <QApplication>
#include <QWindow>
#include <QScreen>
#include "viewer/OSGRendererImpl.h"
OsgWidget::OsgWidget(QWidget* parent)
: QOpenGLWidget(parent)
, renderer_(nullptr)
{
}
void OsgWidget::initializeGL()
{
renderer_ = new OSGRendererImpl(this);
renderer_->setup(this);
QScreen *screen = windowHandle() && windowHandle()->screen() ? windowHandle()->screen() : qApp->screens().front();
renderer_->setupOSG(width(), height(), screen->devicePixelRatio());
emit initialized();
}
void OsgWidget::resizeGL(int w, int h)
{
QScreen *screen = windowHandle() && windowHandle()->screen() ? windowHandle()->screen() : qApp->screens().front();
renderer_->resize(w, h, screen->devicePixelRatio());
}
void OsgWidget::paintGL()
{
renderer_->render();
}
void OsgWidget::keyPressEvent(QKeyEvent *event)
{
renderer_->keyPressEvent(event);
}
void OsgWidget::keyReleaseEvent(QKeyEvent *event)
{
renderer_->keyReleaseEvent(event);
}
void OsgWidget::mousePressEvent(QMouseEvent *event)
{
renderer_->mousePressEvent(event);
}
void OsgWidget::mouseReleaseEvent(QMouseEvent *event)
{
renderer_->mouseReleaseEvent(event);
}
void OsgWidget::mouseDoubleClickEvent(QMouseEvent *event)
{
renderer_->mouseDoubleClickEvent(event);
}
void OsgWidget::mouseMoveEvent(QMouseEvent *event)
{
renderer_->mouseMoveEvent(event);
}
void OsgWidget::wheelEvent(QWheelEvent *event)
{
renderer_->wheelEvent(event);
}