Skip to content

Commit dac35e1

Browse files
committedMar 24, 2013
Merge pull request #476 from nyalldawson/blend_modes
Blend modes pt 2
2 parents 176a08c + 08fba25 commit dac35e1

9 files changed

+83
-124
lines changed
 

‎src/app/qgsvectorlayerproperties.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,6 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
192192
mLayerAbstractTextEdit->setPlainText( layer->abstract() );
193193
}
194194

195-
// Blend mode
196-
mBlendModeComboBox->setBlendMode( layer->blendMode() );
197-
198195
QSettings settings;
199196
restoreGeometry( settings.value( "/Windows/VectorLayerProperties/geometry" ).toByteArray() );
200197
int tabIndex = settings.value( "/Windows/VectorLayerProperties/row", 0 ).toInt();
@@ -531,9 +528,6 @@ void QgsVectorLayerProperties::apply()
531528
layer->setTitle( mLayerTitleLineEdit->text() );
532529
layer->setAbstract( mLayerAbstractTextEdit->toPlainText() );
533530

534-
// set the blend mode for the layer
535-
layer->setBlendMode(( QgsMapLayer::BlendMode ) mBlendModeComboBox->blendMode() );
536-
537531
// update symbology
538532
emit refreshLegend( layer->id(), QgsLegendItem::DontChange );
539533

‎src/core/qgsmaplayer.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -411,15 +411,6 @@ bool QgsMapLayer::readXML( const QDomNode& layer_node )
411411
setTransparency( myElement.text().toInt() );
412412
}
413413

414-
//read blend mode
415-
QDomNode blendModeNode = layer_node.namedItem( "blendMode" );
416-
if ( ! blendModeNode.isNull() )
417-
{
418-
// set blend mode if it's specified in project
419-
QDomElement myElement = blendModeNode.toElement();
420-
setBlendMode(( QgsMapLayer::BlendMode )myElement.text().toInt() );
421-
}
422-
423414
readCustomProperties( layer_node );
424415

425416
return true;
@@ -536,12 +527,6 @@ bool QgsMapLayer::writeXML( QDomNode & layer_node, QDomDocument & document )
536527
transparencyLevelIntElement.appendChild( transparencyLevelIntText );
537528
maplayer.appendChild( transparencyLevelIntElement );
538529

539-
// <blendMode>
540-
QDomElement blendModeElement = document.createElement( "blendMode" );
541-
QDomText blendModeText = document.createTextNode( QString::number( blendMode() ) );
542-
blendModeElement.appendChild( blendModeText );
543-
maplayer.appendChild( blendModeElement );
544-
545530
// now append layer node to map layer node
546531

547532
layer_node.appendChild( maplayer );

‎src/core/qgsmaprenderer.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,10 +385,10 @@ void QgsMapRenderer::render( QPainter* painter, double* forceWidthScale )
385385
.arg( ml->extent().toString() )
386386
.arg( ml->blendMode() )
387387
);
388-
388+
389389
// Set the QPainter composition mode so that this layer is rendered using
390390
// the desired blending mode
391-
mypContextPainter->setCompositionMode(ml->getCompositionMode());
391+
mypContextPainter->setCompositionMode( ml->getCompositionMode() );
392392

