From 9d2c3af7ade1edfcb573104d6e46948e66d0c1c0 Mon Sep 17 00:00:00 2001 From: nirvn Date: Wed, 3 Oct 2018 16:22:32 +0700 Subject: [PATCH] [mesh] make layer blend mode option visible in UI --- .../mesh/qgsrenderermeshpropertieswidget.cpp | 8 +++- src/core/mesh/qgsmeshlayer.cpp | 15 ++++++++ src/ui/mesh/qgsrenderermeshpropswidgetbase.ui | 37 +++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/app/mesh/qgsrenderermeshpropertieswidget.cpp b/src/app/mesh/qgsrenderermeshpropertieswidget.cpp index af5ba9330af..e7c412c53b3 100644 --- a/src/app/mesh/qgsrenderermeshpropertieswidget.cpp +++ b/src/app/mesh/qgsrenderermeshpropertieswidget.cpp @@ -44,6 +44,10 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer * mMeshRendererVectorSettingsWidget->setLayer( mMeshLayer ); syncToLayer(); + //blend mode + mBlendModeComboBox->setBlendMode( mMeshLayer->blendMode() ); + connect( mBlendModeComboBox, static_cast( &QComboBox::currentIndexChanged ), this, &QgsPanelWidget::widgetChanged ); + connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeScalarGroupChanged, this, &QgsRendererMeshPropertiesWidget::onActiveScalarGroupChanged ); connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeVectorGroupChanged, @@ -53,7 +57,6 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer * connect( mTriangularMeshGroup, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged ); connect( mContoursGroupBox, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged ); connect( mVectorsGroupBox, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged ); - connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged ); connect( mMeshRendererScalarSettingsWidget, &QgsMeshRendererScalarSettingsWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged ); connect( mMeshRendererVectorSettingsWidget, &QgsMeshRendererVectorSettingsWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged ); @@ -100,6 +103,9 @@ void QgsRendererMeshPropertiesWidget::apply() if ( activeVectorDatasetIndex.isValid() ) settings.setVectorSettings( activeVectorDatasetIndex.group(), mMeshRendererVectorSettingsWidget->settings() ); + //set the blend mode for the layer + mMeshLayer->setBlendMode( mBlendModeComboBox->blendMode() ); + mMeshLayer->setRendererSettings( settings ); mMeshLayer->triggerRepaint(); } diff --git a/src/core/mesh/qgsmeshlayer.cpp b/src/core/mesh/qgsmeshlayer.cpp index f9365e7bd1c..26c59180a76 100644 --- a/src/core/mesh/qgsmeshlayer.cpp +++ b/src/core/mesh/qgsmeshlayer.cpp @@ -27,6 +27,7 @@ #include "qgsmeshlayer.h" #include "qgsmeshlayerrenderer.h" #include "qgsmeshlayerutils.h" +#include "qgspainting.h" #include "qgsproviderregistry.h" #include "qgsreadwritecontext.h" #include "qgsstyle.h" @@ -271,6 +272,14 @@ bool QgsMeshLayer::readSymbology( const QDomNode &node, QString &errorMessage, if ( !elemRendererSettings.isNull() ) mRendererSettings.readXml( elemRendererSettings ); + // get and set the blend mode if it exists + QDomNode blendModeNode = node.namedItem( QStringLiteral( "blendMode" ) ); + if ( !blendModeNode.isNull() ) + { + QDomElement e = blendModeNode.toElement(); + setBlendMode( QgsPainting::getCompositionMode( static_cast< QgsPainting::BlendMode >( e.text().toInt() ) ) ); + } + return true; } @@ -287,6 +296,12 @@ bool QgsMeshLayer::writeSymbology( QDomNode &node, QDomDocument &doc, QString &e QDomElement elemRendererSettings = mRendererSettings.writeXml( doc ); elem.appendChild( elemRendererSettings ); + // add blend mode node + QDomElement blendModeElement = doc.createElement( QStringLiteral( "blendMode" ) ); + QDomText blendModeText = doc.createTextNode( QString::number( QgsPainting::getBlendModeEnum( blendMode() ) ) ); + blendModeElement.appendChild( blendModeText ); + node.appendChild( blendModeElement ); + return true; } diff --git a/src/ui/mesh/qgsrenderermeshpropswidgetbase.ui b/src/ui/mesh/qgsrenderermeshpropswidgetbase.ui index 2fb0d2654cc..b8edcaaa55c 100644 --- a/src/ui/mesh/qgsrenderermeshpropswidgetbase.ui +++ b/src/ui/mesh/qgsrenderermeshpropswidgetbase.ui @@ -68,6 +68,32 @@ + + + + Layer Rendering + + + + + + Blending mode + + + + + + + + 0 + 0 + + + + + + + @@ -299,6 +325,17 @@
mesh/qgsmeshrenderervectorsettingswidget.h
1 + + QgsBlendModeComboBox + QComboBox +
qgsblendmodecombobox.h
+
+ + QgsCollapsibleGroupBox + QGroupBox +
qgscollapsiblegroupbox.h
+ 1 +