Skip to content

Commit 9d2c3af

Browse files
committed
[mesh] make layer blend mode option visible in UI
1 parent 64e561c commit 9d2c3af

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

src/app/mesh/qgsrenderermeshpropertieswidget.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
4444
mMeshRendererVectorSettingsWidget->setLayer( mMeshLayer );
4545
syncToLayer();
4646

47+
//blend mode
48+
mBlendModeComboBox->setBlendMode( mMeshLayer->blendMode() );
49+
connect( mBlendModeComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsPanelWidget::widgetChanged );
50+
4751
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeScalarGroupChanged,
4852
this, &QgsRendererMeshPropertiesWidget::onActiveScalarGroupChanged );
4953
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::activeVectorGroupChanged,
@@ -53,7 +57,6 @@ QgsRendererMeshPropertiesWidget::QgsRendererMeshPropertiesWidget( QgsMeshLayer *
5357
connect( mTriangularMeshGroup, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
5458
connect( mContoursGroupBox, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
5559
connect( mVectorsGroupBox, &QGroupBox::toggled, this, &QgsPanelWidget::widgetChanged );
56-
5760
connect( mMeshRendererActiveDatasetWidget, &QgsMeshRendererActiveDatasetWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged );
5861
connect( mMeshRendererScalarSettingsWidget, &QgsMeshRendererScalarSettingsWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged );
5962
connect( mMeshRendererVectorSettingsWidget, &QgsMeshRendererVectorSettingsWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged );
@@ -100,6 +103,9 @@ void QgsRendererMeshPropertiesWidget::apply()
100103
if ( activeVectorDatasetIndex.isValid() )
101104
settings.setVectorSettings( activeVectorDatasetIndex.group(), mMeshRendererVectorSettingsWidget->settings() );
102105

106+
//set the blend mode for the layer
107+
mMeshLayer->setBlendMode( mBlendModeComboBox->blendMode() );
108+
103109
mMeshLayer->setRendererSettings( settings );
104110
mMeshLayer->triggerRepaint();
105111
}

src/core/mesh/qgsmeshlayer.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "qgsmeshlayer.h"
2828
#include "qgsmeshlayerrenderer.h"
2929
#include "qgsmeshlayerutils.h"
30+
#include "qgspainting.h"
3031
#include "qgsproviderregistry.h"
3132
#include "qgsreadwritecontext.h"
3233
#include "qgsstyle.h"
@@ -271,6 +272,14 @@ bool QgsMeshLayer::readSymbology( const QDomNode &node, QString &errorMessage,
271272
if ( !elemRendererSettings.isNull() )
272273
mRendererSettings.readXml( elemRendererSettings );
273274

275+
// get and set the blend mode if it exists
276+
QDomNode blendModeNode = node.namedItem( QStringLiteral( "blendMode" ) );
277+
if ( !blendModeNode.isNull() )
278+
{
279+
QDomElement e = blendModeNode.toElement();
280+
setBlendMode( QgsPainting::getCompositionMode( static_cast< QgsPainting::BlendMode >( e.text().toInt() ) ) );
281+
}
282+
274283
return true;
275284
}
276285

@@ -287,6 +296,12 @@ bool QgsMeshLayer::writeSymbology( QDomNode &node, QDomDocument &doc, QString &e
287296
QDomElement elemRendererSettings = mRendererSettings.writeXml( doc );
288297
elem.appendChild( elemRendererSettings );
289298

299+
// add blend mode node
300+
QDomElement blendModeElement = doc.createElement( QStringLiteral( "blendMode" ) );
301+
QDomText blendModeText = doc.createTextNode( QString::number( QgsPainting::getBlendModeEnum( blendMode() ) ) );
302+
blendModeElement.appendChild( blendModeText );
303+
node.appendChild( blendModeElement );
304+
290305
return true;
291306
}
292307

src/ui/mesh/qgsrenderermeshpropswidgetbase.ui

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,32 @@
6868
</property>
6969
</widget>
7070
</item>
71+
<item>
72+
<widget class="QgsCollapsibleGroupBox" name="mActiveDatasetBlendingMode">
73+
<property name="title">
74+
<string>Layer Rendering</string>
75+
</property>
76+
<layout class="QHBoxLayout" name="horizontalLayout">
77+
<item>
78+
<widget class="QLabel" name="">
79+
<property name="text">
80+
<string>Blending mode</string>
81+
</property>
82+
</widget>
83+
</item>
84+
<item>
85+
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox">
86+
<property name="minimumSize">
87+
<size>
88+
<width>0</width>
89+
<height>0</height>
90+
</size>
91+
</property>
92+
</widget>
93+
</item>
94+
</layout>
95+
</widget>
96+
</item>
7197
<item>
7298
<spacer name="verticalSpacer_3">
7399
<property name="orientation">
@@ -299,6 +325,17 @@
299325
<header>mesh/qgsmeshrenderervectorsettingswidget.h</header>
300326
<container>1</container>
301327
</customwidget>
328+
<customwidget>
329+
<class>QgsBlendModeComboBox</class>
330+
<extends>QComboBox</extends>
331+
<header>qgsblendmodecombobox.h</header>
332+
</customwidget>
333+
<customwidget>
334+
<class>QgsCollapsibleGroupBox</class>
335+
<extends>QGroupBox</extends>
336+
<header>qgscollapsiblegroupbox.h</header>
337+
<container>1</container>
338+
</customwidget>
302339
</customwidgets>
303340
<resources>
304341
<include location="../../../images/images.qrc"/>

0 commit comments

Comments
 (0)