393393
if ( !ml->hasScaleBasedVisibility() || ( ml->minimumScale() <= mScale && mScale < ml->maximumScale() ) || mOverview )
394394
{
@@ -559,6 +559,9 @@ void QgsMapRenderer::render( QPainter* painter, double* forceWidthScale )
559559

560560
QgsDebugMsg( "Done rendering map layers" );
561561

562+
// Reset the composition mode before rendering the labels
563+
mRenderContext.painter()->setCompositionMode( QPainter::CompositionMode_SourceOver );
564+
562565
if ( !mOverview )
563566
{
564567
// render all labels for vector layers in the stack, starting at the base

‎src/core/qgsvectorlayer.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,6 +2260,14 @@ bool QgsVectorLayer::readSymbology( const QDomNode& node, QString& errorMessage
22602260
setDisplayField( e.text() );
22612261
}
22622262

2263+
// get and set the blend mode if it exists
2264+
QDomNode blendModeNode = node.namedItem( "blendMode" );
2265+
if ( !blendModeNode.isNull() )
2266+
{
2267+
QDomElement e = blendModeNode.toElement();
2268+
setBlendMode(( QgsMapLayer::BlendMode ) e.text().toInt() );
2269+
}
2270+
22632271
// use scale dependent visibility flag
22642272
QDomElement e = node.toElement();
22652273
mLabel->setScaleBasedVisibility( e.attribute( "scaleBasedLabelVisibilityFlag", "0" ) == "1" );
@@ -2605,6 +2613,12 @@ bool QgsVectorLayer::writeSymbology( QDomNode& node, QDomDocument& doc, QString&
26052613
//save customproperties (for labeling ng)
26062614
writeCustomProperties( node, doc );
26072615

2616+
// add the blend mode field
2617+
QDomElement blendModeElem = doc.createElement( "blendMode" );
2618+
QDomText blendModeText = doc.createTextNode( QString::number( blendMode() ) );
2619+
blendModeElem.appendChild( blendModeText );
2620+
node.appendChild( blendModeElem );
2621+
26082622
// add the display field
26092623
QDomElement dField = doc.createElement( "displayfield" );
26102624
QDomText dFieldText = doc.createTextNode( displayField() );

‎src/core/raster/qgsrasterlayer.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2312,6 +2312,14 @@ bool QgsRasterLayer::readSymbology( const QDomNode& layer_node, QString& errorMe
23122312
resampleFilter->readXML( resampleElem );
23132313
}
23142314

2315+
// get and set the blend mode if it exists
2316+
QDomNode blendModeNode = layer_node.namedItem( "blendMode" );
2317+
if ( !blendModeNode.isNull() )
2318+
{
2319+
QDomElement e = blendModeNode.toElement();
2320+
setBlendMode(( QgsMapLayer::BlendMode ) e.text().toInt() );
2321+
}
2322+
23152323
return true;
23162324
} //readSymbology
23172325

@@ -2499,6 +2507,12 @@ bool QgsRasterLayer::writeSymbology( QDomNode & layer_node, QDomDocument & docum
24992507
resampleFilter->writeXML( document, layerElem );
25002508
}
25012509

2510+
// add blend mode node
2511+
QDomElement blendModeElement = document.createElement( "blendMode" );
2512+
QDomText blendModeText = document.createTextNode( QString::number( blendMode() ) );
2513+
blendModeElement.appendChild( blendModeText );
2514+
layer_node.appendChild( blendModeElement );
2515+
25022516
return true;
25032517
} // bool QgsRasterLayer::writeSymbology
25042518

‎src/gui/symbology-ng/qgsrendererv2propertiesdialog.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
8787
// initialize registry's widget functions
8888
_initRendererWidgetFunctions();
8989

90+
// Blend mode
91+
mBlendModeComboBox->setBlendMode( mLayer->blendMode() );
92+
9093
QPixmap pix;
9194
QgsRendererV2Registry* reg = QgsRendererV2Registry::instance();
9295
QStringList renderers = reg->renderersList();
@@ -177,6 +180,9 @@ void QgsRendererV2PropertiesDialog::apply()
177180
{
178181
mLayer->setRendererV2( renderer->clone() );
179182
}
183+
184+
// set the blend mode for the layer
185+
mLayer->setBlendMode(( QgsMapLayer::BlendMode ) mBlendModeComboBox->blendMode() );
180186
}
181187

182188
void QgsRendererV2PropertiesDialog::onOK()

‎src/ui/qgsrasterlayerpropertiesbase.ui

Lines changed: 25 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,23 @@
145145
</property>
146146
</spacer>
147147
</item>
148+
<item>
149+
<widget class="QLabel" name="mBlendTypeLabel">
150+
<property name="text">
151+
<string>Blending mode</string>
152+
</property>
153+
</widget>
154+
</item>
155+
<item>
156+
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox">
157+
<property name="minimumSize">
158+
<size>
159+
<width>0</width>
160+
<height>0</height>
161+
</size>
162+
</property>
163+
</widget>
164+
</item>
148165
</layout>
149166
</item>
150167
<item>
@@ -158,13 +175,19 @@
158175
</widget>
159176
</item>
160177
<item>
161-
<widget class="QgsCollapsibleGroupBox" name="mResamplingGroupBox"><property name="collapsed" stdset="0"><bool>false</bool></property><property name="saveCollapsedState" stdset="0"><bool>true</bool></property>
178+
<widget class="QgsCollapsibleGroupBox" name="mResamplingGroupBox">
162179
<property name="title">
163180
<string>Resampling</string>
164181
</property>
165182
<property name="checkable">
166183
<bool>false</bool>
167184
</property>
185+
<property name="collapsed" stdset="0">
186+
<bool>false</bool>
187+
</property>
188+
<property name="saveCollapsedState" stdset="0">
189+
<bool>true</bool>
190+
</property>
168191
<layout class="QHBoxLayout" name="horizontalLayout">
169192
<item>
170193
<widget class="QLabel" name="mZoomedInResamplingLabel">
@@ -869,52 +892,6 @@ p, li { white-space: pre-wrap; }
869892
</layout>
870893
</widget>
871894
</item>
872-
<item>
873-
<layout class="QHBoxLayout" name="horizontalLayout_11">
874-
<property name="leftMargin">
875-
<number>0</number>
876-
</property>
877-
<property name="rightMargin">
878-
<number>0</number>
879-
</property>
880-
<property name="bottomMargin">
881-
<number>0</number>
882-
</property>
883-
<item>
884-
<widget class="QLabel" name="mBlendTypeLabel">
885-
<property name="text">
886-
<string>Composition blending mode</string>
887-
</property>
888-
<property name="margin">
889-
<number>0</number>
890-
</property>
891-
</widget>
892-
</item>
893-
<item>
894-
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox" native="true">
895-
<property name="minimumSize">
896-
<size>
897-
<width>0</width>
898-
<height>0</height>
899-
</size>
900-
</property>
901-
</widget>
902-
</item>
903-
<item>
904-
<spacer name="horizontalSpacer_6">
905-
<property name="orientation">
906-
<enum>Qt::Horizontal</enum>
907-
</property>
908-
<property name="sizeHint" stdset="0">
909-
<size>
910-
<width>40</width>
911-
<height>20</height>
912-
</size>
913-
</property>
914-
</spacer>
915-
</item>
916-
</layout>
917-
</item>
918895
<item>
919896
<widget class="QGroupBox" name="grpSRS">
920897
<property name="title">
@@ -1326,7 +1303,7 @@ p, li { white-space: pre-wrap; }
13261303
</customwidget>
13271304
<customwidget>
13281305
<class>QgsBlendModeComboBox</class>
1329-
<extends>QWidget</extends>
1306+
<extends>QComboBox</extends>
13301307
<header>qgsblendmodecombobox.h</header>
13311308
</customwidget>
13321309
</customwidgets>

