QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
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 ) ) );
Abstract base class for curved geometry type.
QgsGeometry geometry() const
Returns the geometry for the patch shape.
QPolygonF lineStringToQPolygonF(const QgsLineString *line)
void setPreserveAspectRatio(bool preserve)
Sets whether the patch shape should preserve its aspect ratio when it is resized to fit a desired leg...
The class is used as a container of context for various read/write operations on other objects.
QgsAbstractGeometry::const_part_iterator const_parts_end() const
Returns STL-style iterator pointing to the imaginary part after the last 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.
const QgsCurve * exteriorRing() const SIP_HOLDGIL
Returns the curve polygon's exterior ring.
QgsLegendPatchShape()=default
Constructor for a null QgsLegendPatchShape.
static Type flatType(Type type) SIP_HOLDGIL
Returns the flat type for a WKB type.
Curve polygon geometry type.
static QgsGeometry fromWkt(const QString &wkt)
Creates a new geometry from a WKT string.
QRectF toRectF() const
Returns a QRectF with same coordinates as the rectangle.
const double * yData() const
Returns a const pointer to the y vertex data.
QgsAbstractGeometry::const_part_iterator const_parts_begin() const
Returns STL-style const iterator pointing to the first part of the geometry.
QPolygonF curveToPolygonF(const QgsCurve *curve)
void setScaleToOutputSize(bool scale)
Sets whether the patch shape should by resized to the desired target size when rendering.
Line string geometry type, with support for z-dimension and m-values.
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 (...
const double * xData() const
Returns a const pointer to the x vertex data.
static QgsStyle * defaultStyle()
Returns default application-wide style.
int numInteriorRings() const SIP_HOLDGIL
Returns the number of interior rings contained with the curve polygon.
bool preserveAspectRatio() const
Returns true if the patch shape should preserve its aspect ratio when it is resized to fit a desired ...
void setGeometry(const QgsGeometry &geometry)
Sets the geometry for the patch shape.
bool scaleToOutputSize() const
Returns true if the patch shape should by resized to the desired target size when rendering.
QgsGeometry scaledGeometry(QSizeF size) const
Returns the patch shape's geometry, scaled to the given size.
bool isEmpty() const
Returns true if the geometry is empty (eg a linestring with no vertices, or a collection with no geom...
const QgsCurve * interiorRing(int i) const SIP_HOLDGIL
Retrieves an interior ring from the curve polygon.
void setSymbolType(Qgis::SymbolType type)
Sets the symbol type associated with this patch.
QString asWkt(int precision=17) const
Exports the geometry to WKT.
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...
A geometry is the spatial representation of a feature.
Qgis::SymbolType symbolType() const
Returns the symbol type associated with this patch.
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...
QgsRectangle boundingBox() const
Returns the bounding box of the geometry.
QgsAbstractGeometry::vertex_iterator vertices_end() const
Returns STL-style iterator pointing to the imaginary vertex after the last vertex of the geometry.
QgsAbstractGeometry::vertex_iterator vertices_begin() const
Returns STL-style iterator pointing to the first vertex of the geometry.
int numPoints() const override SIP_HOLDGIL
Returns the number of points in the curve.
void writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) const
Write settings into a DOM element.
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.
void readXml(const QDomElement &element, const QgsReadWriteContext &context)
Read settings from a DOM element.
QgsWkbTypes::Type wkbType() const SIP_HOLDGIL
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
bool isNull() const
Returns true if the patch shape is a null QgsLegendPatchShape, which indicates that the default legen...