Skip to content

Commit fd95930

Browse files
committed
Switch QgsCompositionChecker to MultiRenderChecker
1 parent 31c3250 commit fd95930

6 files changed

Lines changed: 28 additions & 59 deletions

File tree

‎python/core/qgsmultirenderchecker.sip‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,9 @@ class QgsMultiRenderChecker
8787
*/
8888
const QString controlImagePath() const;
8989

90+
/**Draws a checkboard pattern for image backgrounds, so that transparency is visible
91+
* without requiring a transparent background for the image
92+
*/
93+
static void drawBackround( QImage* image );
9094
};
9195

‎python/core/qgsrenderchecker.sip‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,5 @@ class QgsRenderChecker
8888
/**Draws a checkboard pattern for image backgrounds, so that transparency is visible
8989
* without requiring a transparent background for the image
9090
*/
91-
void drawBackround( QImage* image );
91+
static void drawBackround( QImage* image );
9292
};

‎src/core/qgsmultirenderchecker.h‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,11 @@ class CORE_EXPORT QgsMultiRenderChecker
114114
*/
115115
const QString controlImagePath() const;
116116

117+
/**Draws a checkboard pattern for image backgrounds, so that transparency is visible
118+
* without requiring a transparent background for the image
119+
*/
120+
static void drawBackround( QImage* image ) { QgsRenderChecker::drawBackround( image ); }
121+
117122
private:
118123
QString mReport;
119124
QString mRenderedImage;

‎src/core/qgsrenderchecker.h‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,12 @@ class CORE_EXPORT QgsRenderChecker
127127
*/
128128
bool isKnownAnomaly( QString theDiffImageFile );
129129

130-
QString expectedImageFile() { return mExpectedImageFile; };
130+
QString expectedImageFile() { return mExpectedImageFile; }
131+
132+
/**Draws a checkboard pattern for image backgrounds, so that transparency is visible
133+
* without requiring a transparent background for the image
134+
*/
135+
static void drawBackround( QImage* image );
131136

132137
protected:
133138
QString mReport;
@@ -136,11 +141,6 @@ class CORE_EXPORT QgsRenderChecker
136141
QString mRenderedImageFile;
137142
QString mExpectedImageFile;
138143

139-
/**Draws a checkboard pattern for image backgrounds, so that transparency is visible
140-
* without requiring a transparent background for the image
141-
*/
142-
void drawBackround( QImage* image );
143-
144144
private:
145145
QString mControlName;
146146
unsigned int mMismatchCount;

‎tests/src/core/qgscompositionchecker.cpp‎

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,6 @@ QgsCompositionChecker::~QgsCompositionChecker()
4040
{
4141
}
4242

43-
void QgsCompositionChecker::drawBackround( QImage* image )
44-
{
45-
// create a 2x2 checker-board image
46-
uchar pixDataRGB[] = { 255, 255, 255, 255,
47-
127, 127, 127, 255,
48-
127, 127, 127, 255,
49-
255, 255, 255, 255
50-
};
51-
52-
QImage img( pixDataRGB, 2, 2, 8, QImage::Format_ARGB32 );
53-
QPixmap pix = QPixmap::fromImage( img.scaled( 20, 20 ) );
54-
55-
// fill image with texture
56-
QBrush brush;
57-
brush.setTexture( pix );
58-
QPainter p( image );
59-
p.setRenderHint( QPainter::Antialiasing, false );
60-
p.fillRect( QRect( 0, 0, image->width(), image->height() ), brush );
61-
p.end();
62-
}
63-
6443
bool QgsCompositionChecker::testComposition( QString &theReport, int page, int pixelDiff )
6544
{
6645
if ( !mComposition )

‎tests/src/python/qgscompositionchecker.py‎

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@
2020
from PyQt4.QtGui import *
2121
from qgis.core import *
2222

23-
class QgsCompositionChecker(QgsRenderChecker):
23+
class QgsCompositionChecker(QgsMultiRenderChecker):
2424
def __init__(self, mTestName, mComposition ):
25-
self.mExpectedImageFile = ""
25+
super(QgsCompositionChecker, self).__init__()
2626
self.mComposition = mComposition
2727
self.mTestName = mTestName
28-
super(QgsCompositionChecker, self).__init__()
28+
self.mDotsPerMeter = 96 / 25.4 * 1000
29+
self.mSize = QSize( 1122, 794 )
30+
self.setColorTolerance( 1 )
2931

3032
def testComposition(self, page=0, pixelDiff=0 ):
3133
if ( self.mComposition == None):
@@ -34,45 +36,24 @@ def testComposition(self, page=0, pixelDiff=0 ):
3436

3537
#load expected image
3638
self.setControlName("expected_"+self.mTestName);
37-
expectedImage = QImage( self.expectedImageFile() )
3839

3940
#get width/height, create image and render the composition to it
40-
width = expectedImage.width();
41-
height = expectedImage.height();
42-
outputImage = QImage( QSize( width, height ), QImage.Format_RGB32 )
41+
outputImage = QImage( self.mSize, QImage.Format_RGB32 )
4342

4443
self.mComposition.setPlotStyle( QgsComposition.Print )
45-
outputImage.setDotsPerMeterX( expectedImage.dotsPerMeterX() )
46-
outputImage.setDotsPerMeterY( expectedImage.dotsPerMeterX() )
47-
self.drawBackround( outputImage )
44+
outputImage.setDotsPerMeterX( self.mDotsPerMeter )
45+
outputImage.setDotsPerMeterY( self.mDotsPerMeter )
46+
QgsMultiRenderChecker.drawBackround( outputImage )
4847
p = QPainter( outputImage )
4948
self.mComposition.renderPage( p, page )
5049
p.end()
5150

5251
renderedFilePath = QDir.tempPath() + QDir.separator() + QFileInfo(self.mTestName).baseName() + "_rendered.png"
5352
outputImage.save( renderedFilePath, "PNG" )
5453

55-
diffFilePath = QDir.tempPath() + QDir.separator() + QFileInfo(self.mTestName).baseName() + "_result_diff.png"
56-
testResult = self.compareImages( self.mTestName, pixelDiff, renderedFilePath )
54+
self.setRenderedImage( renderedFilePath )
5755

58-
myDashMessage = (('<DartMeasurementFile name="Rendered Image '
59-
'%s" type="image/png">'
60-
'%s</DartMeasurementFile>'
61-
'<DartMeasurementFile name="Expected Image '
62-
'%s" type="image/png">'
63-
'%s</DartMeasurementFile>\n'
64-
'<DartMeasurementFile name="Difference Image '
65-
'%s" type="image/png">'
66-
'%s</DartMeasurementFile>') %
67-
(self.mTestName, renderedFilePath, self.mTestName,
68-
self.expectedImageFile(), self.mTestName, diffFilePath )
69-
)
70-
qDebug( myDashMessage )
71-
if not testResult:
72-
myMessage = ('Expected: %s\nGot: %s\nDifference: %s\n' %
73-
(self.expectedImageFile(), renderedFilePath, diffFilePath))
74-
else:
75-
myMessage = 'Control and test images matched.'
56+
testResult = self.runTest( self.mTestName, pixelDiff )
7657

77-
return testResult, myMessage
58+
return testResult, self.report()
7859

0 commit comments

Comments
 (0)