26  , mGeometry( geometry )
 
   27  , mPreserveAspectRatio( preserveAspectRatio )
 
   49  return mPreserveAspectRatio;
 
   59  return mScaleToTargetSize;
 
   64  mScaleToTargetSize = scale;
 
   69  const double *srcX = line->
xData();
 
   70  const double *srcY = line->
yData();
 
   72  QPolygonF thisRes( count );
 
   73  QPointF *dest = thisRes.data();
 
   74  for ( 
int i = 0; i < count; ++i )
 
   76    *dest++ = QPointF( *srcX++, *srcY++ );
 
   83  if ( 
const QgsLineString *line = qgsgeometry_cast< const QgsLineString * >( curve ) )
 
   89    const std::unique_ptr< QgsLineString > straightened( curve->
curveToLine() );
 
   97  if ( mScaleToTargetSize )
 
  105    if ( mPreserveAspectRatio && bounds.height() > 0 && bounds.width() > 0 )
 
  107      const double scaling = std::min( size.width() / bounds.width(), size.height() / bounds.height() );
 
  108      const QSizeF scaledSize = bounds.size() * scaling;
 
  109      dx = ( size.width() - scaledSize.width() ) / 2.0;
 
  110      dy = ( size.height() - scaledSize.height() ) / 2.0;
 
  115    const QPolygonF targetRectPoly = QPolygonF() << QPointF( dx, dy + size.height() )
 
  116                                     << QPointF( dx + size.width(), dy + size.height() )
 
  117                                     << QPointF( dx + size.width(), dy )
 
  118                                     << QPointF( dx, dy );
 
  121    if ( bounds.width() > 0 && bounds.height() > 0 )
 
  123      QPolygonF patchRectPoly = QPolygonF( bounds );
 
  125      patchRectPoly.pop_back();
 
  127      QTransform::quadToQuad( patchRectPoly, targetRectPoly, t );
 
  129    else if ( bounds.width() > 0 )
 
  131      t = QTransform::fromScale( size.width() / bounds.width(), 1 ).translate( -bounds.left(), size.height() / 2 - bounds.y() );
 
  133    else if ( bounds.height() > 0 )
 
  135      t = QTransform::fromScale( 1, size.height() / bounds.height() ).translate( size.width() / 2 - bounds.x(), -bounds.top() );
 
  145  if ( 
isNull() || type != mSymbolType )
 
  150  switch ( mSymbolType )
 
  160          points << QPointF( ( *it ).x(), ( *it ).y() );
 
  164        points << QPointF( static_cast< int >( size.width() ) / 2, 
static_cast< int >( size.height() ) / 2 );
 
  166      return QList< QList<QPolygonF> >() << ( QList< QPolygonF >() << points );
 
  171      QList< QList<QPolygonF> > res;
 
  177          res << ( QList< QPolygonF >() << 
curveToPolygonF( qgsgeometry_cast< const QgsCurve * >( *it ) ) );
 
  185      QList< QList<QPolygonF> > res;
 
  190        QList<QPolygonF> thisPart;
 
  191        const QgsCurvePolygon *surface = qgsgeometry_cast< const QgsCurvePolygon * >( *it );
 
  209      return QList< QList<QPolygonF> >();
 
  212  return QList< QList<QPolygonF> >();
 
  218  mPreserveAspectRatio = element.attribute( QStringLiteral( 
"preserveAspect" ) ).toInt();
 
  219  mSymbolType = 
static_cast< Qgis::SymbolType >( element.attribute( QStringLiteral( 
"type" ) ).toInt() );
 
  224  element.setAttribute( QStringLiteral( 
"wkt" ), mGeometry.
isNull() ? QString() : mGeometry.
asWkt( ) );
 
  225  element.setAttribute( QStringLiteral( 
"preserveAspect" ), mPreserveAspectRatio ? QStringLiteral( 
"1" ) : QStringLiteral( 
"0" ) );
 
  226  element.setAttribute( QStringLiteral( 
"type" ), QString::number( 
static_cast< int >( mSymbolType ) ) );
 
Curve polygon geometry type.
 
const QgsCurve * interiorRing(int i) const SIP_HOLDGIL
Retrieves an interior ring from the curve polygon.
 
const QgsCurve * exteriorRing() const SIP_HOLDGIL
Returns the curve polygon's exterior ring.
 
