26
26
#include < QPainter>
27
27
#include < QSvgRenderer>
28
28
29
+
29
30
QgsComposerPicture::QgsComposerPicture ( QgsComposition *composition ): QgsComposerItem( composition ), mMode( Unknown ), \
30
- mSvgCacheUpToDate( false ), mCachedDpi( 0 ), mCachedRotation( 0 ), mRotationMap( 0 )
31
+ mSvgCacheUpToDate( false ), mCachedDpi( 0 ), mCachedRotation( 0 ), mCachedViewScaleFactor( - 1 ), mRotationMap( 0 )
31
32
{
32
33
}
33
34
34
- QgsComposerPicture::QgsComposerPicture (): QgsComposerItem( 0 ), mMode( Unknown ), mSvgCacheUpToDate( false ), mCachedRotation( 0 ), mRotationMap( 0 )
35
+ QgsComposerPicture::QgsComposerPicture (): QgsComposerItem( 0 ), mMode( Unknown ), mSvgCacheUpToDate( false ), mCachedRotation( 0 ), mCachedViewScaleFactor( - 1 ), mRotationMap( 0 )
35
36
{
36
37
37
38
}
@@ -51,7 +52,9 @@ void QgsComposerPicture::paint( QPainter* painter, const QStyleOptionGraphicsIte
51
52
drawBackground ( painter );
52
53
53
54
int newDpi = ( painter->device ()->logicalDpiX () + painter->device ()->logicalDpiY () ) / 2 ;
54
- if ( newDpi != mCachedDpi || mCachedRotation != mRotation )
55
+ double viewScaleFactor = horizontalViewScaleFactor ();
56
+
57
+ if ( newDpi != mCachedDpi || mCachedRotation != mRotation || mCachedViewScaleFactor != viewScaleFactor )
55
58
{
56
59
mSvgCacheUpToDate = false ;
57
60
}
@@ -82,6 +85,12 @@ void QgsComposerPicture::paint( QPainter* painter, const QStyleOptionGraphicsIte
82
85
{
83
86
if ( !mSvgCacheUpToDate )
84
87
{
88
+ // make nicer preview
89
+ if ( mComposition && mComposition ->plotStyle () == QgsComposition::Preview )
90
+ {
91
+ rotatedBoundImageWidth *= std::min ( viewScaleFactor, 10.0 );
92
+ rotatedBoundImageHeight *= std::min ( viewScaleFactor, 10.0 );
93
+ }
85
94
mImage = QImage ( rotatedBoundImageWidth, rotatedBoundImageHeight, QImage::Format_ARGB32 );
86
95
updateImageFromSvg ();
87
96
}
@@ -91,13 +100,20 @@ void QgsComposerPicture::paint( QPainter* painter, const QStyleOptionGraphicsIte
91
100
painter->translate ( boundRectWidthMM / 2.0 , boundRectHeightMM / 2.0 );
92
101
painter->rotate ( mRotation );
93
102
painter->translate ( -rotatedBoundImageWidthMM / 2.0 , -rotatedBoundImageHeightMM / 2.0 );
103
+
104
+ /* if ( mComposition && mComposition->plotStyle() == QgsComposition::Preview )
105
+ {
106
+ rotatedBoundImageWidthMM /= std::min( viewScaleFactor, 10.0 );
107
+ rotatedBoundImageHeightMM /= std::min( viewScaleFactor, 10.0 );
108
+ }*/
94
109
painter->drawImage ( QRectF ( 0 , 0 , rotatedBoundImageWidthMM, rotatedBoundImageHeightMM ), mImage , QRectF ( 0 , 0 , mImage .width (), mImage .height () ) );
95
110
96
111
painter->restore ();
97
112
}
98
113
99
114
mCachedDpi = newDpi;
100
115
mCachedRotation = mRotation ;
116
+ mCachedViewScaleFactor = viewScaleFactor;
101
117
102
118
// frame and selection boxes
103
119
drawFrame ( painter );
0 commit comments