36    mLineSymbol->setOutputUnit( unit );
 
 
   51  mDistanceMapUnitScale = 
scale;
 
 
   58    return mDistanceMapUnitScale;
 
 
   66  if ( 
properties.contains( QStringLiteral( 
"x_attribute" ) ) )
 
   70  if ( 
properties.contains( QStringLiteral( 
"y_attribute" ) ) )
 
   74  if ( 
properties.contains( QStringLiteral( 
"distance_unit" ) ) )
 
   78  if ( 
properties.contains( QStringLiteral( 
"distance_map_unit_scale" ) ) )
 
   82  if ( 
properties.contains( QStringLiteral( 
"scale" ) ) )
 
   86  if ( 
properties.contains( QStringLiteral( 
"vector_field_type" ) ) )
 
   90  if ( 
properties.contains( QStringLiteral( 
"angle_orientation" ) ) )
 
   94  if ( 
properties.contains( QStringLiteral( 
"angle_units" ) ) )
 
   98  if ( 
properties.contains( QStringLiteral( 
"size" ) ) )
 
  102  if ( 
properties.contains( QStringLiteral( 
"size_unit" ) ) )
 
  106  if ( 
properties.contains( QStringLiteral( 
"size_map_unit_scale" ) ) )
 
  110  if ( 
properties.contains( QStringLiteral( 
"offset" ) ) )
 
  114  if ( 
properties.contains( QStringLiteral( 
"offset_unit" ) ) )
 
  118  if ( 
properties.contains( QStringLiteral( 
"offset_map_unit_scale" ) ) )
 
 
  137  return mLineSymbol.get();
 
 
  156    line << QPointF( 0, 50 );
 
  157    line << QPointF( 100, 50 );
 
  158    mLineSymbol->renderPolyline( line, 
nullptr, context.
renderContext() );
 
  165  double xComponent = 0;
 
  166  double yComponent = 0;
 
  171    xVal = f.
attribute( mXIndex ).toDouble();
 
  176    yVal = f.
