mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-16 00:05:45 -04:00
Allows setting a margin around a layer's labels, which prevents other labels from being placed closer than this margin distance to the layer's labels.
733 lines
18 KiB
Plaintext
733 lines
18 KiB
Plaintext
/************************************************************************
|
|
* This file has been generated automatically from *
|
|
* *
|
|
* src/core/labeling/qgspallabeling.h *
|
|
* *
|
|
* Do not edit manually ! Edit header and run scripts/sipify.py again *
|
|
************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class QgsPalLayerSettings
|
|
{
|
|
%Docstring(signature="appended")
|
|
Contains settings for how a map layer will be labeled.
|
|
%End
|
|
|
|
%TypeHeaderCode
|
|
#include "qgspallabeling.h"
|
|
%End
|
|
public:
|
|
QgsPalLayerSettings();
|
|
QgsPalLayerSettings( const QgsPalLayerSettings &s );
|
|
~QgsPalLayerSettings();
|
|
|
|
|
|
enum class Property
|
|
{
|
|
// text style
|
|
Size,
|
|
Bold,
|
|
Italic,
|
|
Underline,
|
|
Color,
|
|
Strikeout,
|
|
Family,
|
|
FontStyle,
|
|
FontSizeUnit,
|
|
FontTransp,
|
|
FontOpacity,
|
|
FontCase,
|
|
FontLetterSpacing,
|
|
FontWordSpacing,
|
|
FontBlendMode,
|
|
FontStretchFactor,
|
|
|
|
// text formatting
|
|
MultiLineWrapChar,
|
|
AutoWrapLength,
|
|
MultiLineHeight,
|
|
MultiLineAlignment,
|
|
TextOrientation,
|
|
TabStopDistance,
|
|
DirSymbDraw,
|
|
DirSymbLeft,
|
|
DirSymbRight,
|
|
DirSymbPlacement,
|
|
DirSymbReverse,
|
|
NumFormat,
|
|
NumDecimals,
|
|
NumPlusSign,
|
|
|
|
// text buffer
|
|
BufferDraw,
|
|
BufferSize,
|
|
BufferUnit,
|
|
BufferColor,
|
|
BufferTransp,
|
|
BufferOpacity,
|
|
BufferJoinStyle,
|
|
BufferBlendMode,
|
|
|
|
// mask buffer
|
|
MaskEnabled,
|
|
MaskBufferSize,
|
|
MaskBufferUnit,
|
|
MaskOpacity,
|
|
MaskJoinStyle,
|
|
|
|
// background
|
|
ShapeDraw,
|
|
ShapeKind,
|
|
ShapeSVGFile,
|
|
ShapeSizeType,
|
|
ShapeSizeX,
|
|
ShapeSizeY,
|
|
ShapeSizeUnits,
|
|
ShapeRotationType,
|
|
ShapeRotation,
|
|
ShapeOffset,
|
|
ShapeOffsetUnits,
|
|
ShapeRadii,
|
|
ShapeRadiiUnits,
|
|
ShapeTransparency,
|
|
ShapeOpacity,
|
|
ShapeBlendMode,
|
|
ShapeFillColor,
|
|
ShapeStrokeColor,
|
|
ShapeStrokeWidth,
|
|
ShapeStrokeWidthUnits,
|
|
ShapeJoinStyle,
|
|
|
|
// drop shadow
|
|
ShadowDraw,
|
|
ShadowUnder,
|
|
ShadowOffsetAngle,
|
|
ShadowOffsetDist,
|
|
ShadowOffsetUnits,
|
|
ShadowRadius,
|
|
ShadowRadiusUnits,
|
|
ShadowTransparency,
|
|
ShadowOpacity,
|
|
ShadowScale,
|
|
ShadowColor,
|
|
ShadowBlendMode,
|
|
|
|
// placement
|
|
CentroidWhole,
|
|
OffsetQuad,
|
|
OffsetXY,
|
|
OffsetUnits,
|
|
LabelDistance,
|
|
MaximumDistance,
|
|
DistanceUnits,
|
|
OffsetRotation,
|
|
CurvedCharAngleInOut,
|
|
// (data defined only)
|
|
PositionX,
|
|
PositionY,
|
|
PositionPoint,
|
|
Hali,
|
|
Vali,
|
|
Rotation,
|
|
LabelRotation,
|
|
RepeatDistance,
|
|
RepeatDistanceUnit,
|
|
Priority,
|
|
PredefinedPositionOrder,
|
|
LinePlacementOptions,
|
|
OverrunDistance,
|
|
LabelAllParts,
|
|
PolygonLabelOutside,
|
|
LineAnchorPercent,
|
|
LineAnchorClipping,
|
|
LineAnchorType,
|
|
LineAnchorTextPoint,
|
|
|
|
// rendering
|
|
ScaleVisibility,
|
|
MinScale,
|
|
MinimumScale,
|
|
MaxScale,
|
|
MaximumScale,
|
|
FontLimitPixel,
|
|
FontMinPixel,
|
|
FontMaxPixel,
|
|
IsObstacle,
|
|
ObstacleFactor,
|
|
ZIndex,
|
|
CalloutDraw,
|
|
|
|
AllowDegradedPlacement,
|
|
OverlapHandling,
|
|
|
|
LabelMarginDistance,
|
|
|
|
// (data defined only)
|
|
Show,
|
|
AlwaysShow
|
|
};
|
|
|
|
bool prepare( QgsRenderContext &context, QSet<QString> &attributeNames /In,Out/, const QgsFields &fields, const QgsMapSettings &mapSettings, const QgsCoordinateReferenceSystem &crs );
|
|
%Docstring
|
|
Prepare for registration of features. The ``context``, ``mapSettings``
|
|
and ``fields`` parameters give more information about the rendering
|
|
environment. If target ``crs`` is not specified, the targetCrs from
|
|
``mapSettings`` will be taken. The parameter ``attributeNames`` should
|
|
be updated to contain all the field names which the labeling requires
|
|
for the rendering.
|
|
|
|
.. versionadded:: 3.8
|
|
%End
|
|
|
|
QSet<QString> referencedFields( const QgsRenderContext &context ) const;
|
|
%Docstring
|
|
Returns all field names referenced by the configuration (e.g. field name
|
|
or expression, data defined properties).
|
|
|
|
.. versionadded:: 3.14
|
|
%End
|
|
|
|
void startRender( QgsRenderContext &context );
|
|
%Docstring
|
|
Prepares the label settings for rendering.
|
|
|
|
This should be called before rendering any labels, and must be followed
|
|
by a call to :py:func:`~QgsPalLayerSettings.stopRender` in order to
|
|
gracefully clean up symbols.
|
|
|
|
.. versionadded:: 3.10
|
|
%End
|
|
|
|
void stopRender( QgsRenderContext &context );
|
|
%Docstring
|
|
Finalises the label settings after use.
|
|
|
|
This must be called after a call to
|
|
:py:func:`~QgsPalLayerSettings.startRender`, in order to gracefully
|
|
clean up symbols.
|
|
|
|
.. versionadded:: 3.10
|
|
%End
|
|
|
|
bool containsAdvancedEffects() const;
|
|
%Docstring
|
|
Returns ``True`` if any component of the label settings requires
|
|
advanced effects such as blend modes, which require output in raster
|
|
formats to be fully respected.
|
|
|
|
.. versionadded:: 3.20
|
|
%End
|
|
|
|
static const QgsPropertiesDefinition &propertyDefinitions();
|
|
%Docstring
|
|
Returns the labeling property definitions.
|
|
%End
|
|
|
|
bool drawLabels;
|
|
|
|
|
|
QString fieldName;
|
|
|
|
bool isExpression;
|
|
|
|
QgsExpression *getLabelExpression();
|
|
%Docstring
|
|
Returns the :py:class:`QgsExpression` for this label settings. May be
|
|
``None`` if isExpression is ``False``.
|
|
%End
|
|
|
|
QColor previewBkgrdColor;
|
|
|
|
QgsStringReplacementCollection substitutions;
|
|
bool useSubstitutions;
|
|
|
|
|
|
QString wrapChar;
|
|
|
|
int autoWrapLength;
|
|
|
|
bool useMaxLineLengthForAutoWrap;
|
|
|
|
Qgis::LabelMultiLineAlignment multilineAlign;
|
|
|
|
bool formatNumbers;
|
|
|
|
int decimals;
|
|
|
|
bool plusSign;
|
|
|
|
|
|
Qgis::LabelPlacement placement;
|
|
|
|
Qgis::LabelPolygonPlacementFlags polygonPlacementFlags() const;
|
|
%Docstring
|
|
Returns the polygon placement flags, which dictate how polygon labels
|
|
can be placed.
|
|
|
|
.. seealso:: :py:func:`setPolygonPlacementFlags`
|
|
|
|
.. versionadded:: 3.14
|
|
%End
|
|
|
|
void setPolygonPlacementFlags( Qgis::LabelPolygonPlacementFlags flags );
|
|
%Docstring
|
|
Sets the polygon placement ``flags``, which dictate how polygon labels
|
|
can be placed.
|
|
|
|
.. seealso:: :py:func:`polygonPlacementFlags`
|
|
|
|
.. versionadded:: 3.14
|
|
%End
|
|
|
|
bool centroidWhole;
|
|
|
|
bool centroidInside;
|
|
|
|
bool fitInPolygonOnly;
|
|
|
|
double dist;
|
|
|
|
Qgis::RenderUnit distUnits;
|
|
|
|
QgsMapUnitScale distMapUnitScale;
|
|
|
|
Qgis::LabelOffsetType offsetType;
|
|
|
|
double repeatDistance;
|
|
|
|
Qgis::RenderUnit repeatDistanceUnit;
|
|
|
|
QgsMapUnitScale repeatDistanceMapUnitScale;
|
|
|
|
double xOffset;
|
|
|
|
double yOffset;
|
|
|
|
Qgis::RenderUnit offsetUnits;
|
|
|
|
QgsMapUnitScale labelOffsetMapUnitScale;
|
|
|
|
double angleOffset;
|
|
|
|
bool preserveRotation;
|
|
|
|
Qgis::AngleUnit rotationUnit() const;
|
|
%Docstring
|
|
Unit for rotation of labels.
|
|
|
|
.. seealso:: :py:func:`setRotationUnit`
|
|
|
|
.. versionadded:: 3.22
|
|
%End
|
|
|
|
void setRotationUnit( Qgis::AngleUnit angleUnit );
|
|
%Docstring
|
|
Set unit for rotation of labels.
|
|
|
|
.. seealso:: :py:func:`rotationUnit`
|
|
|
|
.. versionadded:: 3.22
|
|
%End
|
|
|
|
double maxCurvedCharAngleIn;
|
|
|
|
double maxCurvedCharAngleOut;
|
|
|
|
int priority;
|
|
|
|
|
|
bool scaleVisibility;
|
|
|
|
double maximumScale;
|
|
|
|
double minimumScale;
|
|
|
|
bool fontLimitPixelSize;
|
|
|
|
int fontMinPixelSize;
|
|
|
|
int fontMaxPixelSize;
|
|
|
|
Qgis::UpsideDownLabelHandling upsidedownLabels;
|
|
|
|
bool labelPerPart;
|
|
|
|
double zIndex;
|
|
|
|
QString geometryGenerator;
|
|
|
|
Qgis::GeometryType geometryGeneratorType;
|
|
|
|
bool geometryGeneratorEnabled;
|
|
|
|
Qgis::GeometryType layerType;
|
|
|
|
void setLegendString( const QString &legendString );
|
|
%Docstring
|
|
setLegendString
|
|
|
|
:param legendString: the string to show in the legend and preview
|
|
%End
|
|
|
|
QString legendString() const;
|
|
%Docstring
|
|
legendString
|
|
|
|
:return: the string to show in the legend and in the preview icon
|
|
%End
|
|
|
|
void calculateLabelSize( const QFontMetricsF *fm, const QString &text, double &labelX, double &labelY, const QgsFeature *f = 0, QgsRenderContext *context = 0, double *rotatedLabelX /Out/ = 0, double *rotatedLabelY /Out/ = 0 ) /Deprecated="Since 3.40. Will be removed from public API in QGIS 4.0."/;
|
|
%Docstring
|
|
Calculates the space required to render the provided ``text`` in map
|
|
units. Results will be written to ``labelX`` and ``labelY``.
|
|
|
|
If the text orientation is set to rotation-based, the spaced taken to
|
|
render vertically oriented text will be written to ``rotatedLabelX`` and
|
|
``rotatedLabelY``.
|
|
|
|
.. warning::
|
|
|
|
This method only returns an approximate label size, and eg will not consider
|
|
HTML formatted text correctly.
|
|
|
|
.. deprecated:: 3.40
|
|
|
|
Will be removed from public API in QGIS 4.0.
|
|
%End
|
|
|
|
void registerFeature( const QgsFeature &f, QgsRenderContext &context );
|
|
%Docstring
|
|
Registers a feature for labeling.
|
|
|
|
:param f: feature to label
|
|
:param context: render context. The :py:class:`QgsExpressionContext`
|
|
contained within the render context must have already
|
|
had the feature and fields sets prior to calling this
|
|
method.
|
|
|
|
.. warning::
|
|
|
|
This method is designed for use by PyQGIS clients only. C++ code should use the
|
|
variant with additional arguments.
|
|
%End
|
|
|
|
|
|
void readXml( const QDomElement &elem, const QgsReadWriteContext &context );
|
|
%Docstring
|
|
Read settings from a DOM element
|
|
%End
|
|
|
|
QDomElement writeXml( QDomDocument &doc, const QgsReadWriteContext &context ) const;
|
|
%Docstring
|
|
Write settings into a DOM element
|
|
%End
|
|
|
|
QgsPropertyCollection &dataDefinedProperties();
|
|
%Docstring
|
|
Returns a reference to the label's property collection, used for data
|
|
defined overrides.
|
|
|
|
.. seealso:: :py:func:`setDataDefinedProperties`
|
|
%End
|
|
|
|
|
|
void setDataDefinedProperties( const QgsPropertyCollection &collection );
|
|
%Docstring
|
|
Sets the label's property collection, used for data defined overrides.
|
|
|
|
:param collection: property collection. Existing properties will be
|
|
replaced.
|
|
|
|
.. seealso:: :py:func:`dataDefinedProperties`
|
|
|
|
.. seealso:: Property
|
|
%End
|
|
|
|
const QgsTextFormat &format() const;
|
|
%Docstring
|
|
Returns the label text formatting settings, e.g., font settings, buffer
|
|
settings, etc.
|
|
|
|
.. seealso:: :py:func:`setFormat`
|
|
%End
|
|
|
|
void setFormat( const QgsTextFormat &format );
|
|
%Docstring
|
|
Sets the label text formatting settings, e.g., font settings, buffer
|
|
settings, etc.
|
|
|
|
:param format: label text format
|
|
|
|
.. seealso:: :py:func:`format`
|
|
%End
|
|
|
|
QgsCallout *callout() const;
|
|
%Docstring
|
|
Returns the label callout renderer, responsible for drawing label
|
|
callouts.
|
|
|
|
Ownership is not transferred.
|
|
|
|
.. seealso:: :py:func:`setCallout`
|
|
|
|
.. versionadded:: 3.10
|
|
%End
|
|
|
|
void setCallout( QgsCallout *callout /Transfer/ );
|
|
%Docstring
|
|
Sets the label ``callout`` renderer, responsible for drawing label
|
|
callouts.
|
|
|
|
Ownership of ``callout`` is transferred to the settings.
|
|
|
|
.. seealso:: :py:func:`callout`
|
|
|
|
.. versionadded:: 3.10
|
|
%End
|
|
|
|
|
|
QgsLabelLineSettings &lineSettings();
|
|
%Docstring
|
|
Returns the label line settings, which contain settings related to how
|
|
the label engine places and formats labels for line features (or polygon
|
|
features which are labeled in a "perimeter" style mode).
|
|
|
|
.. seealso:: :py:func:`setLineSettings`
|
|
|
|
.. versionadded:: 3.16
|
|
%End
|
|
|
|
void setLineSettings( const QgsLabelLineSettings &settings );
|
|
%Docstring
|
|
Sets the label line ``settings``, which contain settings related to how
|
|
the label engine places and formats labels for line features (or polygon
|
|
features which are labeled in a "perimeter" style mode).
|
|
|
|
.. seealso:: :py:func:`lineSettings`
|
|
|
|
.. versionadded:: 3.16
|
|
%End
|
|
|
|
|
|
QgsLabelPointSettings &pointSettings();
|
|
%Docstring
|
|
Returns the label point settings, which contain settings related to how
|
|
the label engine places and formats labels for point features, or
|
|
polygon features which are labeled in the "around" or "over" centroid
|
|
placement modes.
|
|
|
|
.. seealso:: :py:func:`setPointSettings`
|
|
|
|
.. versionadded:: 3.38
|
|
%End
|
|
|
|
void setPointSettings( const QgsLabelPointSettings &settings );
|
|
%Docstring
|
|
Sets the label point ``settings``, which contain settings related to how
|
|
the label engine places and formats labels for point features, or
|
|
polygon features which are labeled in the "around" or "over" centroid
|
|
placement modes.
|
|
|
|
.. seealso:: :py:func:`pointSettings`
|
|
|
|
.. versionadded:: 3.38
|
|
%End
|
|
|
|
|
|
QgsLabelObstacleSettings &obstacleSettings();
|
|
%Docstring
|
|
Returns the label obstacle settings.
|
|
|
|
.. seealso:: :py:func:`setObstacleSettings`
|
|
|
|
.. versionadded:: 3.10.2
|
|
%End
|
|
|
|
void setObstacleSettings( const QgsLabelObstacleSettings &settings );
|
|
%Docstring
|
|
Sets the label obstacle ``settings``.
|
|
|
|
.. seealso:: :py:func:`obstacleSettings`
|
|
|
|
.. versionadded:: 3.10.2
|
|
%End
|
|
|
|
|
|
QgsLabelThinningSettings &thinningSettings();
|
|
%Docstring
|
|
Returns the label thinning settings.
|
|
|
|
.. seealso:: :py:func:`setThinningSettings`
|
|
|
|
.. versionadded:: 3.12
|
|
%End
|
|
|
|
void setThinningSettings( const QgsLabelThinningSettings &settings );
|
|
%Docstring
|
|
Sets the label thinning ``settings``.
|
|
|
|
.. seealso:: :py:func:`thinningSettings`
|
|
|
|
.. versionadded:: 3.12
|
|
%End
|
|
|
|
|
|
QgsLabelPlacementSettings &placementSettings();
|
|
%Docstring
|
|
Returns the label placement settings.
|
|
|
|
.. seealso:: :py:func:`setPlacementSettings`
|
|
|
|
.. versionadded:: 3.26
|
|
%End
|
|
|
|
void setPlacementSettings( const QgsLabelPlacementSettings &settings );
|
|
%Docstring
|
|
Sets the label placement ``settings``.
|
|
|
|
.. seealso:: :py:func:`placementSettings`
|
|
|
|
.. versionadded:: 3.26
|
|
%End
|
|
|
|
static QPixmap labelSettingsPreviewPixmap( const QgsPalLayerSettings &settings, QSize size, const QString &previewText = QString(), int padding = 0, const QgsScreenProperties &screen = QgsScreenProperties() );
|
|
%Docstring
|
|
Returns a pixmap preview for label ``settings``.
|
|
|
|
:param settings: label settings
|
|
:param size: target pixmap size
|
|
:param previewText: text to render in preview, or empty for default text
|
|
:param padding: space between icon edge and color ramp
|
|
:param screen: can be used to specify the destination screen properties
|
|
for the icon. This allows the icon to be generated using
|
|
the correct DPI and device pixel ratio for the target
|
|
screen (since QGIS 3.32)
|
|
|
|
.. versionadded:: 3.10
|
|
%End
|
|
|
|
Qgis::UnplacedLabelVisibility unplacedVisibility() const;
|
|
%Docstring
|
|
Returns the layer's unplaced label visibility.
|
|
|
|
.. seealso:: :py:func:`setUnplacedVisibility`
|
|
|
|
.. versionadded:: 3.20
|
|
%End
|
|
|
|
void setUnplacedVisibility( Qgis::UnplacedLabelVisibility visibility );
|
|
%Docstring
|
|
Sets the layer's unplaced label ``visibility``.
|
|
|
|
.. seealso:: :py:func:`unplacedVisibility`
|
|
|
|
.. versionadded:: 3.20
|
|
%End
|
|
|
|
const QgsFeature *mCurFeat;
|
|
QgsFields mCurFields;
|
|
int fieldIndex;
|
|
const QgsMapToPixel *xform;
|
|
QgsCoordinateTransform ct;
|
|
|
|
QgsPointXY ptZero;
|
|
QgsPointXY ptOne;
|
|
QgsGeometry extentGeom;
|
|
int mFeaturesToLabel;
|
|
int mFeatsSendingToPal;
|
|
int mFeatsRegPal;
|
|
|
|
};
|
|
|
|
|
|
class QgsPalLabeling
|
|
{
|
|
%Docstring(signature="appended")
|
|
PAL labeling utilities.
|
|
%End
|
|
|
|
%TypeHeaderCode
|
|
#include "qgspallabeling.h"
|
|
%End
|
|
public:
|
|
|
|
static bool staticWillUseLayer( const QgsMapLayer *layer );
|
|
%Docstring
|
|
Called to find out whether a specified ``layer`` is used for labeling.
|
|
%End
|
|
|
|
static QgsGeometry prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry(), bool mergeLines = false ) /Factory/;
|
|
%Docstring
|
|
Prepares a geometry for registration with PAL. Handles reprojection,
|
|
rotation, clipping, etc.
|
|
|
|
:param geometry: geometry to prepare
|
|
:param context: render context
|
|
:param ct: coordinate transform, or invalid transform if no
|
|
transformation required
|
|
:param clipGeometry: geometry to clip features to, if applicable
|
|
:param mergeLines: ``True`` if touching lines from this layer will be
|
|
merged and treated as single features during labeling
|
|
|
|
:return: prepared geometry
|
|
%End
|
|
|
|
static bool geometryRequiresPreparation( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform &ct, const QgsGeometry &clipGeometry = QgsGeometry(), bool mergeLines = false );
|
|
%Docstring
|
|
Checks whether a geometry requires preparation before registration with
|
|
PAL
|
|
|
|
:param geometry: geometry to prepare
|
|
:param context: render context
|
|
:param ct: coordinate transform, or invalid transform if no
|
|
transformation required
|
|
:param clipGeometry: geometry to clip features to, if applicable
|
|
:param mergeLines: ``True`` if touching lines from this layer will be
|
|
merged and treated as single features during labeling
|
|
|
|
:return: ``True`` if geometry requires preparation
|
|
%End
|
|
|
|
static QStringList splitToLines( const QString &text, const QString &wrapCharacter, int autoWrapLength = 0, bool useMaxLineLengthWhenAutoWrapping = true );
|
|
%Docstring
|
|
Splits a ``text`` string to a list of separate lines, using a specified
|
|
wrap character (``wrapCharacter``). The text string will be split on
|
|
either newline characters or the wrap character.
|
|
|
|
Since QGIS 3.4 the ``autoWrapLength`` argument can be used to specify an
|
|
ideal length of line to automatically wrap text to (automatic wrapping
|
|
is disabled if ``autoWrapLength`` is 0). This automatic wrapping is
|
|
performed after processing wrapping using ``wrapCharacter``. When auto
|
|
wrapping is enabled, the ``useMaxLineLengthWhenAutoWrapping`` argument
|
|
controls whether the lines should be wrapped to an ideal maximum of
|
|
``autoWrapLength`` characters, or if ``False`` then the lines are
|
|
wrapped to an ideal minimum length of ``autoWrapLength`` characters.
|
|
%End
|
|
|
|
static QStringList splitToGraphemes( const QString &text );
|
|
%Docstring
|
|
Splits a text string to a list of graphemes, which are the smallest
|
|
allowable character divisions in the string. This accounts for scripts
|
|
were individual characters are not allowed to be split apart (e.g.,
|
|
Arabic and Indic based scripts)
|
|
|
|
:param text: string to split
|
|
|
|
:return: list of graphemes
|
|
%End
|
|
|
|
};
|
|
|
|
|
|
/************************************************************************
|
|
* This file has been generated automatically from *
|
|
* *
|
|
* src/core/labeling/qgspallabeling.h *
|
|
* *
|
|
* Do not edit manually ! Edit header and run scripts/sipify.py again *
|
|
************************************************************************/
|