23
23
#include < QGraphicsView>
24
24
#include < QPainter>
25
25
#include < QUuid>
26
+ #include < QGraphicsEffect>
26
27
27
28
#include " qgsproject.h"
28
29
35
36
#include " qgsrectangle.h" // just for debugging
36
37
#include " qgslogger.h"
37
38
#include " qgssymbollayerv2utils.h" // for pointOnLineWithDistance
39
+ #include " qgsmaprenderer.h" // for getCompositionMode
38
40
39
41
#include < cmath>
40
42
@@ -52,6 +54,7 @@ QgsComposerItem::QgsComposerItem( QgsComposition* composition, bool manageZValue
52
54
, mItemPositionLocked( false )
53
55
, mLastValidViewScaleFactor( -1 )
54
56
, mRotation( 0 )
57
+ , mBlendMode( QgsMapRenderer::BlendNormal )
55
58
, mLastUsedPositionMode( UpperLeft )
56
59
, mId( " " )
57
60
, mUuid( QUuid::createUuid().toString() )
@@ -71,6 +74,7 @@ QgsComposerItem::QgsComposerItem( qreal x, qreal y, qreal width, qreal height, Q
71
74
, mItemPositionLocked( false )
72
75
, mLastValidViewScaleFactor( -1 )
73
76
, mRotation( 0 )
77
+ , mBlendMode( QgsMapRenderer::BlendNormal )
74
78
, mLastUsedPositionMode( UpperLeft )
75
79
, mId( " " )
76
80
, mUuid( QUuid::createUuid().toString() )
@@ -95,6 +99,10 @@ void QgsComposerItem::init( bool manageZValue )
95
99
{
96
100
mComposition ->addItemToZList ( this );
97
101
}
102
+
103
+ // Setup composer effect
104
+ mEffect = new QgsComposerEffect ();
105
+ setGraphicsEffect ( mEffect );
98
106
}
99
107
100
108
QgsComposerItem::~QgsComposerItem ()
@@ -105,6 +113,7 @@ QgsComposerItem::~QgsComposerItem()
105
113
}
106
114
107
115
delete mBoundingResizeRectangle ;
116
+ delete mEffect ;
108
117
deleteAlignItems ();
109
118
}
110
119
@@ -192,6 +201,9 @@ bool QgsComposerItem::_writeXML( QDomElement& itemElem, QDomDocument& doc ) cons
192
201
bgColorElem.setAttribute ( " alpha" , QString::number ( bgColor.alpha () ) );
193
202
composerItemElem.appendChild ( bgColorElem );
194
203
204
+ // blend mode
205
+ composerItemElem.setAttribute ( " blendMode" , QString::number ( mBlendMode ) );
206
+
195
207
itemElem.appendChild ( composerItemElem );
196
208
197
209
return true ;
@@ -311,6 +323,10 @@ bool QgsComposerItem::_readXML( const QDomElement& itemElem, const QDomDocument&
311
323
setBrush ( QBrush ( brushColor ) );
312
324
}
313
325
}
326
+
327
+ // blend mode
328
+ setBlendMode (( QgsMapRenderer::BlendMode ) itemElem.attribute ( " blendMode" , " 0" ).toInt () );
329
+
314
330
return true ;
315
331
}
316
332
@@ -859,6 +875,14 @@ void QgsComposerItem::drawBackground( QPainter* p )
859
875
}
860
876
}
861
877
878
+ void QgsComposerItem::setBlendMode ( QgsMapRenderer::BlendMode blendMode )
879
+ {
880
+ mBlendMode = blendMode;
881
+ // Update the composer effect to use the new blend mode
882
+ mEffect ->setCompositionMode ( QgsMapRenderer::getCompositionMode ( mBlendMode ) );
883
+ }
884
+
885
+
862
886
void QgsComposerItem::hoverMoveEvent ( QGraphicsSceneHoverEvent * event )
863
887
{
864
888
if ( isSelected () )
0 commit comments