void QgsSymbolV2SelectorDialog::setMarkerSize( double size ) { QgsMarkerSymbolV2* markerSymbol = static_cast<QgsMarkerSymbolV2*>( mSymbol ); if ( markerSymbol->size() == size ) return; markerSymbol->setSize( size ); updateSymbolPreview(); emit symbolModified(); }
void QgsFeatureRendererV2::convertSymbolSizeScale( QgsSymbolV2 * symbol, QgsSymbolV2::ScaleMethod method, const QString & field ) { if ( symbol->type() == QgsSymbolV2::Marker ) { QgsMarkerSymbolV2 * s = static_cast<QgsMarkerSymbolV2 *>( symbol ); if ( QgsSymbolV2::ScaleArea == QgsSymbolV2::ScaleMethod( method ) ) { const QgsDataDefined dd( "coalesce(sqrt(" + QString::number( s->size() ) + " * (" + field + ")),0)" ); s->setDataDefinedSize( dd ); } else { const QgsDataDefined dd( "coalesce(" + QString::number( s->size() ) + " * (" + field + "),0)" ); s->setDataDefinedSize( dd ); } s->setScaleMethod( QgsSymbolV2::ScaleDiameter ); } else if ( symbol->type() == QgsSymbolV2::Line ) { QgsLineSymbolV2 * s = static_cast<QgsLineSymbolV2 *>( symbol ); const QgsDataDefined dd( "coalesce(" + QString::number( s->width() ) + " * (" + field + "),0)" ); s->setDataDefinedWidth( dd ); } }
void QgsSymbolV2SelectorDialog::updateSymbolInfo() { updateSymbolColor(); if ( mSymbol->type() == QgsSymbolV2::Marker ) { QgsMarkerSymbolV2* markerSymbol = static_cast<QgsMarkerSymbolV2*>( mSymbol ); spinSize->setValue( markerSymbol->size() ); spinAngle->setValue( markerSymbol->angle() ); } else if ( mSymbol->type() == QgsSymbolV2::Line ) { QgsLineSymbolV2* lineSymbol = static_cast<QgsLineSymbolV2*>( mSymbol ); spinWidth->setValue( lineSymbol->width() ); } }
void QgsComposerLegend::drawSymbolV2( QPainter* p, QgsSymbolV2* s, double currentYCoord, double& currentXPosition, double& symbolHeight, int layerOpacity ) const { if ( !p || !s ) { return; } double rasterScaleFactor = 1.0; if ( p ) { QPaintDevice* paintDevice = p->device(); if ( !paintDevice ) { return; } rasterScaleFactor = ( paintDevice->logicalDpiX() + paintDevice->logicalDpiY() ) / 2.0 / 25.4; } //consider relation to composer map for symbol sizes in mm bool sizeInMapUnits = s->outputUnit() == QgsSymbolV2::MapUnit; double mmPerMapUnit = 1; if ( mComposerMap ) { mmPerMapUnit = mComposerMap->mapUnitsToMM(); } QgsMarkerSymbolV2* markerSymbol = dynamic_cast<QgsMarkerSymbolV2*>( s ); //Consider symbol size for point markers double height = mSymbolHeight; double width = mSymbolWidth; double size = 0; //Center small marker symbols double widthOffset = 0; double heightOffset = 0; if ( markerSymbol ) { size = markerSymbol->size(); height = size; width = size; if ( mComposerMap && sizeInMapUnits ) { height *= mmPerMapUnit; width *= mmPerMapUnit; markerSymbol->setSize( width ); } if ( width < mSymbolWidth ) { widthOffset = ( mSymbolWidth - width ) / 2.0; } if ( height < mSymbolHeight ) { heightOffset = ( mSymbolHeight - height ) / 2.0; } } p->save(); p->translate( currentXPosition + widthOffset, currentYCoord + heightOffset ); p->scale( 1.0 / rasterScaleFactor, 1.0 / rasterScaleFactor ); if ( markerSymbol && sizeInMapUnits ) { s->setOutputUnit( QgsSymbolV2::MM ); } s->drawPreviewIcon( p, QSize( width * rasterScaleFactor, height * rasterScaleFactor ) ); if ( markerSymbol && sizeInMapUnits ) { s->setOutputUnit( QgsSymbolV2::MapUnit ); markerSymbol->setSize( size ); } p->restore(); currentXPosition += width; currentXPosition += 2 * widthOffset; symbolHeight = height + 2 * heightOffset; }
void QgsRendererV2Widget::changeSymbolSize() { QList<QgsSymbolV2*> symbolList = selectedSymbols(); if ( symbolList.size() < 1 ) { return; } bool ok; QgsMarkerSymbolV2* marker = dynamic_cast<QgsMarkerSymbolV2*>( symbolList.at( 0 ) ); double size = QInputDialog::getDouble( this, tr( "Size" ), tr( "Change symbol size" ), marker ? marker->size() : 0.0 , 0.0, 999999, 1, &ok ); if ( ok ) { QList<QgsSymbolV2*>::iterator symbolIt = symbolList.begin(); for ( ; symbolIt != symbolList.end(); ++symbolIt ) { marker = dynamic_cast<QgsMarkerSymbolV2*>( *symbolIt ); if ( marker ) marker->setSize( size ); } refreshSymbolView(); } }