‎src/ui/qgsrendererv2propsdialogbase.ui

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,16 @@
3232
</property>
3333
</spacer>
3434
</item>
35+
<item>
36+
<widget class="QLabel" name="label_2">
37+
<property name="text">
38+
<string>Blending mode</string>
39+
</property>
40+
</widget>
41+
</item>
42+
<item>
43+
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox"/>
44+
</item>
3545
<item>
3646
<widget class="QPushButton" name="btnOldSymbology">
3747
<property name="text">
@@ -77,6 +87,13 @@
7787
</item>
7888
</layout>
7989
</widget>
90+
<customwidgets>
91+
<customwidget>
92+
<class>QgsBlendModeComboBox</class>
93+
<extends>QComboBox</extends>
94+
<header>qgsblendmodecombobox.h</header>
95+
</customwidget>
96+
</customwidgets>
8097
<tabstops>
8198
<tabstop>cboRenderers</tabstop>
8299
<tabstop>buttonBox</tabstop>

‎src/ui/qgsvectorlayerpropertiesbase.ui

Lines changed: 2 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ p, li { white-space: pre-wrap; }
530530
</layout>
531531
</widget>
532532
</item>
533-
<item row="4" column="0">
533+
<item row="3" column="0">
534534
<widget class="QGroupBox" name="grpSubset">
535535
<property name="title">
536536
<string>Subset</string>
@@ -578,7 +578,7 @@ p, li { white-space: pre-wrap; }
578578
</layout>
579579
</widget>
580580
</item>
581-
<item row="3" column="0">
581+
<item row="2" column="0">
582582
<widget class="QGroupBox" name="grpProviderOptions">
583583
<property name="title">
584584
<string>Provider-specific options</string>
@@ -600,52 +600,6 @@ p, li { white-space: pre-wrap; }
600600
</layout>
601601
</widget>
602602
</item>
603-
<item row="2" column="0">
604-
<layout class="QHBoxLayout" name="horizontalLayout_11">
605-
<property name="leftMargin">
606-
<number>9</number>
607-
</property>
608-
<property name="rightMargin">
609-
<number>9</number>
610-
</property>
611-
<property name="bottomMargin">
612-
<number>0</number>
613-
</property>
614-
<item>
615-
<widget class="QLabel" name="mBlendTypeLabel">
616-
<property name="text">
617-
<string>Composition blending mode</string>
618-
</property>
619-
<property name="margin">
620-
<number>0</number>
621-
</property>
622-
</widget>
623-
</item>
624-
<item>
625-
<widget class="QgsBlendModeComboBox" name="mBlendModeComboBox" native="true">
626-
<property name="minimumSize">
627-
<size>
628-
<width>0</width>
629-
<height>0</height>
630-
</size>
631-
</property>
632-
</widget>
633-
</item>
634-
<item>
635-
<spacer name="horizontalSpacer_4">
636-
<property name="orientation">
637-
<enum>Qt::Horizontal</enum>
638-
</property>
639-
<property name="sizeHint" stdset="0">
640-
<size>
641-
<width>40</width>
642-
<height>20</height>
643-
</size>
644-
</property>
645-
</spacer>
646-
</item>
647-
</layout>
648-
</item>
649603
</layout>
650604
</widget>
651605
</widget>
@@ -1054,11 +1008,6 @@ p, li { white-space: pre-wrap; }
10541008
<extends>QWidget</extends>
10551009
<header>qgsscalecombobox.h</header>
10561010
</customwidget>
1057-
<customwidget>
1058-
<class>QgsBlendModeComboBox</class>
1059-
<extends>QWidget</extends>
1060-
<header>qgsblendmodecombobox.h</header>
1061-
</customwidget>
10621011
</customwidgets>
10631012
<tabstops>
10641013
<tabstop>cbMinimumScale</tabstop>

0 commit comments

Comments
 (0)
Please sign in to comment.