attribute( mYIndex ).toDouble();
 
  186  switch ( mVectorFieldType )
 
  190      destPoint = QPointF( point.x() + mScale * ctx.
convertToPainterUnits( xVal, mDistanceUnit, mDistanceMapUnitScale ),
 
  197      convertPolarToCartesian( xVal, yVal, xComponent, yComponent );
 
  198      destPoint = QPointF( point.x() + mScale * ctx.
convertToPainterUnits( xComponent, mDistanceUnit, mDistanceMapUnitScale ),
 
  199                           point.y() - mScale * ctx.
convertToPainterUnits( yComponent, mDistanceUnit, mDistanceMapUnitScale ) );
 
  205      destPoint = QPointF( point.x(), point.y() - ( mScale * ctx.
convertToPainterUnits( yVal, mDistanceUnit, mDistanceMapUnitScale ) ) );
 
  212    const double radians = mapRotation * M_PI / 180.0;
 
  213    destPoint = QPointF( cos( radians ) * ( destPoint.x() - point.x() ) - sin( radians ) * ( destPoint.y() - point.y() ) + point.x(),
 
  214                         sin( radians ) * ( destPoint.x() - point.x() ) + cos( radians ) * ( destPoint.y() - point.y() ) + point.y() );
 
  219  mLineSymbol->renderPolyline( line, &f, context.
renderContext() );
 
 
  265  properties[QStringLiteral( 
"x_attribute" )] = mXAttribute;
 
  266  properties[QStringLiteral( 
"y_attribute" )] = mYAttribute;
 
  269  properties[QStringLiteral( 
"scale" )] = QString::number( mScale );
 
  270  properties[QStringLiteral( 
"vector_field_type" )] = QString::number( mVectorFieldType );
 
  271  properties[QStringLiteral( 
"angle_orientation" )] = QString::number( mAngleOrientation );
 
  272  properties[QStringLiteral( 
"angle_units" )] = QString::number( mAngleUnits );
 
 
  293  toSld( doc, element, context );
 
 
  298  context.
pushError( QObject::tr( 
"Vector field symbol layers cannot be converted to SLD" ) );
 
  299  mLineSymbol->toSld( doc, element, context );
 
 
  320  if ( !mXAttribute.isEmpty() )
 
  322    attributes.insert( mXAttribute );
 
  324  if ( !mYAttribute.isEmpty() )
 
  326    attributes.insert( mYAttribute );
 
  330    attributes.unite( mLineSymbol->usedAttributes( context ) );
 
 
  339  if ( mLineSymbol && mLineSymbol->hasDataDefinedProperties() )
 
 
  344void QgsVectorFieldSymbolLayer::convertPolarToCartesian( 
double length, 
double angle, 
double &x, 
double &y )
 const 
  364  x = length * std::sin( 
angle );
 
  365  y = length * std::cos( 
angle );
 
  371    mLineSymbol->setColor( 
color );
 
 
  378  return mLineSymbol ? mLineSymbol->color() : 
mColor;
 
 
@ IsSymbolLayerSubSymbol
Symbol is being rendered as a sub-symbol of a QgsSymbolLayer.
 
RenderUnit
Rendering size units.
 
@ Unknown
Mixed or unknown units.
 
@ MetersInMapUnits
Meters value as Map units.
 
@ RenderingSubSymbol
Set whenever a sub-symbol of a parent symbol is currently being rendered. Can be used during symbol a...
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
Q_INVOKABLE QVariant attribute(const QString &name) const
Lookup attribute value by attribute name.
 
Container of fields for a vector layer.
 
Q_INVOKABLE int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
 
A line symbol type, for rendering LineString and MultiLineString geometries.
 
Perform transforms between map coordinates and device coordinates.
 
double mapRotation() const
Returns the current map rotation in degrees (clockwise).
 
Struct for storing maximum and minimum scales for measurements in map units.
 
virtual void setSize(double size)
Sets the symbol size.
 
Qgis::RenderUnit mOffsetUnit
Offset units.
 
void setOffsetUnit(Qgis::RenderUnit unit)
Sets the units for the symbol's offset.
 
Qgis::RenderUnit outputUnit() const override
Returns the units to use for sizes and widths within the symbol layer.
 
QPointF mOffset
Marker offset.
 
QgsMapUnitScale mapUnitScale() const override
 
void setOffset(QPointF offset)
Sets the marker's offset, which is the horizontal and vertical displacement which the rendered marker...
 
void setSizeMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the symbol's size.
 
double size() const
Returns the symbol size.
 
QgsMapUnitScale mOffsetMapUnitScale
Offset map unit scale.
 
QgsMapUnitScale mSizeMapUnitScale
Marker size map unit scale.
 
Qgis::RenderUnit mSizeUnit
Marker size unit.
 
void setOutputUnit(Qgis::RenderUnit unit) override
Sets the units to use for sizes and widths within the symbol layer.
 
void setSizeUnit(Qgis::RenderUnit unit)
Sets the units for the symbol's size.
 
void setOffsetMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale for the symbol's offset.
 
double angle() const
Returns the rotation angle for the marker, in degrees clockwise from north.
 
void setMapUnitScale(const QgsMapUnitScale &scale) override
 
Contains information about the context of a rendering operation.
 
double convertToPainterUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
 
QPainter * painter()
Returns the destination QPainter for the render operation.
 
void setFlag(Qgis::RenderContextFlag flag, bool on=true)
Enable or disable a particular flag (other flags are not affected)
 
const QgsMapToPixel & mapToPixel() const
Returns the context's map to pixel transform, which transforms between map coordinates and device coo...
 
Qgis::RenderContextFlags flags() const
Returns combination of flags used for rendering.
 
Holds SLD export options and other information related to SLD export of a QGIS layer style.
 
void setExtraProperties(const QVariantMap &properties)
Sets the open ended set of properties that can drive/inform the SLD encoding.
 
void pushError(const QString &error)
Pushes a error message generated during the conversion.
 
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
 
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
 
static QString encodePoint(QPointF point)
Encodes a QPointF to a string.
 
static QPointF decodePoint(const QString &string)
Decodes a QSizeF from a string.
 
Abstract base class for symbol layers.
 
virtual bool setSubSymbol(QgsSymbol *symbol)
Sets layer's subsymbol. takes ownership of the passed symbol.
 
virtual QSet< QString > usedAttributes(const QgsRenderContext &context) const
Returns the set of attributes referenced by the layer.
 
virtual bool hasDataDefinedProperties() const
Returns true if the symbol layer (or any of its sub-symbols) contains data defined properties.
 
Encapsulates the context in which a symbol is being rendered.
 
const QgsFeature * feature() const
Returns the current feature being rendered.
 
QgsFields fields() const
Fields of the layer.
 
QgsRenderContext & renderContext()
Returns a reference to the context's render context.
 
Abstract base class for all rendered symbols.
 
Qgis::SymbolType type() const
Returns the symbol's type.
 
static Q_INVOKABLE Qgis::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string.
 
static Q_INVOKABLE QString encodeUnit(Qgis::DistanceUnit unit)
Encodes a distance unit to a string.
 
A symbol layer class for displaying displacement arrows based on point layer attributes.
 
QSet< QString > usedAttributes(const QgsRenderContext &context) const override
Returns the set of attributes referenced by the layer.
 
bool setSubSymbol(QgsSymbol *symbol) override
Sets layer's subsymbol. takes ownership of the passed symbol.
 
QColor color() const override
Returns the "representative" color of the symbol layer.
 
QgsSymbol * subSymbol() override
Returns the symbol's sub symbol, if present.
 
void setMapUnitScale(const QgsMapUnitScale &scale) override
 
void setYAttribute(const QString &attribute)
 
void setAngleUnits(AngleUnits units)
 
void setVectorFieldType(VectorFieldType type)
 
void setDistanceUnit(Qgis::RenderUnit unit)
Sets the units for the distance.
 
~QgsVectorFieldSymbolLayer() override
 
bool hasDataDefinedProperties() const override
Returns true if the symbol layer (or any of its sub-symbols) contains data defined properties.
 
void startRender(QgsSymbolRenderContext &context) override
Called before a set of rendering operations commences on the supplied render context.
 
void setAngleOrientation(AngleOrientation orientation)
 
Qgis::RenderUnit outputUnit() const override
Returns the units to use for sizes and widths within the symbol layer.
 
QVariantMap properties() const override
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
 
void stopRender(QgsSymbolRenderContext &context) override
Called after a set of rendering operations has finished on the supplied render context.
 
QgsVectorFieldSymbolLayer * clone() const override
Shall be reimplemented by subclasses to create a deep copy of the instance.
 
QgsVectorFieldSymbolLayer()
 
void setOutputUnit(Qgis::RenderUnit unit) override
Sets the units to use for sizes and widths within the symbol layer.
 
static QgsSymbolLayer * create(const QVariantMap &properties=QVariantMap())
Creates the symbol layer.
 
QgsMapUnitScale mapUnitScale() const override
 
void setXAttribute(const QString &attribute)
 
void setDistanceMapUnitScale(const QgsMapUnitScale &scale)
 
bool usesMapUnits() const override
Returns true if the symbol layer has any components which use map unit based sizes.
 
@ CounterclockwiseFromEast
 
static QgsSymbolLayer * createFromSld(QDomElement &element)
 
void setColor(const QColor &color) override
Sets the "representative" color for the symbol layer.
 
Q_DECL_DEPRECATED void toSld(QDomDocument &doc, QDomElement &element, const QVariantMap &props) const override
Saves the symbol layer as SLD.
 
void renderPoint(QPointF point, QgsSymbolRenderContext &context) override
Renders a marker at the specified point.
 
void drawPreviewIcon(QgsSymbolRenderContext &context, QSize size) override
 
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)