Skip to content

Commit

Permalink
[mesh] make layer blend mode option visible in UI
Browse files Browse the repository at this point in the history
  • Loading branch information
nirvn committed Oct 4, 2018
1 parent 64e561c commit 9d2c3af
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/app/mesh/qgsrenderermeshpropertieswidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
mMeshRendererVectorSettingsWidget->setLayer( mMeshLayer );
syncToLayer();

//blend mode
mBlendModeComboBox->setBlendMode( mMeshLayer->blendMode() );
connect( mBlendModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPanelWidget::widgetChanged );

connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeScalarGroupChanged,
this, &QgsRendererMeshPropertiesWidget::onActiveScalarGroupChanged );
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeVectorGroupChanged,
Expand All @@ -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 );
Expand Down Expand Up @@ -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();
}
Expand Down
15 changes: 15 additions & 0 deletions src/core/mesh/qgsmeshlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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;
}

Expand All @@ -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;
}

Expand Down
37 changes: 37 additions & 0 deletions src/ui/mesh/qgsrenderermeshpropswidgetbase.ui
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,32 @@
</property>
</widget>
</item>
<item>
<widget class="QgsCollapsibleGroupBox" name="mActiveDatasetBlendingMode">
<property name="title">
<string>Layer Rendering</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="">
<property name="text">
<string>Blending mode</string>
</property>
</widget>
</item>
<item>
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
Expand Down Expand Up @@ -299,6 +325,17 @@
<header>mesh/qgsmeshrenderervectorsettingswidget.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>QgsBlendModeComboBox</class>
<extends>QComboBox</extends>
<header>qgsblendmodecombobox.h</header>
</customwidget>
<customwidget>
<class>QgsCollapsibleGroupBox</class>
<extends>QGroupBox</extends>
<header>qgscollapsiblegroupbox.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../../../images/images.qrc"/>
Expand Down

0 comments on commit 9d2c3af

Please sign in to comment.