QSize QgsSymbolV2LegendNode::minimumIconSize() const { QSize minSz( 16, 16 ); if ( mItem.symbol() && mItem.symbol()->type() == QgsSymbolV2::Marker ) { QScopedPointer<QgsRenderContext> context( createTemporaryRenderContext() ); minSz = QgsImageOperation::nonTransparentImageRect( QgsSymbolLayerV2Utils::symbolPreviewPixmap( mItem.symbol(), QSize( 512, 512 ), context.data() ).toImage(), minSz, true ).size(); } else if ( mItem.symbol() && mItem.symbol()->type() == QgsSymbolV2::Line ) { QScopedPointer<QgsRenderContext> context( createTemporaryRenderContext() ); minSz = QgsImageOperation::nonTransparentImageRect( QgsSymbolLayerV2Utils::symbolPreviewPixmap( mItem.symbol(), QSize( minSz.width(), 512 ), context.data() ).toImage(), minSz, true ).size(); } if ( mItem.level() != 0 && !( model() && model()->testFlag( QgsLayerTreeModel::ShowLegendAsTree ) ) ) minSz.setWidth( mItem.level() * indentSize + minSz.width() ); return minSz; }
QSize QgsSymbolLegendNode::minimumIconSize( QgsRenderContext *context ) const { QSize minSz( 16, 16 ); if ( mItem.symbol() && mItem.symbol()->type() == QgsSymbol::Marker ) { minSz = QgsImageOperation::nonTransparentImageRect( QgsSymbolLayerUtils::symbolPreviewPixmap( mItem.symbol(), QSize( 512, 512 ), 0, context ).toImage(), minSz, true ).size(); } else if ( mItem.symbol() && mItem.symbol()->type() == QgsSymbol::Line ) { minSz = QgsImageOperation::nonTransparentImageRect( QgsSymbolLayerUtils::symbolPreviewPixmap( mItem.symbol(), QSize( minSz.width(), 512 ), 0, context ).toImage(), minSz, true ).size(); } if ( mItem.level() != 0 && !( model() && model()->testFlag( QgsLayerTreeModel::ShowLegendAsTree ) ) ) minSz.setWidth( mItem.level() * INDENT_SIZE + minSz.width() ); return minSz; }
QSize QgsSymbolLegendNode::minimumIconSize( QgsRenderContext *context ) const { const int iconSize = QgsLayerTreeModel::scaleIconSize( 16 ); const int largeIconSize = QgsLayerTreeModel::scaleIconSize( 512 ); QSize minSz( iconSize, iconSize ); if ( mItem.symbol() && mItem.symbol()->type() == QgsSymbol::Marker ) { minSz = QgsImageOperation::nonTransparentImageRect( QgsSymbolLayerUtils::symbolPreviewPixmap( mItem.symbol(), QSize( largeIconSize, largeIconSize ), 0, context ).toImage(), minSz, true ).size(); } else if ( mItem.symbol() && mItem.symbol()->type() == QgsSymbol::Line ) { minSz = QgsImageOperation::nonTransparentImageRect( QgsSymbolLayerUtils::symbolPreviewPixmap( mItem.symbol(), QSize( minSz.width(), largeIconSize ), 0, context ).toImage(), minSz, true ).size(); } if ( !mTextOnSymbolLabel.isEmpty() && context ) { double w = QgsTextRenderer::textWidth( *context, mTextOnSymbolTextFormat, QStringList() << mTextOnSymbolLabel ); double h = QgsTextRenderer::textHeight( *context, mTextOnSymbolTextFormat, QStringList() << mTextOnSymbolLabel, QgsTextRenderer::Point ); int wInt = ceil( w ), hInt = ceil( h ); if ( wInt > minSz.width() ) minSz.setWidth( wInt ); if ( hInt > minSz.height() ) minSz.setHeight( hInt ); } if ( mItem.level() != 0 && !( model() && model()->testFlag( QgsLayerTreeModel::ShowLegendAsTree ) ) ) minSz.setWidth( mItem.level() * INDENT_SIZE + minSz.width() ); return minSz; }