From 7ece95e3208e565c68c772be9786f8f45ddc4600 Mon Sep 17 00:00:00 2001 From: hengli Date: Fri, 13 Jan 2012 13:02:25 +0100 Subject: [PATCH] Fixed module display issues in 3D widgets. --- src/ui/map3D/HUDScaleGeode.cc | 4 +-- src/ui/map3D/HUDScaleGeode.h | 2 +- src/ui/map3D/ImageWindowGeode.cc | 14 +++++--- src/ui/map3D/ImageWindowGeode.h | 6 ++-- src/ui/map3D/Pixhawk3DWidget.cc | 55 +++++++++++++++++--------------- src/ui/map3D/Pixhawk3DWidget.h | 1 + 6 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/ui/map3D/HUDScaleGeode.cc b/src/ui/map3D/HUDScaleGeode.cc index 0c32c7ab4..6ece68bc8 100644 --- a/src/ui/map3D/HUDScaleGeode.cc +++ b/src/ui/map3D/HUDScaleGeode.cc @@ -40,7 +40,7 @@ HUDScaleGeode::HUDScaleGeode() } void -HUDScaleGeode::init(void) +HUDScaleGeode::init(osg::ref_ptr& font) { osg::ref_ptr outlineVertices(new osg::Vec2Array); outlineVertices->push_back(osg::Vec2(20.0f, 50.0f)); @@ -96,7 +96,7 @@ HUDScaleGeode::init(void) text = new osgText::Text; text->setCharacterSize(11); - text->setFont("images/Vera.ttf"); + text->setFont(font); text->setAxisAlignment(osgText::Text::SCREEN); text->setColor(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); text->setPosition(osg::Vec3(40.0f, 45.0f, -1.5f)); diff --git a/src/ui/map3D/HUDScaleGeode.h b/src/ui/map3D/HUDScaleGeode.h index 7f2a37088..0db280911 100644 --- a/src/ui/map3D/HUDScaleGeode.h +++ b/src/ui/map3D/HUDScaleGeode.h @@ -41,7 +41,7 @@ class HUDScaleGeode : public osg::Geode public: HUDScaleGeode(); - void init(void); + void init(osg::ref_ptr& font); void update(int windowHeight, float cameraFov, float cameraDistance, bool darkBackground); diff --git a/src/ui/map3D/ImageWindowGeode.cc b/src/ui/map3D/ImageWindowGeode.cc index 19a7f38a3..3f4d33050 100644 --- a/src/ui/map3D/ImageWindowGeode.cc +++ b/src/ui/map3D/ImageWindowGeode.cc @@ -31,11 +31,17 @@ #include "ImageWindowGeode.h" -ImageWindowGeode::ImageWindowGeode(const QString& caption, - const osg::Vec4& backgroundColor, - osg::ref_ptr& image) +ImageWindowGeode::ImageWindowGeode() : border(5) { + +} + +void +ImageWindowGeode::init(const QString& caption, const osg::Vec4& backgroundColor, + osg::ref_ptr& image, + osg::ref_ptr& font) +{ // image osg::ref_ptr imageGeometry = new osg::Geometry; imageVertices = new osg::Vec3Array(4); @@ -82,7 +88,7 @@ ImageWindowGeode::ImageWindowGeode(const QString& caption, text = new osgText::Text; text->setText(caption.toStdString().c_str()); text->setCharacterSize(11); - text->setFont("images/Vera.ttf"); + text->setFont(font); text->setAxisAlignment(osgText::Text::SCREEN); text->setColor(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f)); diff --git a/src/ui/map3D/ImageWindowGeode.h b/src/ui/map3D/ImageWindowGeode.h index 87281d860..5ebad10da 100644 --- a/src/ui/map3D/ImageWindowGeode.h +++ b/src/ui/map3D/ImageWindowGeode.h @@ -40,8 +40,10 @@ class ImageWindowGeode : public osg::Geode { public: - ImageWindowGeode(const QString& caption, const osg::Vec4& backgroundColor, - osg::ref_ptr& image); + ImageWindowGeode(); + void init(const QString& caption, const osg::Vec4& backgroundColor, + osg::ref_ptr& image, + osg::ref_ptr& font); void setAttributes(int x, int y, int width, int height); diff --git a/src/ui/map3D/Pixhawk3DWidget.cc b/src/ui/map3D/Pixhawk3DWidget.cc index 4a51f9aa7..9341fc54a 100644 --- a/src/ui/map3D/Pixhawk3DWidget.cc +++ b/src/ui/map3D/Pixhawk3DWidget.cc @@ -114,6 +114,8 @@ Pixhawk3DWidget::Pixhawk3DWidget(QWidget* parent) buildLayout(); + updateHUD(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, "132N"); + connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setActiveUAS(UASInterface*))); } @@ -567,9 +569,30 @@ Pixhawk3DWidget::buildLayout(void) this, SLOT(toggleFollowCamera(int))); } +void +Pixhawk3DWidget::resizeGL(int width, int height) +{ + Q3DWidget::resizeGL(width, height); + + resizeHUD(); +} + void Pixhawk3DWidget::display(void) { + // set node visibility + rollingMap->setChildValue(gridNode, displayGrid); + rollingMap->setChildValue(trailNode, displayTrail); + rollingMap->setChildValue(mapNode, displayImagery); + rollingMap->setChildValue(waypointGroupNode, displayWaypoints); + rollingMap->setChildValue(targetNode, enableTarget); +#ifdef QGC_PROTOBUF_ENABLED + rollingMap->setChildValue(obstacleGroupNode, displayObstacleList); +#endif + rollingMap->setChildValue(rgbd3DNode, displayRGBD3D); + hudGroup->setChildValue(rgb2DGeode, displayRGBD2D); + hudGroup->setChildValue(depth2DGeode, displayRGBD2D); + if (!uas) { return; @@ -636,20 +659,6 @@ Pixhawk3DWidget::display(void) updateHUD(robotX, robotY, robotZ, robotRoll, robotPitch, robotYaw, utmZone); - // set node visibility - - rollingMap->setChildValue(gridNode, displayGrid); - rollingMap->setChildValue(trailNode, displayTrail); - rollingMap->setChildValue(mapNode, displayImagery); - rollingMap->setChildValue(waypointGroupNode, displayWaypoints); - rollingMap->setChildValue(targetNode, enableTarget); -#ifdef QGC_PROTOBUF_ENABLED - rollingMap->setChildValue(obstacleGroupNode, displayObstacleList); -#endif - rollingMap->setChildValue(rgbd3DNode, displayRGBD3D); - hudGroup->setChildValue(rgb2DGeode, displayRGBD2D); - hudGroup->setChildValue(depth2DGeode, displayRGBD2D); - lastRobotX = robotX; lastRobotY = robotY; lastRobotZ = robotZ; @@ -952,27 +961,25 @@ Pixhawk3DWidget::setupHUD(void) statusText->setAxisAlignment(osgText::Text::SCREEN); statusText->setColor(osg::Vec4(255, 255, 255, 1)); - resizeHUD(); - osg::ref_ptr statusGeode = new osg::Geode; statusGeode->addDrawable(hudBackgroundGeometry); statusGeode->addDrawable(statusText); hudGroup->addChild(statusGeode); rgbImage = new osg::Image; - rgb2DGeode = new ImageWindowGeode("RGB Image", - osg::Vec4(0.0f, 0.0f, 0.1f, 1.0f), - rgbImage); + rgb2DGeode = new ImageWindowGeode; + rgb2DGeode->init("RGB Image", osg::Vec4(0.0f, 0.0f, 0.1f, 1.0f), + rgbImage, font); hudGroup->addChild(rgb2DGeode); depthImage = new osg::Image; - depth2DGeode = new ImageWindowGeode("Depth Image", - osg::Vec4(0.0f, 0.0f, 0.1f, 1.0f), - depthImage); + depth2DGeode = new ImageWindowGeode; + depth2DGeode->init("Depth Image", osg::Vec4(0.0f, 0.0f, 0.1f, 1.0f), + depthImage, font); hudGroup->addChild(depth2DGeode); scaleGeode = new HUDScaleGeode; - scaleGeode->init(); + scaleGeode->init(font); hudGroup->addChild(scaleGeode); } @@ -1018,8 +1025,6 @@ Pixhawk3DWidget::updateHUD(double robotX, double robotY, double robotZ, double robotRoll, double robotPitch, double robotYaw, const QString& utmZone) { - resizeHUD(); - std::pair cursorPosition = getGlobalCursorPosition(getMouseX(), getMouseY(), -robotZ); diff --git a/src/ui/map3D/Pixhawk3DWidget.h b/src/ui/map3D/Pixhawk3DWidget.h index 3ce5ceef2..c41165470 100644 --- a/src/ui/map3D/Pixhawk3DWidget.h +++ b/src/ui/map3D/Pixhawk3DWidget.h @@ -81,6 +81,7 @@ private slots: protected: QVector< osg::ref_ptr > findVehicleModels(void); void buildLayout(void); + virtual void resizeGL(int width, int height); virtual void display(void); virtual void keyPressEvent(QKeyEvent* event); virtual void mousePressEvent(QMouseEvent* event); -- 2.22.0