Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgslegendsymbolitem.cpp 3 : : -------------------------------------- 4 : : Date : August 2014 5 : : Copyright : (C) 2014 by Martin Dobias 6 : : Email : wonder dot sk at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #include "qgslegendsymbolitem.h" 17 : : 18 : : #include "qgsdatadefinedsizelegend.h" 19 : : #include "qgssymbol.h" 20 : : 21 : 0 : QgsLegendSymbolItem::QgsLegendSymbolItem( QgsSymbol *symbol, const QString &label, const QString &ruleKey, bool checkable, int scaleMinDenom, int scaleMaxDenom, int level, const QString &parentRuleKey ) 22 : 0 : : mSymbol( symbol ? symbol->clone() : nullptr ) 23 : 0 : , mLabel( label ) 24 : 0 : , mKey( ruleKey ) 25 : 0 : , mCheckable( checkable ) 26 : 0 : , mOriginalSymbolPointer( symbol ) 27 : 0 : , mScaleMinDenom( scaleMinDenom ) 28 : 0 : , mScaleMaxDenom( scaleMaxDenom ) 29 : 0 : , mLevel( level ) 30 : 0 : , mParentKey( parentRuleKey ) 31 : : { 32 : 0 : } 33 : : 34 : 0 : QgsLegendSymbolItem::QgsLegendSymbolItem( const QgsLegendSymbolItem &other ) 35 : : { 36 : 0 : *this = other; 37 : 0 : } 38 : : 39 : 0 : QgsLegendSymbolItem::~QgsLegendSymbolItem() 40 : : { 41 : 0 : delete mSymbol; 42 : 0 : delete mDataDefinedSizeLegendSettings; 43 : 0 : } 44 : : 45 : 0 : QgsLegendSymbolItem &QgsLegendSymbolItem::operator=( const QgsLegendSymbolItem &other ) 46 : : { 47 : 0 : if ( this == &other ) 48 : 0 : return *this; 49 : : 50 : 0 : delete mSymbol; 51 : 0 : mSymbol = other.mSymbol ? other.mSymbol->clone() : nullptr; 52 : 0 : mLabel = other.mLabel; 53 : 0 : mKey = other.mKey; 54 : 0 : mCheckable = other.mCheckable; 55 : 0 : delete mDataDefinedSizeLegendSettings; 56 : 0 : mDataDefinedSizeLegendSettings = other.mDataDefinedSizeLegendSettings ? new QgsDataDefinedSizeLegend( *other.mDataDefinedSizeLegendSettings ) : nullptr; 57 : 0 : mOriginalSymbolPointer = other.mOriginalSymbolPointer; 58 : 0 : mScaleMinDenom = other.mScaleMinDenom; 59 : 0 : mScaleMaxDenom = other.mScaleMaxDenom; 60 : 0 : mLevel = other.mLevel; 61 : 0 : mParentKey = other.mParentKey; 62 : : 63 : 0 : return *this; 64 : 0 : } 65 : : 66 : 0 : bool QgsLegendSymbolItem::isScaleOK( double scale ) const 67 : : { 68 : 0 : if ( scale <= 0 ) 69 : 0 : return true; 70 : 0 : if ( mScaleMinDenom <= 0 && mScaleMaxDenom <= 0 ) 71 : 0 : return true; 72 : 0 : if ( mScaleMinDenom > 0 && mScaleMinDenom > scale ) 73 : 0 : return false; 74 : 0 : if ( mScaleMaxDenom > 0 && mScaleMaxDenom < scale ) 75 : 0 : return false; 76 : 0 : return true; 77 : 0 : } 78 : : 79 : 0 : void QgsLegendSymbolItem::setSymbol( QgsSymbol *s ) 80 : : { 81 : 0 : delete mSymbol; 82 : 0 : mSymbol = s ? s->clone() : nullptr; 83 : 0 : mOriginalSymbolPointer = s; 84 : 0 : } 85 : : 86 : 0 : void QgsLegendSymbolItem::setDataDefinedSizeLegendSettings( QgsDataDefinedSizeLegend *settings ) 87 : : { 88 : 0 : delete mDataDefinedSizeLegendSettings; 89 : 0 : mDataDefinedSizeLegendSettings = settings; 90 : 0 : } 91 : : 92 : 0 : QgsDataDefinedSizeLegend *QgsLegendSymbolItem::dataDefinedSizeLegendSettings() const 93 : : { 94 : 0 : return mDataDefinedSizeLegendSettings; 95 : : }