int numInteriorRings() const SIP_HOLDGIL
Returns the number of interior rings contained with the curve polygon.
 
Abstract base class for curved geometry type.
 
virtual QgsLineString * curveToLine(double tolerance=M_PI_2/90, SegmentationToleranceType toleranceType=MaximumAngle) const =0
Returns a new line string geometry corresponding to a segmentized approximation of the curve.
 
A geometry is the spatial representation of a feature.
 
QgsWkbTypes::Type wkbType() const SIP_HOLDGIL
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
 
QgsAbstractGeometry::const_part_iterator const_parts_begin() const
Returns STL-style const iterator pointing to the first part of the geometry.
 
Qgis::GeometryOperationResult transform(const QgsCoordinateTransform &ct, Qgis::TransformDirection direction=Qgis::TransformDirection::Forward, bool transformZ=false) SIP_THROW(QgsCsException)
Transforms this geometry as described by the coordinate transform ct.
 
static QgsGeometry fromWkt(const QString &wkt)
Creates a new geometry from a WKT string.
 
bool isEmpty() const
Returns true if the geometry is empty (eg a linestring with no vertices, or a collection with no geom...
 
QgsAbstractGeometry::const_part_iterator const_parts_end() const
Returns STL-style iterator pointing to the imaginary part after the last part of the geometry.
 
QgsAbstractGeometry::vertex_iterator vertices_begin() const
Returns STL-style iterator pointing to the first vertex of the geometry.
 
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
 
QString asWkt(int precision=17) const
Exports the geometry to WKT.
 
QgsAbstractGeometry::vertex_iterator vertices_end() const
Returns STL-style iterator pointing to the imaginary vertex after the last vertex of the geometry.
 
bool scaleToOutputSize() const
Returns true if the patch shape should by resized to the desired target size when rendering.
 
void setSymbolType(Qgis::SymbolType type)
Sets the symbol type associated with this patch.
 
void readXml(const QDomElement &element, const QgsReadWriteContext &context)
Read settings from a DOM element.
 
QList< QList< QPolygonF > > toQPolygonF(Qgis::SymbolType type, QSizeF size) const
Converts the patch shape to a set of QPolygonF objects representing how the patch should be drawn for...
 
QgsGeometry scaledGeometry(QSizeF size) const
Returns the patch shape's geometry, scaled to the given size.
 
void setGeometry(const QgsGeometry &geometry)
Sets the geometry for the patch shape.
 
bool preserveAspectRatio() const
Returns true if the patch shape should preserve its aspect ratio when it is resized to fit a desired ...
 
bool isNull() const
Returns true if the patch shape is a null QgsLegendPatchShape, which indicates that the default legen...
 
QgsLegendPatchShape()=default
Constructor for a null QgsLegendPatchShape.
 
void setPreserveAspectRatio(bool preserve)
Sets whether the patch shape should preserve its aspect ratio when it is resized to fit a desired leg...
 
void writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) const
Write settings into a DOM element.
 
QgsGeometry geometry() const
Returns the geometry for the patch shape.
 
void setScaleToOutputSize(bool scale)
Sets whether the patch shape should by resized to the desired target size when rendering.
 
Qgis::SymbolType symbolType() const
Returns the symbol type associated with this patch.
 
Line string geometry type, with support for z-dimension and m-values.
 
const double * yData() const
Returns a const pointer to the y vertex data.
 
const double * xData() const
Returns a const pointer to the x vertex data.
 
int numPoints() const override SIP_HOLDGIL
Returns the number of points in the curve.
 
The class is used as a container of context for various read/write operations on other objects.
 
QRectF toRectF() const
Returns a QRectF with same coordinates as the rectangle.
 
static QgsStyle * defaultStyle()
Returns default application-wide style.
 
QList< QList< QPolygonF > > defaultPatchAsQPolygonF(Qgis::SymbolType type, QSizeF size) const
Returns the default patch geometry for the given symbol type and size as a set of QPolygonF objects (...
 
static GeometryType geometryType(Type type) SIP_HOLDGIL
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
 
static Type flatType(Type type) SIP_HOLDGIL
Returns the flat type for a WKB type.
 
QPolygonF lineStringToQPolygonF(const QgsLineString *line)
 
QPolygonF curveToPolygonF(const QgsCurve *curve)