mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-21 00:07:33 -04:00
Minor refactoring, more tests
This commit is contained in:
parent
d5d728089a
commit
0a9d61a0b3
@ -136,6 +136,29 @@ QString QgsAbstractGeoPdfExporter::generateTemporaryFilepath( const QString &fil
|
|||||||
return mTemporaryDir.filePath( filename );
|
return mTemporaryDir.filePath( filename );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode mode )
|
||||||
|
{
|
||||||
|
switch ( mode )
|
||||||
|
{
|
||||||
|
case QPainter::CompositionMode_SourceOver:
|
||||||
|
case QPainter::CompositionMode_Multiply:
|
||||||
|
case QPainter::CompositionMode_Screen:
|
||||||
|
case QPainter::CompositionMode_Overlay:
|
||||||
|
case QPainter::CompositionMode_Darken:
|
||||||
|
case QPainter::CompositionMode_Lighten:
|
||||||
|
case QPainter::CompositionMode_ColorDodge:
|
||||||
|
case QPainter::CompositionMode_ColorBurn:
|
||||||
|
case QPainter::CompositionMode_HardLight:
|
||||||
|
case QPainter::CompositionMode_SoftLight:
|
||||||
|
case QPainter::CompositionMode_Difference:
|
||||||
|
case QPainter::CompositionMode_Exclusion:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void QgsAbstractGeoPdfExporter::pushRenderedFeature( const QString &layerId, const QgsAbstractGeoPdfExporter::RenderedFeature &feature, const QString &group )
|
void QgsAbstractGeoPdfExporter::pushRenderedFeature( const QString &layerId, const QgsAbstractGeoPdfExporter::RenderedFeature &feature, const QString &group )
|
||||||
{
|
{
|
||||||
@ -479,52 +502,7 @@ QString QgsAbstractGeoPdfExporter::createCompositionXml( const QList<ComponentLa
|
|||||||
{
|
{
|
||||||
QDomElement blendingElement = doc.createElement( QStringLiteral( "Blending" ) );
|
QDomElement blendingElement = doc.createElement( QStringLiteral( "Blending" ) );
|
||||||
blendingElement.setAttribute( QStringLiteral( "opacity" ), component.opacity );
|
blendingElement.setAttribute( QStringLiteral( "opacity" ), component.opacity );
|
||||||
QString function;
|
blendingElement.setAttribute( QStringLiteral( "function" ), compositionModeToString( component.compositionMode ) );
|
||||||
switch ( component.compositionMode )
|
|
||||||
{
|
|
||||||
case QPainter::CompositionMode_SourceOver:
|
|
||||||
function = QStringLiteral( "Normal" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Multiply:
|
|
||||||
function = QStringLiteral( "Multiply" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Screen:
|
|
||||||
function = QStringLiteral( "Screen" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Overlay:
|
|
||||||
function = QStringLiteral( "Overlay" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Darken:
|
|
||||||
function = QStringLiteral( "Darken" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Lighten:
|
|
||||||
function = QStringLiteral( "Lighten" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_ColorDodge:
|
|
||||||
function = QStringLiteral( "ColorDodge" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_ColorBurn:
|
|
||||||
function = QStringLiteral( "ColorBurn" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_HardLight:
|
|
||||||
function = QStringLiteral( "HardLight" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_SoftLight:
|
|
||||||
function = QStringLiteral( "SoftLight" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Difference:
|
|
||||||
function = QStringLiteral( "Difference" );
|
|
||||||
break;
|
|
||||||
case QPainter::CompositionMode_Exclusion:
|
|
||||||
function = QStringLiteral( "Exclusion" );
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
QgsDebugMsg( QStringLiteral( "Unsupported PDF blend mode %1" ).arg( component.compositionMode ) );
|
|
||||||
function = QStringLiteral( "Normal" );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
blendingElement.setAttribute( QStringLiteral( "function" ), function );
|
|
||||||
|
|
||||||
pdfDataset.appendChild( blendingElement );
|
pdfDataset.appendChild( blendingElement );
|
||||||
}
|
}
|
||||||
@ -608,3 +586,51 @@ QString QgsAbstractGeoPdfExporter::createCompositionXml( const QList<ComponentLa
|
|||||||
return composition;
|
return composition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode mode )
|
||||||
|
{
|
||||||
|
switch ( mode )
|
||||||
|
{
|
||||||
|
case QPainter::CompositionMode_SourceOver:
|
||||||
|
return QStringLiteral( "Normal" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Multiply:
|
||||||
|
return QStringLiteral( "Multiply" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Screen:
|
||||||
|
return QStringLiteral( "Screen" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Overlay:
|
||||||
|
return QStringLiteral( "Overlay" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Darken:
|
||||||
|
return QStringLiteral( "Darken" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Lighten:
|
||||||
|
return QStringLiteral( "Lighten" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_ColorDodge:
|
||||||
|
return QStringLiteral( "ColorDodge" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_ColorBurn:
|
||||||
|
return QStringLiteral( "ColorBurn" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_HardLight:
|
||||||
|
return QStringLiteral( "HardLight" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_SoftLight:
|
||||||
|
return QStringLiteral( "SoftLight" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Difference:
|
||||||
|
return QStringLiteral( "Difference" );
|
||||||
|
|
||||||
|
case QPainter::CompositionMode_Exclusion:
|
||||||
|
return QStringLiteral( "Exclusion" );
|
||||||
|
|
||||||
|
default:
|
||||||
|
QgsDebugMsg( QStringLiteral( "Unsupported PDF blend mode %1" ).arg( mode ) );
|
||||||
|
return QStringLiteral( "Normal" );
|
||||||
|
|
||||||
|
}
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -311,6 +311,14 @@ class CORE_EXPORT QgsAbstractGeoPdfExporter
|
|||||||
*/
|
*/
|
||||||
QString generateTemporaryFilepath( const QString &filename ) const;
|
QString generateTemporaryFilepath( const QString &filename ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns TRUE if the specified composition \a mode is supported for layers
|
||||||
|
* during GeoPDF exports.
|
||||||
|
*
|
||||||
|
* \since QGIS 3.14
|
||||||
|
*/
|
||||||
|
static bool compositionModeSupported( QPainter::CompositionMode mode );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -358,6 +366,11 @@ class CORE_EXPORT QgsAbstractGeoPdfExporter
|
|||||||
|
|
||||||
QString createCompositionXml( const QList< QgsAbstractGeoPdfExporter::ComponentLayerDetail > &components, const ExportDetails &details );
|
QString createCompositionXml( const QList< QgsAbstractGeoPdfExporter::ComponentLayerDetail > &components, const ExportDetails &details );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the GDAL string representation of the specified QPainter composition \a mode.
|
||||||
|
*/
|
||||||
|
static QString compositionModeToString( QPainter::CompositionMode mode );
|
||||||
|
|
||||||
friend class TestQgsLayoutGeoPdfExport;
|
friend class TestQgsLayoutGeoPdfExport;
|
||||||
friend class TestQgsGeoPdfExport;
|
friend class TestQgsGeoPdfExport;
|
||||||
};
|
};
|
||||||
|
@ -61,6 +61,7 @@ class TestQgsGeoPdfExport : public QObject
|
|||||||
void testGeorefPolygon();
|
void testGeorefPolygon();
|
||||||
void testGroups();
|
void testGroups();
|
||||||
void testCustomGroups();
|
void testCustomGroups();
|
||||||
|
void compositionMode();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -587,5 +588,36 @@ void TestQgsGeoPdfExport::testCustomGroups()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestQgsGeoPdfExport::compositionMode()
|
||||||
|
{
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_SourceOver ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Multiply ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Screen ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Overlay ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Darken ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Lighten ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_ColorDodge ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_ColorBurn ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_HardLight ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_SoftLight ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Difference ) );
|
||||||
|
QVERIFY( QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Exclusion ) );
|
||||||
|
QVERIFY( !QgsAbstractGeoPdfExporter::compositionModeSupported( QPainter::CompositionMode_Plus ) );
|
||||||
|
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_SourceOver ), QStringLiteral( "Normal" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Multiply ), QStringLiteral( "Multiply" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Screen ), QStringLiteral( "Screen" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Overlay ), QStringLiteral( "Overlay" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Darken ), QStringLiteral( "Darken" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Lighten ), QStringLiteral( "Lighten" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_ColorDodge ), QStringLiteral( "ColorDodge" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_ColorBurn ), QStringLiteral( "ColorBurn" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_HardLight ), QStringLiteral( "HardLight" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_SoftLight ), QStringLiteral( "SoftLight" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Difference ), QStringLiteral( "Difference" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Exclusion ), QStringLiteral( "Exclusion" ) );
|
||||||
|
QCOMPARE( QgsAbstractGeoPdfExporter::compositionModeToString( QPainter::CompositionMode_Plus ), QStringLiteral( "Normal" ) );
|
||||||
|
}
|
||||||
|
|
||||||
QGSTEST_MAIN( TestQgsGeoPdfExport )
|
QGSTEST_MAIN( TestQgsGeoPdfExport )
|
||||||
#include "testqgsgeopdfexport.moc"
|
#include "testqgsgeopdfexport.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user