|
14 | 14 | ***************************************************************************/ |
15 | 15 |
|
16 | 16 | #include "qgsmultirenderchecker.h" |
17 | | - |
| 17 | +#include "qgscomposition.h" |
18 | 18 | #include <QDebug> |
19 | 19 |
|
20 | 20 | QgsMultiRenderChecker::QgsMultiRenderChecker() |
@@ -102,3 +102,84 @@ QString QgsMultiRenderChecker::controlImagePath() const |
102 | 102 | QDir::separator() + mControlPathPrefix + QDir::separator() + mControlName + QDir::separator(); |
103 | 103 | return myControlImageDir; |
104 | 104 | } |
| 105 | + |
| 106 | +#ifdef ENABLE_TESTS |
| 107 | + |
| 108 | +// |
| 109 | +// QgsCompositionChecker |
| 110 | +// |
| 111 | + |
| 112 | +///@cond PRIVATE |
| 113 | + |
| 114 | +QgsCompositionChecker::QgsCompositionChecker( const QString& testName, QgsComposition* composition ) |
| 115 | + : QgsMultiRenderChecker() |
| 116 | + , mTestName( testName ) |
| 117 | + , mComposition( composition ) |
| 118 | + , mSize( 1122, 794 ) |
| 119 | + , mDotsPerMeter( 96 / 25.4 * 1000 ) |
| 120 | +{ |
| 121 | + // The composer has some slight render inconsistencies on the whole image sometimes |
| 122 | + setColorTolerance( 5 ); |
| 123 | +} |
| 124 | + |
| 125 | +QgsCompositionChecker::QgsCompositionChecker() |
| 126 | + : mComposition( nullptr ) |
| 127 | + , mDotsPerMeter( 96 / 25.4 * 1000 ) |
| 128 | +{ |
| 129 | +} |
| 130 | + |
| 131 | +QgsCompositionChecker::~QgsCompositionChecker() |
| 132 | +{ |
| 133 | +} |
| 134 | + |
| 135 | +bool QgsCompositionChecker::testComposition( QString &theReport, int page, int pixelDiff ) |
| 136 | +{ |
| 137 | + if ( !mComposition ) |
| 138 | + { |
| 139 | + return false; |
| 140 | + } |
| 141 | + |
| 142 | + setControlName( "expected_" + mTestName ); |
| 143 | + |
| 144 | +#if 0 |
| 145 | + //fake mode to generate expected image |
| 146 | + //assume 96 dpi and size of the control image 1122 * 794 |
| 147 | + QImage newImage( QSize( 1122, 794 ), QImage::Format_RGB32 ); |
| 148 | + mComposition->setPlotStyle( QgsComposition::Print ); |
| 149 | + newImage.setDotsPerMeterX( 96 / 25.4 * 1000 ); |
| 150 | + newImage.setDotsPerMeterY( 96 / 25.4 * 1000 ); |
| 151 | + drawBackground( &newImage ); |
| 152 | + QPainter expectedPainter( &newImage ); |
| 153 | + //QRectF sourceArea( 0, 0, mComposition->paperWidth(), mComposition->paperHeight() ); |
| 154 | + //QRectF targetArea( 0, 0, 3507, 2480 ); |
| 155 | + mComposition->renderPage( &expectedPainter, page ); |
| 156 | + expectedPainter.end(); |
| 157 | + newImage.save( mExpectedImageFile, "PNG" ); |
| 158 | + return true; |
| 159 | +#endif //0 |
| 160 | + |
| 161 | + QImage outputImage( mSize, QImage::Format_RGB32 ); |
| 162 | + |
| 163 | + mComposition->setPlotStyle( QgsComposition::Print ); |
| 164 | + outputImage.setDotsPerMeterX( mDotsPerMeter ); |
| 165 | + outputImage.setDotsPerMeterY( mDotsPerMeter ); |
| 166 | + drawBackground( &outputImage ); |
| 167 | + QPainter p( &outputImage ); |
| 168 | + mComposition->renderPage( &p, page ); |
| 169 | + p.end(); |
| 170 | + |
| 171 | + QString renderedFilePath = QDir::tempPath() + '/' + QFileInfo( mTestName ).baseName() + "_rendered.png"; |
| 172 | + outputImage.save( renderedFilePath, "PNG" ); |
| 173 | + |
| 174 | + setRenderedImage( renderedFilePath ); |
| 175 | + |
| 176 | + bool testResult = runTest( mTestName, pixelDiff ); |
| 177 | + |
| 178 | + theReport += report(); |
| 179 | + |
| 180 | + return testResult; |
| 181 | +} |
| 182 | + |
| 183 | +///@endcond |
| 184 | + |
| 185 | +#endif |
0 commit comments