[QGIS Commit] r13421 - trunk/qgis/src/core/symbology-ng
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue May 4 05:08:57 EDT 2010
Author: wonder
Date: 2010-05-04 05:08:56 -0400 (Tue, 04 May 2010)
New Revision: 13421
Modified:
trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.cpp
trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.h
trunk/qgis/src/core/symbology-ng/qgssymbollayerv2.h
Log:
MarkerLine symbol layer: fixed usage with map units, set minimal interval to avoid infinite loop, simpler markerline symbol handling.
Developed for Faunalia (http://www.faunalia.it) with funding from Regione Toscana - Sistema Informativo per la Gestione del Territorio e dell' Ambiente [RT-SIGTA]".
For the project: "Sviluppo di prodotti software GIS open-source basati sui prodotti QuantumGIS e Postgis (CIG 037728516E)"
Modified: trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.cpp
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.cpp 2010-05-04 09:04:36 UTC (rev 13420)
+++ trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.cpp 2010-05-04 09:08:56 UTC (rev 13421)
@@ -246,20 +246,19 @@
void QgsMarkerLineSymbolLayerV2::startRender( QgsSymbolV2RenderContext& context )
{
+ mMarker->setAlpha( context.alpha() );
+ mMarker->setOutputUnit( context.outputUnit() );
+
// if being rotated, it gets initialized with every line segment
- if ( !mRotateMarker )
- {
- mMarker->setAlpha( context.alpha() );
- mMarker->startRender( context.renderContext() );
- }
+ if ( mRotateMarker )
+ mMarker->setRenderHints( QgsSymbolV2::DataDefinedRotation );
+
+ mMarker->startRender( context.renderContext() );
}
void QgsMarkerLineSymbolLayerV2::stopRender( QgsSymbolV2RenderContext& context )
{
- if ( !mRotateMarker )
- {
- mMarker->stopRender( context.renderContext() );
- }
+ mMarker->stopRender( context.renderContext() );
}
void QgsMarkerLineSymbolLayerV2::renderPolyline( const QPolygonF& points, QgsSymbolV2RenderContext& context )
@@ -282,7 +281,7 @@
bool first = true;
double origAngle = mMarker->angle();
- double painterUnitInterval = context.outputLineWidth( mInterval );
+ double painterUnitInterval = context.outputLineWidth( mInterval > 0 ? mInterval : 0.1 );
QgsRenderContext& rc = context.renderContext();
@@ -306,9 +305,7 @@
// rotate marker (if desired)
if ( mRotateMarker )
{
- mMarker->setAlpha( context.alpha() );
mMarker->setAngle( origAngle + ( l.angle() * 180 / M_PI ) );
- mMarker->startRender( rc );
}
// draw first marker
@@ -329,9 +326,6 @@
}
lastPt = pt;
-
- if ( mRotateMarker )
- mMarker->stopRender( rc );
}
// restore original rotation
@@ -375,6 +369,16 @@
return x;
}
+void QgsMarkerLineSymbolLayerV2::setWidth( double width )
+{
+ mMarker->setSize( width );
+}
+
+double QgsMarkerLineSymbolLayerV2::width() const
+{
+ return mMarker->size();
+}
+
/////////////
QgsLineDecorationSymbolLayerV2::QgsLineDecorationSymbolLayerV2( QColor color )
Modified: trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.h
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.h 2010-05-04 09:04:36 UTC (rev 13420)
+++ trunk/qgis/src/core/symbology-ng/qgslinesymbollayerv2.h 2010-05-04 09:08:56 UTC (rev 13421)
@@ -108,6 +108,9 @@
QgsSymbolV2* subSymbol();
bool setSubSymbol( QgsSymbolV2* symbol );
+ virtual void setWidth( double width );
+ virtual double width() const;
+
// new stuff
bool rotateMarker() const { return mRotateMarker; }
Modified: trunk/qgis/src/core/symbology-ng/qgssymbollayerv2.h
===================================================================
--- trunk/qgis/src/core/symbology-ng/qgssymbollayerv2.h 2010-05-04 09:04:36 UTC (rev 13420)
+++ trunk/qgis/src/core/symbology-ng/qgssymbollayerv2.h 2010-05-04 09:08:56 UTC (rev 13421)
@@ -99,8 +99,8 @@
public:
virtual void renderPolyline( const QPolygonF& points, QgsSymbolV2RenderContext& context ) = 0;
- void setWidth( double width ) { mWidth = width; }
- double width() const { return mWidth; }
+ virtual void setWidth( double width ) { mWidth = width; }
+ virtual double width() const { return mWidth; }
void drawPreviewIcon( QgsSymbolV2RenderContext& context, QSize size );
More information about the QGIS-commit
mailing list