From 0557cad22c2e4737b8f2acde8de7924b91cad75f Mon Sep 17 00:00:00 2001 From: hengli Date: Tue, 6 Mar 2012 16:22:19 +0100 Subject: [PATCH] Enabled blending in overlay rendering, and fixed bug in individual setting of overlay visibility. --- src/ui/map3D/GLOverlayGeode.cc | 3 +++ src/ui/map3D/SystemViewParams.cc | 9 +++++++-- src/ui/map3D/SystemViewParams.h | 3 ++- src/ui/map3D/ViewParamWidget.cc | 8 +++++--- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/ui/map3D/GLOverlayGeode.cc b/src/ui/map3D/GLOverlayGeode.cc index 86cb6f8ed..35a6f7866 100644 --- a/src/ui/map3D/GLOverlayGeode.cc +++ b/src/ui/map3D/GLOverlayGeode.cc @@ -150,6 +150,8 @@ GLOverlayGeode::GLOverlayDrawable::drawImplementation(osg::RenderInfo&) const glMatrixMode(GL_MODELVIEW); glDisable(GL_LIGHTING); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glPushMatrix(); glScalef(-1.0f, 1.0f, -1.0f); @@ -404,6 +406,7 @@ GLOverlayGeode::GLOverlayDrawable::drawImplementation(osg::RenderInfo&) const glPopMatrix(); glEnable(GL_LIGHTING); + glDisable(GL_BLEND); } osg::BoundingBox diff --git a/src/ui/map3D/SystemViewParams.cc b/src/ui/map3D/SystemViewParams.cc index d131a812a..0dc70e34c 100644 --- a/src/ui/map3D/SystemViewParams.cc +++ b/src/ui/map3D/SystemViewParams.cc @@ -1,5 +1,7 @@ #include "SystemViewParams.h" +#include + SystemViewParams::SystemViewParams(int systemId) : mSystemId(systemId) , mColorPointCloudByDistance(false) @@ -240,14 +242,17 @@ SystemViewParams::toggleObstacleList(int state) } void -SystemViewParams::toggleOverlay(const QString& name) +SystemViewParams::toggleOverlay(QWidget* widget) { + const QCheckBox* checkbox = dynamic_cast(widget); + QString name = checkbox->accessibleName(); + if (!mDisplayOverlay.contains(name)) { return; } - mDisplayOverlay[name] = !mDisplayOverlay[name]; + mDisplayOverlay[name] = (checkbox->checkState() == Qt::Checked); } void diff --git a/src/ui/map3D/SystemViewParams.h b/src/ui/map3D/SystemViewParams.h index 7926b1d64..0497f6a4f 100644 --- a/src/ui/map3D/SystemViewParams.h +++ b/src/ui/map3D/SystemViewParams.h @@ -5,6 +5,7 @@ #include #include #include +#include class SystemViewParams : public QObject { @@ -61,7 +62,7 @@ public slots: void toggleColorPointCloud(int state); void toggleLocalGrid(int state); void toggleObstacleList(int state); - void toggleOverlay(const QString& name); + void toggleOverlay(QWidget* widget); void togglePlannedPath(int state); void togglePointCloud(int state); void toggleRGBD(int state); diff --git a/src/ui/map3D/ViewParamWidget.cc b/src/ui/map3D/ViewParamWidget.cc index e28ff9ed4..a689bde59 100644 --- a/src/ui/map3D/ViewParamWidget.cc +++ b/src/ui/map3D/ViewParamWidget.cc @@ -65,14 +65,16 @@ ViewParamWidget::overlayCreated(int systemId, const QString& name) systemViewParams->displayOverlay().insert(name, true); QCheckBox* checkbox = new QCheckBox(this); + checkbox->setAccessibleName(name); checkbox->setChecked(systemViewParams->displayOverlay().value(name)); mOverlayLayout[systemId]->addRow(name, checkbox); - mOverlaySignalMapper->setMapping(checkbox, name); + mOverlaySignalMapper->setMapping(checkbox, checkbox); + connect(checkbox, SIGNAL(clicked()), mOverlaySignalMapper, SLOT(map())); - connect(mOverlaySignalMapper, SIGNAL(mapped(QString)), - systemViewParams.data(), SLOT(toggleOverlay(QString))); + connect(mOverlaySignalMapper, SIGNAL(mapped(QWidget*)), + systemViewParams.data(), SLOT(toggleOverlay(QWidget*))); } void -- 2.22.0