1 /*************************************************************************** 2 qgslayoutrendercontext.cpp 3 -------------------- 4 begin : July 2017 5 copyright : (C) 2017 by Nyall Dawson 6 email : nyall dot dawson at gmail dot com 7 ***************************************************************************/ 8 /*************************************************************************** 9 * * 10 * This program is free software; you can redistribute it and/or modify * 11 * it under the terms of the GNU General Public License as published by * 12 * the Free Software Foundation; either version 2 of the License, or * 13 * (at your option) any later version. * 14 * * 15 ***************************************************************************/ 16 17 #include "qgslayoutrendercontext.h" 18 #include "qgslayout.h" 19 QgsLayoutRenderContext(QgsLayout * layout)20QgsLayoutRenderContext::QgsLayoutRenderContext( QgsLayout *layout ) 21 : QObject( layout ) 22 , mFlags( FlagAntialiasing | FlagUseAdvancedEffects ) 23 , mLayout( layout ) 24 { 25 mSimplifyMethod.setSimplifyHints( QgsVectorSimplifyMethod::NoSimplification ); 26 } 27 setFlags(const QgsLayoutRenderContext::Flags flags)28void QgsLayoutRenderContext::setFlags( const QgsLayoutRenderContext::Flags flags ) 29 { 30 if ( flags == mFlags ) 31 return; 32 33 mFlags = flags; 34 emit flagsChanged( mFlags ); 35 } 36 setFlag(const QgsLayoutRenderContext::Flag flag,const bool on)37void QgsLayoutRenderContext::setFlag( const QgsLayoutRenderContext::Flag flag, const bool on ) 38 { 39 Flags newFlags = mFlags; 40 if ( on ) 41 newFlags |= flag; 42 else 43 newFlags &= ~flag; 44 45 if ( newFlags == mFlags ) 46 return; 47 48 mFlags = newFlags; 49 emit flagsChanged( mFlags ); 50 } 51 flags() const52QgsLayoutRenderContext::Flags QgsLayoutRenderContext::flags() const 53 { 54 return mFlags; 55 } 56 testFlag(const QgsLayoutRenderContext::Flag flag) const57bool QgsLayoutRenderContext::testFlag( const QgsLayoutRenderContext::Flag flag ) const 58 { 59 return mFlags.testFlag( flag ); 60 } 61 renderContextFlags() const62QgsRenderContext::Flags QgsLayoutRenderContext::renderContextFlags() const 63 { 64 QgsRenderContext::Flags flags = QgsRenderContext::Flags(); 65 if ( mFlags & FlagAntialiasing ) 66 flags = flags | QgsRenderContext::Antialiasing; 67 if ( mFlags & FlagUseAdvancedEffects ) 68 flags = flags | QgsRenderContext::UseAdvancedEffects; 69 if ( mFlags & FlagLosslessImageRendering ) 70 flags = flags | QgsRenderContext::LosslessImageRendering; 71 72 // TODO - expose as layout context flag? 73 flags |= QgsRenderContext::ForceVectorOutput; 74 return flags; 75 } 76 setDpi(double dpi)77void QgsLayoutRenderContext::setDpi( double dpi ) 78 { 79 if ( qgsDoubleNear( dpi, mMeasurementConverter.dpi() ) ) 80 return; 81 82 mMeasurementConverter.setDpi( dpi ); 83 emit dpiChanged(); 84 } 85 dpi() const86double QgsLayoutRenderContext::dpi() const 87 { 88 return mMeasurementConverter.dpi(); 89 } 90 gridVisible() const91bool QgsLayoutRenderContext::gridVisible() const 92 { 93 return mGridVisible; 94 } 95 setGridVisible(bool visible)96void QgsLayoutRenderContext::setGridVisible( bool visible ) 97 { 98 mGridVisible = visible; 99 } 100 boundingBoxesVisible() const101bool QgsLayoutRenderContext::boundingBoxesVisible() const 102 { 103 return mBoundingBoxesVisible; 104 } 105 setBoundingBoxesVisible(bool visible)106void QgsLayoutRenderContext::setBoundingBoxesVisible( bool visible ) 107 { 108 mBoundingBoxesVisible = visible; 109 } 110 setPagesVisible(bool visible)111void QgsLayoutRenderContext::setPagesVisible( bool visible ) 112 { 113 mPagesVisible = visible; 114 } 115 exportThemes() const116QStringList QgsLayoutRenderContext::exportThemes() const 117 { 118 return mExportThemes; 119 } 120 setExportThemes(const QStringList & exportThemes)121void QgsLayoutRenderContext::setExportThemes( const QStringList &exportThemes ) 122 { 123 mExportThemes = exportThemes; 124 } 125 setPredefinedScales(const QVector<qreal> & scales)126void QgsLayoutRenderContext::setPredefinedScales( const QVector<qreal> &scales ) 127 { 128 if ( scales == mPredefinedScales ) 129 return; 130 131 mPredefinedScales = scales; 132 // make sure the list is sorted 133 std::sort( mPredefinedScales.begin(), mPredefinedScales.end() ); // clazy:exclude=detaching-member 134 emit predefinedScalesChanged(); 135 } 136 featureFilterProvider() const137QgsFeatureFilterProvider *QgsLayoutRenderContext::featureFilterProvider() const 138 { 139 return mFeatureFilterProvider; 140 } 141 setFeatureFilterProvider(QgsFeatureFilterProvider * featureFilterProvider)142void QgsLayoutRenderContext::setFeatureFilterProvider( QgsFeatureFilterProvider *featureFilterProvider ) 143 { 144 mFeatureFilterProvider = featureFilterProvider; 145 } 146