Skip to content

Commit 6bffa17

Browse files
committedJan 30, 2017
Fix failing tests
1 parent 1c1dae3 commit 6bffa17

File tree

12 files changed

+43
-14
lines changed

12 files changed

+43
-14
lines changed
 

‎scripts/parse_dash_results.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,15 @@ def colorDiff(c1, c2):
6161

6262

6363
def imageFromPath(path):
64-
if (path[:7] == 'https://' or path[:7] == 'file://'):
64+
print(path)
65+
if (path[:8] == 'https://' or path[:7] == 'file://'):
6566
# fetch remote image
67+
print('fetching remote!')
6668
data = urllib.request.urlopen(path).read()
6769
image = QImage()
6870
image.loadFromData(data)
6971
else:
72+
print('using local!')
7073
image = QImage(path)
7174
return image
7275

‎src/core/composer/qgscomposershape.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ void QgsComposerShape::setShapeStyleSymbol( QgsFillSymbol* symbol )
8383

8484
void QgsComposerShape::refreshSymbol()
8585
{
86-
mMaxSymbolBleed = QgsSymbolLayerUtils::estimateMaxSymbolBleed( mShapeStyleSymbol, QgsComposerUtils::createRenderContextForComposition( mComposition, nullptr ) );
86+
QgsRenderContext rc = QgsComposerUtils::createRenderContextForMap( mComposition->referenceMap(), nullptr, mComposition->printResolution() );
87+
mMaxSymbolBleed = ( 25.4 / mComposition->printResolution() ) * QgsSymbolLayerUtils::estimateMaxSymbolBleed( mShapeStyleSymbol, rc );
88+
8789
updateBoundingRect();
8890

8991
update();
@@ -102,7 +104,9 @@ void QgsComposerShape::createDefaultShapeStyleSymbol()
102104
properties.insert( QStringLiteral( "joinstyle" ), QStringLiteral( "miter" ) );
103105
mShapeStyleSymbol = QgsFillSymbol::createSimple( properties );
104106

105-
mMaxSymbolBleed = QgsSymbolLayerUtils::estimateMaxSymbolBleed( mShapeStyleSymbol, QgsComposerUtils::createRenderContextForComposition( mComposition, nullptr ) );
107+
QgsRenderContext rc = QgsComposerUtils::createRenderContextForMap( mComposition->referenceMap(), nullptr, mComposition->printResolution() );
108+
mMaxSymbolBleed = ( 25.4 / mComposition->printResolution() ) * QgsSymbolLayerUtils::estimateMaxSymbolBleed( mShapeStyleSymbol, rc );
109+
106110
updateBoundingRect();
107111

108112
emit frameChanged();

‎src/core/composer/qgscomposerutils.cpp

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -488,15 +488,32 @@ void QgsComposerUtils::drawText( QPainter *painter, const QRectF &rect, const QS
488488
painter->restore();
489489
}
490490

491-
QgsRenderContext QgsComposerUtils::createRenderContextForMap( QgsComposerMap* map, QPainter* painter )
491+
QgsRenderContext QgsComposerUtils::createRenderContextForMap( QgsComposerMap* map, QPainter* painter, double dpi )
492492
{
493493
if ( !map )
494494
{
495-
return QgsRenderContext::fromQPainter( painter );
495+
QgsRenderContext context;
496+
context.setPainter( painter );
497+
if ( dpi < 0 && painter && painter->device() )
498+
{
499+
context.setScaleFactor( painter->device()->logicalDpiX() / 25.4 );
500+
}
501+
else if ( dpi > 0 )
502+
{
503+
context.setScaleFactor( dpi / 25.4 );
504+
}
505+
else
506+
{
507+
context.setScaleFactor( 3.465 ); //assume 88 dpi as standard value
508+
}
509+
return context;
496510
}
497511

498512
// default to 88 dpi if no painter specified
499-
int dpi = ( painter && painter->device() ) ? painter->device()->logicalDpiX() : 88;
513+
if ( dpi < 0 )
514+
{
515+
dpi = ( painter && painter->device() ) ? painter->device()->logicalDpiX() : 88;
516+
}
500517
double dotsPerMM = dpi / 25.4;
501518

502519
// get map settings from reference map

‎src/core/composer/qgscomposerutils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ class CORE_EXPORT QgsComposerUtils
252252
* @note added in QGIS 3.0
253253
* @see createRenderContextForComposition()
254254
*/
255-
static QgsRenderContext createRenderContextForMap( QgsComposerMap* map, QPainter* painter );
255+
static QgsRenderContext createRenderContextForMap( QgsComposerMap* map, QPainter* painter, double dpi = -1 );
256256

257257
/**
258258
* Creates a render context suitable for the specified composition and QPainter destination.

‎src/core/composer/qgspaperitem.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,16 @@ void QgsPaperItem::paint( QPainter* painter, const QStyleOptionGraphicsItem* ite
201201
void QgsPaperItem::calculatePageMargin()
202202
{
203203
//get max bleed from symbol
204-
double maxBleed = QgsSymbolLayerUtils::estimateMaxSymbolBleed( mComposition->pageStyleSymbol(),
205-
QgsComposerUtils::createRenderContextForComposition( mComposition, nullptr ) );
204+
QgsRenderContext rc = QgsComposerUtils::createRenderContextForMap( mComposition->referenceMap(), nullptr, mComposition->printResolution() );
205+
double maxBleedPixels = QgsSymbolLayerUtils::estimateMaxSymbolBleed( mComposition->pageStyleSymbol(), rc );
206206

207207
//Now subtract 1 pixel to prevent semi-transparent borders at edge of solid page caused by
208208
//anti-aliased painting. This may cause a pixel to be cropped from certain edge lines/symbols,
209209
//but that can be counteracted by adding a dummy transparent line symbol layer with a wider line width
210-
mPageMargin = maxBleed - ( 25.4 / mComposition->printResolution() );
210+
maxBleedPixels--;
211+
212+
double maxBleedMm = ( 25.4 / mComposition->printResolution() ) * maxBleedPixels;
213+
mPageMargin = maxBleedMm;
211214
}
212215

213216
bool QgsPaperItem::writeXml( QDomElement& elem, QDomDocument & doc ) const

‎tests/src/python/test_qgsannotation.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
QgsRenderContext,
2222
QgsCoordinateReferenceSystem,
2323
QgsRectangle,
24+
QgsMultiRenderChecker,
2425
QgsRenderChecker,
2526
QgsPoint,
2627
QgsVectorLayer,
@@ -160,12 +161,12 @@ def imageCheck(self, name, reference_image, image):
160161
temp_dir = QDir.tempPath() + '/'
161162
file_name = temp_dir + 'annotation_' + name + ".png"
162163
image.save(file_name, "PNG")
163-
checker = QgsRenderChecker()
164+
checker = QgsMultiRenderChecker()
164165
checker.setControlPathPrefix("annotations")
165166
checker.setControlName("expected_" + reference_image)
166167
checker.setRenderedImage(file_name)
167168
checker.setColorTolerance(2)
168-
result = checker.compareImages(name, 20)
169+
result = checker.runTest(name, 20)
169170
self.report += checker.report()
170171
print((self.report))
171172
return result

‎tests/src/python/test_qgsmapcanvasannotationitem.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
QgsPoint,
2222
QgsVectorLayer,
2323
QgsFeature,
24-
QgsGeometry)
24+
QgsGeometry,
25+
QgsFillSymbol)
2526
from qgis.gui import (QgsMapCanvas,
2627
QgsMapCanvasAnnotationItem)
2728

@@ -86,7 +87,7 @@ def testSize(self):
8687
a = QgsTextAnnotation()
8788
a.setFrameSize(QSizeF(300, 200))
8889
a.setHasFixedMapPosition(False)
89-
a.setFrameBorderWidth(0)
90+
a.setFillSymbol(QgsFillSymbol.createSimple({'color': 'blue', 'width_border': '0'}))
9091

9192
canvas = QgsMapCanvas()
9293
canvas.setDestinationCrs(QgsCoordinateReferenceSystem(4326))

0 commit comments

Comments
 (0)
Please sign in to comment.