21 #include "qgsdxfexport.h"
82 double mmMapUnitScaleFactor,
83 const QString& layerName,
86 const QPointF& shift )
const
89 Q_UNUSED( mmMapUnitScaleFactor );
90 Q_UNUSED( layerName );
113 return QVector<qreal>();
118 return Qt::SolidLine;
133 it.value()->prepare( *fields );
136 it.value()->setScale( scale );
151 columns.append( ddIt.value()->referencedColumns() );
155 QSet<QString> attributes;
156 QStringList::const_iterator it = columns.constBegin();
157 for ( ; it != columns.constEnd(); ++it )
159 attributes.insert( *it );
172 stringMap.insert( ddIt.key() +
"_expression", ddIt.value()->expression() );
197 mHorizontalAnchorPoint( HCenter ), mVerticalAnchorPoint( VCenter )
225 renderPoint( QPointF( size.width() / 2, size.height() / 2 ), context );
249 offsetX = offset.x();
250 offsetY = offset.y();
268 if ( horizontalAnchorPoint ==
HCenter && verticalAnchorPoint ==
VCenter )
275 if ( horizontalAnchorPoint ==
Left )
277 offsetX += anchorPointCorrectionX;
279 else if ( horizontalAnchorPoint ==
Right )
281 offsetX -= anchorPointCorrectionX;
285 if ( verticalAnchorPoint ==
Top )
287 offsetY += anchorPointCorrectionY;
289 else if ( verticalAnchorPoint ==
Bottom )
291 offsetY -= anchorPointCorrectionY;
298 double c = cos( angle ), s = sin( angle );
299 return QPointF( offset.x() * c - offset.y() * s, offset.x() * s + offset.y() * c );
304 if ( str.compare(
"left", Qt::CaseInsensitive ) == 0 )
308 else if ( str.compare(
"right", Qt::CaseInsensitive ) == 0 )
320 if ( str.compare(
"top", Qt::CaseInsensitive ) == 0 )
324 else if ( str.compare(
"bottom", Qt::CaseInsensitive ) == 0 )
390 points << QPointF( 0, size.height() / 2 + 0.5 ) << QPointF( size.width(), size.height() / 2 + 0.5 );
402 foreach (
const QPolygonF& ring, *rings )
410 return (
width() * e.mapUnitScaleFactor( e.symbologyScaleDenominator(),
widthUnit(), e.mapUnits() ) );
416 QPolygonF poly = QRectF( QPointF( 0, 0 ), QPointF( size.width(), size.height() ) );
432 p->setRenderHint( QPainter::Antialiasing,
false );
433 p->drawRect( points.boundingRect() );
434 p->setRenderHint( QPainter::Antialiasing,
true );
441 p->drawPolygon( points );
447 QPolygonF outerRing = points;
448 path.addPolygon( outerRing );
450 QList<QPolygonF>::const_iterator it = rings->constBegin();
451 for ( ; it != rings->constEnd(); ++it )
453 QPolygonF ring = *it;
454 path.addPolygon( ring );
463 QDomElement symbolizerElem = doc.createElement(
"se:PointSymbolizer" );
464 if ( !props.value(
"uom",
"" ).isEmpty() )
465 symbolizerElem.setAttribute(
"uom", props.value(
"uom",
"" ) );
466 element.appendChild( symbolizerElem );
virtual QSet< QString > usedAttributes() const
void drawPreviewIcon(QgsSymbolV2RenderContext &context, QSize size)
Class for parsing and evaluation of expressions (formerly called "search strings").
VerticalAnchorPoint verticalAnchorPoint() const
virtual void removeDataDefinedProperties()
void setOutputUnit(QgsSymbolV2::OutputUnit unit)
QMap< QString, QgsExpression * > mDataDefinedProperties
float threshold() const
Gets the simplification threshold of the vector layer managed.
QgsMapUnitScale mSizeMapUnitScale
virtual Qt::PenStyle dxfPenStyle() const
QgsSymbolV2::OutputUnit outputUnit() const
virtual double dxfWidth(const QgsDxfExport &e, const QgsSymbolV2RenderContext &context) const
virtual double width() const
QgsSymbolV2::OutputUnit outputUnit() const
HorizontalAnchorPoint horizontalAnchorPoint() const
const QString expression() const
Alias for dump()
void setMapUnitScale(const QgsMapUnitScale &scale)
QVariant evaluate(const QgsFeature *f=NULL)
Evaluate the feature and return the result.
const QgsVectorSimplifyMethod & vectorSimplifyMethod() const
Added in QGIS v2.4.
void startRender(QgsSymbolV2RenderContext &context)
QgsExpression * mVerticalAnchorExpression
virtual void toSld(QDomDocument &doc, QDomElement &element, QgsStringMap props) const
static QPointF decodePoint(QString str)
Container of fields for a vector layer.
virtual void renderPolygon(const QPolygonF &points, QList< QPolygonF > *rings, QgsSymbolV2RenderContext &context)=0
QgsMapUnitScale mWidthMapUnitScale
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
QgsExpression * mOffsetExpression
void setOutputUnit(QgsSymbolV2::OutputUnit unit)
virtual void removeDataDefinedProperty(const QString &property)
QMap< QString, QString > QgsStringMap
static QgsMarkerSymbolLayerV2::HorizontalAnchorPoint decodeHorizontalAnchorPoint(const QString &str)
virtual QString dataDefinedPropertyString(const QString &property) const
virtual void startRender(QgsSymbolV2RenderContext &context)=0
virtual QgsExpression * expression(const QString &property) const
virtual void writeSldMarker(QDomDocument &doc, QDomElement &element, QgsStringMap props) const
const QgsFeature * feature() const
Current feature being rendered - may be null.
virtual void renderPoint(const QPointF &point, QgsSymbolV2RenderContext &context)=0
virtual QVector< qreal > dxfCustomDashPattern(QgsSymbolV2::OutputUnit &unit) const
The geometries can be rendered with 'AntiAliasing' disabled because of it is '1-pixel size'...
QgsMarkerSymbolLayerV2(bool locked=false)
QgsSymbolV2::OutputUnit mWidthUnit
QgsMapUnitScale mapUnitScale() const
virtual QColor color() const
HorizontalAnchorPoint mHorizontalAnchorPoint
virtual void renderPolygonOutline(const QPolygonF &points, QList< QPolygonF > *rings, QgsSymbolV2RenderContext &context)
virtual void prepareExpressions(const QgsFields *fields, double scale=-1.0)
QgsMapUnitScale mapUnitScale() const
virtual QColor dxfColor(const QgsSymbolV2RenderContext &context) const
virtual bool writeDxf(QgsDxfExport &e, double mmMapUnitScaleFactor, const QString &layerName, const QgsSymbolV2RenderContext *context, const QgsFeature *f, const QPointF &shift=QPointF(0.0, 0.0)) const
double ANALYSIS_EXPORT angle(Point3D *p1, Point3D *p2, Point3D *p3, Point3D *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
void drawPreviewIcon(QgsSymbolV2RenderContext &context, QSize size)
virtual void renderPolyline(const QPolygonF &points, QgsSymbolV2RenderContext &context)=0
void drawPreviewIcon(QgsSymbolV2RenderContext &context, QSize size)
QgsFillSymbolLayerV2(bool locked=false)
static void createGeometryElement(QDomDocument &doc, QDomElement &element, QString geomFunc)
static double lineWidthScaleFactor(const QgsRenderContext &c, QgsSymbolV2::OutputUnit u, const QgsMapUnitScale &scale=QgsMapUnitScale())
Returns the line width scale factor depending on the unit and the paint device.
QgsLineSymbolLayerV2(bool locked=false)
QgsExpression * mHorizontalAnchorExpression
virtual const QgsExpression * dataDefinedProperty(const QString &property) const
static QgsMarkerSymbolLayerV2::VerticalAnchorPoint decodeVerticalAnchorPoint(const QString &str)
QgsRenderContext & renderContext()
SimplifyHints simplifyHints() const
Gets the simplification hints of the vector layer managed.
QgsSymbolV2::OutputUnit mOffsetUnit
VerticalAnchorPoint mVerticalAnchorPoint
QgsSymbolV2::OutputUnit mSizeUnit
QgsMapUnitScale mOffsetMapUnitScale
void markerOffset(const QgsSymbolV2RenderContext &context, double &offsetX, double &offsetY) const
void _renderPolygon(QPainter *p, const QPolygonF &points, const QList< QPolygonF > *rings, QgsSymbolV2RenderContext &context)
Default method to render polygon.
virtual double dxfWidth(const QgsDxfExport &e, const QgsSymbolV2RenderContext &context) const
void saveDataDefinedProperties(QgsStringMap &stringMap) const
Saves data defined properties to string map.
virtual void stopRender(QgsSymbolV2RenderContext &context)=0
static bool canbeGeneralizedByDeviceBoundingBox(const QgsRectangle &envelope, float mapToPixelTol=1.0f)
Returns whether the device-envelope can be replaced by its BBOX when is applied the specified toleran...
QgsSymbolV2::OutputUnit widthUnit() const
void copyDataDefinedProperties(QgsSymbolLayerV2 *destLayer) const
Copies data defined properties of this layer to another symbol layer.
void setMapUnitScale(const QgsMapUnitScale &scale)
virtual void setDataDefinedProperty(const QString &property, const QString &expressionString)
static QPointF _rotatedOffset(const QPointF &offset, double angle)