mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-27 00:33:48 -05:00
Moves all the drawing code out of labeling into a new class which just handles rendering text. This allows other parts of the code to utilise all the advanced formatting options that labeling supports, eg rendering text with shadows, buffers and backgrounds.
1128 lines
36 KiB
Plaintext
1128 lines
36 KiB
Plaintext
/** \class QgsTextBufferSettings
|
|
* \ingroup core
|
|
* Container for settings relating to a text buffer.
|
|
* \note QgsTextBufferSettings objects are implicitly shared.
|
|
* \note added in QGIS 3.0
|
|
*/
|
|
|
|
class QgsTextBufferSettings
|
|
{
|
|
%TypeHeaderCode
|
|
#include <qgstextrenderer.h>
|
|
%End
|
|
public:
|
|
|
|
QgsTextBufferSettings();
|
|
|
|
QgsTextBufferSettings( const QgsTextBufferSettings& other );
|
|
|
|
~QgsTextBufferSettings();
|
|
|
|
/** Returns whether the buffer is enabled.
|
|
* @see setEnabled()
|
|
*/
|
|
bool enabled() const;
|
|
|
|
/** Sets whether the text buffer will be drawn.
|
|
* @param enabled set to true to draw buffer
|
|
* @see enabled()
|
|
*/
|
|
void setEnabled( bool enabled );
|
|
|
|
/** Returns the size of the buffer.
|
|
* @see sizeUnit()
|
|
* @see setSize()
|
|
*/
|
|
double size() const;
|
|
|
|
/** Sets the size of the buffer. The size units are specified using setSizeUnit().
|
|
* @param size buffer size
|
|
* @see size()
|
|
* @see setSizeUnit()
|
|
*/
|
|
void setSize( double size );
|
|
|
|
/** Returns the units for the buffer size.
|
|
* @see size()
|
|
* @see setSizeUnit()
|
|
*/
|
|
QgsUnitTypes::RenderUnit sizeUnit() const;
|
|
|
|
/** Sets the units used for the buffer size.
|
|
* @param unit size unit
|
|
* @see setSize()
|
|
* @see sizeUnit()
|
|
*/
|
|
void setSizeUnit( QgsUnitTypes::RenderUnit unit );
|
|
|
|
/** Returns the map unit scale object for the buffer size. This is only used if the
|
|
* buffer size is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setSizeMapUnitScale()
|
|
* @see sizeUnit()
|
|
*/
|
|
QgsMapUnitScale sizeMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the buffer size. This is only used if the
|
|
* buffer size is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for buffer size
|
|
* @see sizeMapUnitScale()
|
|
* @see setSizeUnit()
|
|
*/
|
|
void setSizeMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns the color of the buffer.
|
|
* @see setColor()
|
|
*/
|
|
QColor color() const;
|
|
|
|
/** Sets the color for the buffer.
|
|
* @param color buffer color
|
|
* @see color()
|
|
*/
|
|
void setColor( const QColor& color );
|
|
|
|
/** Returns whether the interior of the buffer will be filled in. If false, only the outline
|
|
* of the text will be drawn as the buffer. The effect of this setting is only visible for
|
|
* semi-transparent text.
|
|
* @see setFillBufferInterior()
|
|
*/
|
|
bool fillBufferInterior() const;
|
|
|
|
/** Sets whether the interior of the buffer will be filled in.
|
|
* @param fill set to false to drawn only the outline of the text as the buffer, or true to also
|
|
* shade the area inside the text. The effect of this setting is only visible for semi-transparent text.
|
|
* @see fillBufferInterior()
|
|
*/
|
|
void setFillBufferInterior( bool fill );
|
|
|
|
/** Returns the buffer opacity. The opacity is a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque).
|
|
* @see setOpacity()
|
|
*/
|
|
double opacity() const;
|
|
|
|
/** Sets the buffer opacity.
|
|
* @param opacity opacity as a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque)
|
|
* @see opacity()
|
|
*/
|
|
void setOpacity( double opacity );
|
|
|
|
/** Returns the buffer join style.
|
|
* @see setJoinStyle
|
|
*/
|
|
Qt::PenJoinStyle joinStyle() const;
|
|
|
|
/** Sets the join style used for drawing the buffer.
|
|
* @param style join style
|
|
* @see joinStyle()
|
|
*/
|
|
void setJoinStyle( Qt::PenJoinStyle style );
|
|
|
|
/** Returns the blending mode used for drawing the buffer.
|
|
* @see setBlendMode()
|
|
*/
|
|
QPainter::CompositionMode blendMode() const;
|
|
|
|
/** Sets the blending mode used for drawing the buffer.
|
|
* @param mode blending mode
|
|
* @see blendMode()
|
|
*/
|
|
void setBlendMode( QPainter::CompositionMode mode );
|
|
|
|
/** Reads settings from a layer's custom properties.
|
|
* @param layer source vector layer
|
|
* @see writeToLayer()
|
|
*/
|
|
void readFromLayer( QgsVectorLayer* layer );
|
|
|
|
/** Writes settings to a layer's custom properties.
|
|
* @param layer target vector layer
|
|
* @see readFromLayer()
|
|
*/
|
|
void writeToLayer( QgsVectorLayer* layer ) const;
|
|
|
|
/** Read settings from a DOM element.
|
|
* @see writeXml()
|
|
*/
|
|
void readXml( const QDomElement& elem );
|
|
|
|
/** Write settings into a DOM element.
|
|
* @see readXml()
|
|
*/
|
|
QDomElement writeXml( QDomDocument& doc ) const;
|
|
|
|
};
|
|
|
|
|
|
/** \class QgsTextBackgroundSettings
|
|
* \ingroup core
|
|
* Container for settings relating to a text background object.
|
|
* \note QgsTextBackgroundSettings objects are implicitly shared.
|
|
* \note added in QGIS 3.0
|
|
*/
|
|
|
|
class QgsTextBackgroundSettings
|
|
{
|
|
%TypeHeaderCode
|
|
#include <qgstextrenderer.h>
|
|
%End
|
|
public:
|
|
|
|
/** Background shape types.
|
|
*/
|
|
enum ShapeType
|
|
{
|
|
ShapeRectangle, /*!< rectangle */
|
|
ShapeSquare, /*!< square */
|
|
ShapeEllipse, /*!< ellipse */
|
|
ShapeCircle, /*!< circle */
|
|
ShapeSVG /*!< SVG file */
|
|
};
|
|
|
|
/** Methods for determining the background shape size.
|
|
*/
|
|
enum SizeType
|
|
{
|
|
SizeBuffer, /*!< shape size is determined by adding a buffer margin around text */
|
|
SizeFixed, /*!< fixed size */
|
|
SizePercent /*!< shape size is determined by percent of text size */
|
|
};
|
|
|
|
/** Methods for determining the rotation of the background shape.
|
|
*/
|
|
enum RotationType
|
|
{
|
|
RotationSync, /*!< shape rotation is synced with text rotation */
|
|
RotationOffset, /*!< shape rotation is offset from text rotation */
|
|
RotationFixed /*!< shape rotation is a fixed angle */
|
|
};
|
|
|
|
QgsTextBackgroundSettings();
|
|
|
|
QgsTextBackgroundSettings( const QgsTextBackgroundSettings& other );
|
|
|
|
~QgsTextBackgroundSettings();
|
|
|
|
/** Returns whether the background is enabled.
|
|
* @see setEnabled()
|
|
*/
|
|
bool enabled() const;
|
|
|
|
/** Sets whether the text background will be drawn.
|
|
* @param enabled set to true to draw background
|
|
* @see enabled()
|
|
*/
|
|
void setEnabled( bool enabled );
|
|
|
|
/** Returns the type of background shape (eg square, ellipse, SVG).
|
|
* @see setType()
|
|
*/
|
|
ShapeType type() const;
|
|
|
|
/** Sets the type of background shape to draw (eg square, ellipse, SVG).
|
|
* @param type shape type
|
|
* @see type()
|
|
*/
|
|
void setType( ShapeType type );
|
|
|
|
/** Returns the path to the background SVG file, if set.
|
|
* @see setSvgFile()
|
|
*/
|
|
QString svgFile() const;
|
|
|
|
/** Sets the path to the background SVG file. This is only used if type() is set to
|
|
* QgsTextBackgroundSettings::ShapeSVG.
|
|
* @param file SVG file path
|
|
* @see svgFile()
|
|
*/
|
|
void setSvgFile( const QString& file );
|
|
|
|
/** Returns the method used to determine the size of the background shape (eg fixed size or buffer
|
|
* around text).
|
|
* @see setSizeType()
|
|
* @see size()
|
|
*/
|
|
SizeType sizeType() const;
|
|
|
|
/** Sets the method used to determine the size of the background shape (eg fixed size or buffer
|
|
* around text).
|
|
* @param type size method
|
|
* @see sizeType()
|
|
* @see setSize()
|
|
*/
|
|
void setSizeType( SizeType type );
|
|
|
|
/** Returns the size of the background shape. The meaning of the size depends on the current sizeType()
|
|
* eg, for size types of QgsTextBackgroundSettings::SizeFixed the size will represent the actual width and
|
|
* height of the shape, for QgsTextBackgroundSettings::SizeBuffer the size will represent the horizontal
|
|
* and vertical margins to add to the text when calculating the size of the shape.
|
|
* @see setSize()
|
|
* @see sizeType()
|
|
*/
|
|
QSizeF size() const;
|
|
|
|
/** Sets the size of the background shape. The meaning of the size depends on the current sizeType()
|
|
* eg, for size types of QgsTextBackgroundSettings::SizeFixed the size will represent the actual width and
|
|
* height of the shape, for QgsTextBackgroundSettings::SizeBuffer the size will represent the horizontal
|
|
* and vertical margins to add to the text when calculating the size of the shape.
|
|
* @param size QSizeF representing horizontal and vertical size components for shape
|
|
* @see size()
|
|
* @see setSizeType()
|
|
*/
|
|
void setSize( const QSizeF& size );
|
|
|
|
/** Returns the units used for the shape's size. This value has no meaning if the sizeType() is set to
|
|
* QgsTextBackgroundSettings::SizePercent.
|
|
* @see setSizeUnit()
|
|
* @see sizeType()
|
|
* @see size()
|
|
*/
|
|
QgsUnitTypes::RenderUnit sizeUnit() const;
|
|
|
|
/** Sets the units used for the shape's size. This value has no meaning if the sizeType() is set to
|
|
* QgsTextBackgroundSettings::SizePercent.
|
|
* @param unit size units
|
|
* @see sizeUnit()
|
|
* @see setSizeType()
|
|
* @see setSize()
|
|
*/
|
|
void setSizeUnit( QgsUnitTypes::RenderUnit unit );
|
|
|
|
/** Returns the map unit scale object for the shape size. This is only used if the
|
|
* sizeUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setSizeMapUnitScale()
|
|
* @see sizeUnit()
|
|
*/
|
|
QgsMapUnitScale sizeMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the shape size. This is only used if the
|
|
* sizeUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for shape size
|
|
* @see sizeMapUnitScale()
|
|
* @see setSizeUnit()
|
|
*/
|
|
void setSizeMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns the method used for rotating the background shape.
|
|
* @see setRotationType()
|
|
* @see rotation()
|
|
*/
|
|
RotationType rotationType() const;
|
|
|
|
/** Sets the method used for rotating the background shape.
|
|
* @param type rotation method
|
|
* @see rotationType()
|
|
* @see setRotation()
|
|
*/
|
|
void setRotationType( RotationType type );
|
|
|
|
/** Returns the rotation for the background shape.
|
|
* @see rotationType()
|
|
* @see setRotation()
|
|
*/
|
|
double rotation() const;
|
|
|
|
/** Sets the rotation for the background shape.
|
|
* @param rotation angle in degrees to rotate
|
|
* @see rotation()
|
|
* @see setRotationType()
|
|
*/
|
|
void setRotation( double rotation );
|
|
|
|
/** Returns the offset used for drawing the background shape. Units are determined
|
|
* via offsetUnit().
|
|
* @see setOffset()
|
|
* @see offsetUnit()
|
|
*/
|
|
QPointF offset() const;
|
|
|
|
/** Sets the offset used for drawing the background shape. Units are specified using
|
|
* setOffsetUnit().
|
|
* @param offset offset for shape
|
|
* @see offset()
|
|
* @see setOffsetUnit()
|
|
*/
|
|
void setOffset( const QPointF& offset );
|
|
|
|
/** Returns the units used for the shape's offset.
|
|
* @see setOffsetUnit()
|
|
* @see offset()
|
|
*/
|
|
QgsUnitTypes::RenderUnit offsetUnit() const;
|
|
|
|
/** Sets the units used for the shape's offset.
|
|
* @param unit offset units
|
|
* @see offsetUnit()
|
|
* @see setOffset()
|
|
*/
|
|
void setOffsetUnit( QgsUnitTypes::RenderUnit units );
|
|
|
|
/** Returns the map unit scale object for the shape offset. This is only used if the
|
|
* offsetUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setOffsetMapUnitScale()
|
|
* @see offsetUnit()
|
|
*/
|
|
QgsMapUnitScale offsetMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the shape offset. This is only used if the
|
|
* offsetUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for shape offset
|
|
* @see offsetMapUnitScale()
|
|
* @see setOffsetUnit()
|
|
*/
|
|
void setOffsetMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns the radii used for rounding the corners of shapes. Units are retrieved
|
|
* through radiiUnit().
|
|
* @see setRadii()
|
|
* @see radiiUnit()
|
|
*/
|
|
QSizeF radii() const;
|
|
|
|
/** Sets the radii used for rounding the corners of shapes. This is only used if
|
|
* type() is set to QgsTextBackgroundSettings::ShapeRectangle or QgsTextBackgroundSettings::ShapeSquare.
|
|
* @param radii QSizeF representing horizontal and vertical radii for rounded corners. Units are
|
|
* specified through setRadiiUnit()
|
|
* @see radii()
|
|
* @see setRadiiUnit()
|
|
*/
|
|
void setRadii( const QSizeF& radii );
|
|
|
|
/** Returns the units used for the shape's radii.
|
|
* @see setRadiiUnit()
|
|
* @see radii()
|
|
*/
|
|
QgsUnitTypes::RenderUnit radiiUnit() const;
|
|
|
|
/** Sets the units used for the shape's radii.
|
|
* @param unit radii units
|
|
* @see radiiUnit()
|
|
* @see setRadii()
|
|
*/
|
|
void setRadiiUnit( QgsUnitTypes::RenderUnit units );
|
|
|
|
/** Returns the map unit scale object for the shape radii. This is only used if the
|
|
* radiiUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setRadiiMapUnitScale()
|
|
* @see radiiUnit()
|
|
*/
|
|
QgsMapUnitScale radiiMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the shape radii. This is only used if the
|
|
* radiiUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for shape radii
|
|
* @see radiiMapUnitScale()
|
|
* @see setRadiiUnit()
|
|
*/
|
|
void setRadiiMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns the background shape's opacity. The opacity is a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque).
|
|
* @see setOpacity()
|
|
*/
|
|
double opacity() const;
|
|
|
|
/** Sets the background shape's opacity.
|
|
* @param opacity opacity as a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque)
|
|
* @see opacity()
|
|
*/
|
|
void setOpacity( double opacity );
|
|
|
|
/** Returns the blending mode used for drawing the background shape.
|
|
* @see setBlendMode()
|
|
*/
|
|
QPainter::CompositionMode blendMode() const;
|
|
|
|
/** Sets the blending mode used for drawing the background shape.
|
|
* @param mode blending mode
|
|
* @see blendMode()
|
|
*/
|
|
void setBlendMode( QPainter::CompositionMode mode );
|
|
|
|
/** Returns the color used for filing the background shape.
|
|
* @see setFillColor()
|
|
* @see borderColor()
|
|
*/
|
|
QColor fillColor() const;
|
|
|
|
/** Sets the color used for filing the background shape.
|
|
* @param color background color
|
|
* @see fillColor()
|
|
* @see setBorderColor()
|
|
*/
|
|
void setFillColor( const QColor& color );
|
|
|
|
/** Returns the color used for outlining the background shape.
|
|
* @see setBorderColor()
|
|
* @see fillColor()
|
|
*/
|
|
QColor borderColor() const;
|
|
|
|
/** Sets the color used for outlining the background shape.
|
|
* @param color outline color
|
|
* @see borderColor()
|
|
* @see setFillColor()
|
|
*/
|
|
void setBorderColor( const QColor& color );
|
|
|
|
/** Returns the width of the shape's border (outline). Units are retrieved through
|
|
* borderWidthUnit().
|
|
* @see setBorderWidth()
|
|
* @see borderWidthUnit()
|
|
*/
|
|
double borderWidth() const;
|
|
|
|
/** Sets the width of the shape's border (outline). Units are specified through
|
|
* setBorderWidthUnit().
|
|
* @see borderWidth()
|
|
* @see setBorderWidthUnit()
|
|
*/
|
|
void setBorderWidth( double width );
|
|
|
|
/** Returns the units used for the shape's border width.
|
|
* @see setBorderWidthUnit()
|
|
* @see borderWidth()
|
|
*/
|
|
QgsUnitTypes::RenderUnit borderWidthUnit() const;
|
|
|
|
/** Sets the units used for the shape's border width.
|
|
* @param unit border width units
|
|
* @see borderWidthUnit()
|
|
* @see setBorderWidth()
|
|
*/
|
|
void setBorderWidthUnit( QgsUnitTypes::RenderUnit units );
|
|
|
|
/** Returns the map unit scale object for the shape border width. This is only used if the
|
|
* borderWidthUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setBorderWidthMapUnitScale()
|
|
* @see borderWidthUnit()
|
|
*/
|
|
QgsMapUnitScale borderWidthMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the shape border width. This is only used if the
|
|
* borderWidthUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for shape border width
|
|
* @see borderWidthMapUnitScale()
|
|
* @see setBorderWidthUnit()
|
|
*/
|
|
void setBorderWidthMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns the join style used for drawing the background shape.
|
|
* @see setJoinStyle
|
|
*/
|
|
Qt::PenJoinStyle joinStyle() const;
|
|
|
|
/** Sets the join style used for drawing the background shape.
|
|
* @param style join style
|
|
* @see joinStyle()
|
|
*/
|
|
void setJoinStyle( Qt::PenJoinStyle style );
|
|
|
|
/** Reads settings from a layer's custom properties.
|
|
* @param layer source vector layer
|
|
* @see writeToLayer()
|
|
*/
|
|
void readFromLayer( QgsVectorLayer* layer );
|
|
|
|
/** Writes settings to a layer's custom properties.
|
|
* @param layer target vector layer
|
|
* @see readFromLayer()
|
|
*/
|
|
void writeToLayer( QgsVectorLayer* layer ) const;
|
|
|
|
/** Read settings from a DOM element.
|
|
* @see writeXml()
|
|
*/
|
|
void readXml( const QDomElement& elem );
|
|
|
|
/** Write settings into a DOM element.
|
|
* @see readXml()
|
|
*/
|
|
QDomElement writeXml( QDomDocument& doc ) const;
|
|
|
|
};
|
|
|
|
|
|
/** \class QgsTextShadowSettings
|
|
* \ingroup core
|
|
* Container for settings relating to a text shadow.
|
|
* \note QgsTextShadowSettings objects are implicitly shared.
|
|
* \note added in QGIS 3.0
|
|
*/
|
|
|
|
class QgsTextShadowSettings
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
#include <qgstextrenderer.h>
|
|
%End
|
|
|
|
public:
|
|
|
|
/** Placement positions for text shadow.
|
|
*/
|
|
enum ShadowPlacement
|
|
{
|
|
ShadowLowest, /*!< draw shadow below all text components */
|
|
ShadowText, /*!< draw shadow under text */
|
|
ShadowBuffer, /*!< draw shadow under buffer */
|
|
ShadowShape /*!< draw shadow under background shape */
|
|
};
|
|
|
|
QgsTextShadowSettings();
|
|
|
|
QgsTextShadowSettings( const QgsTextShadowSettings& other );
|
|
|
|
~QgsTextShadowSettings();
|
|
|
|
/** Returns whether the shadow is enabled.
|
|
* @see setEnabled()
|
|
*/
|
|
bool enabled() const;
|
|
|
|
/** Sets whether the text shadow will be drawn.
|
|
* @param enabled set to true to draw shadow
|
|
* @see enabled()
|
|
*/
|
|
void setEnabled( bool enabled );
|
|
|
|
/** Returns the placement for the drop shadow. The placement determines
|
|
* both the z-order stacking position for the shadow and the what shape (eg text,
|
|
* background shape) is used for casting the shadow.
|
|
* @see setShadowPlacement()
|
|
*/
|
|
QgsTextShadowSettings::ShadowPlacement shadowPlacement() const;
|
|
|
|
/** Sets the placement for the drop shadow. The placement determines
|
|
* both the z-order stacking position for the shadow and the what shape (eg text,
|
|
* background shape) is used for casting the shadow.
|
|
* @param placement shadow placement
|
|
* @see shadowPlacement()
|
|
*/
|
|
void setShadowPlacement( QgsTextShadowSettings::ShadowPlacement placement );
|
|
|
|
/** Returns the angle for offsetting the position of the shadow from the text.
|
|
* @see setOffsetAngle
|
|
* @see offsetDistance()
|
|
*/
|
|
int offsetAngle() const;
|
|
|
|
/** Sets the angle for offseting the position of the shadow from the text.
|
|
* @param angle offset angle in degrees
|
|
* @see offsetAngle()
|
|
* @see setOffsetDistance()
|
|
*/
|
|
void setOffsetAngle( int angle );
|
|
|
|
/** Returns the distance for offsetting the position of the shadow from the text. Offset units
|
|
* are retrieved via offsetUnit().
|
|
* @see setOffsetDistance()
|
|
* @see offsetUnit()
|
|
*/
|
|
double offsetDistance() const;
|
|
|
|
/** Sets the distance for offsetting the position of the shadow from the text. Offset units
|
|
* are specified via setOffsetUnit().
|
|
* @param offset distance
|
|
* @see offsetDistance()
|
|
* @see setOffsetUnit()
|
|
*/
|
|
void setOffsetDistance( double distance );
|
|
|
|
/** Returns the units used for the shadow's offset.
|
|
* @see setOffsetUnit()
|
|
* @see offsetDistance()
|
|
*/
|
|
QgsUnitTypes::RenderUnit offsetUnit();
|
|
|
|
/** Sets the units used for the shadow's offset.
|
|
* @param units shadow distance units
|
|
* @see offsetUnit()
|
|
* @see setOffsetDistance()
|
|
*/
|
|
void setOffsetUnit( QgsUnitTypes::RenderUnit units );
|
|
|
|
/** Returns the map unit scale object for the shadow offset distance. This is only used if the
|
|
* offsetUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setOffsetMapUnitScale()
|
|
* @see offsetUnit()
|
|
*/
|
|
QgsMapUnitScale offsetMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the shadow offset distance. This is only used if the
|
|
* offsetUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for shadow offset
|
|
* @see offsetMapUnitScale()
|
|
* @see setOffsetUnit()
|
|
*/
|
|
void setOffsetMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns true if the global shadow offset will be used.
|
|
* @see setOffsetGlobal()
|
|
*/
|
|
bool offsetGlobal() const;
|
|
|
|
/** Sets whether the global shadow offset should be used.
|
|
* @param global set to true to use global shadow offset.
|
|
*/
|
|
void setOffsetGlobal( bool global );
|
|
|
|
/** Returns the blur radius for the shadow. Radius units are retrieved via blurRadiusUnit().
|
|
* @see setBlurRadius()
|
|
* @see blurRadiusUnit()
|
|
*/
|
|
double blurRadius() const;
|
|
|
|
/** Sets the blur radius for the shadow. Radius units are specified via setBlurRadiusUnit().
|
|
* @param blurRadius blur radius
|
|
* @see blurRadius()
|
|
* @see setBlurRadiusUnit()
|
|
*/
|
|
void setBlurRadius( double blurRadius );
|
|
|
|
/** Returns the units used for the shadow's blur radius.
|
|
* @see setBlurRadiusUnit()
|
|
* @see blurRadius()
|
|
*/
|
|
QgsUnitTypes::RenderUnit blurRadiusUnit() const;
|
|
|
|
/** Sets the units used for the shadow's blur radius.
|
|
* @param units shadow blur radius units
|
|
* @see blurRadiusUnit()
|
|
* @see setBlurRadius()
|
|
*/
|
|
void setBlurRadiusUnit( QgsUnitTypes::RenderUnit units );
|
|
|
|
/** Returns the map unit scale object for the shadow blur radius. This is only used if the
|
|
* blurRadiusUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setBlurRadiusMapUnitScale()
|
|
* @see blurRadiusUnit()
|
|
*/
|
|
QgsMapUnitScale blurRadiusMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the shadow blur radius. This is only used if the
|
|
* blurRadiusUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @param scale scale for shadow blur radius
|
|
* @see blurRadiusMapUnitScale()
|
|
* @see setBlurRadiusUnit()
|
|
*/
|
|
void setBlurRadiusMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns whether only the alpha channel for the shadow will be blurred.
|
|
* @see setBlurAlphaOnly()
|
|
*/
|
|
bool blurAlphaOnly() const;
|
|
|
|
/** Sets whether only the alpha channel for the shadow should be blurred.
|
|
* @param alphaOnly set to true to blur only the alpha channel. If false, all channels (including
|
|
* red, green and blue channel) will be blurred.
|
|
* @see blurAlphaOnly()
|
|
*/
|
|
void setBlurAlphaOnly( bool alphaOnly );
|
|
|
|
/** Returns the shadow's opacity. The opacity is a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque).
|
|
* @see setOpacity()
|
|
*/
|
|
double opacity() const;
|
|
|
|
/** Sets the shadow's opacity.
|
|
* @param opacity opacity as a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque)
|
|
* @see opacity()
|
|
*/
|
|
void setOpacity( double opacity );
|
|
|
|
/** Returns the scaling used for the drop shadow (in percentage of original size).
|
|
* @see setScale()
|
|
*/
|
|
int scale() const;
|
|
|
|
/** Sets the scaling used for the drop shadow (in percentage of original size).
|
|
* @param scale scale percent for drop shadow
|
|
* @see scale()
|
|
*/
|
|
void setScale( int scale );
|
|
|
|
/** Returns the color of the drop shadow.
|
|
* @see setColor()
|
|
*/
|
|
QColor color() const;
|
|
|
|
/** Sets the color for the drop shadow.
|
|
* @param color shadow color
|
|
* @see color()
|
|
*/
|
|
void setColor( const QColor& color );
|
|
|
|
/** Returns the blending mode used for drawing the drop shadow.
|
|
* @see setBlendMode()
|
|
*/
|
|
QPainter::CompositionMode blendMode() const;
|
|
|
|
/** Sets the blending mode used for drawing the drop shadow.
|
|
* @param mode blending mode
|
|
* @see blendMode()
|
|
*/
|
|
void setBlendMode( QPainter::CompositionMode mode );
|
|
|
|
/** Reads settings from a layer's custom properties.
|
|
* @param layer source vector layer
|
|
* @see writeToLayer()
|
|
*/
|
|
void readFromLayer( QgsVectorLayer* layer );
|
|
|
|
/** Writes settings to a layer's custom properties.
|
|
* @param layer target vector layer
|
|
* @see readFromLayer()
|
|
*/
|
|
void writeToLayer( QgsVectorLayer* layer ) const;
|
|
|
|
/** Read settings from a DOM element.
|
|
* @see writeXml()
|
|
*/
|
|
void readXml( const QDomElement& elem );
|
|
|
|
/** Write settings into a DOM element.
|
|
* @see readXml()
|
|
*/
|
|
QDomElement writeXml( QDomDocument& doc ) const;
|
|
|
|
};
|
|
|
|
/** \class QgsTextFormat
|
|
* \ingroup core
|
|
* Container for all settings relating to text rendering.
|
|
* \note QgsTextFormat objects are implicitly shared.
|
|
* \note added in QGIS 3.0
|
|
*/
|
|
|
|
class QgsTextFormat
|
|
{
|
|
|
|
%TypeHeaderCode
|
|
#include <qgstextrenderer.h>
|
|
%End
|
|
|
|
public:
|
|
|
|
QgsTextFormat();
|
|
|
|
QgsTextFormat( const QgsTextFormat& other );
|
|
|
|
~QgsTextFormat();
|
|
|
|
|
|
/** Returns a reference to the text buffer settings.
|
|
* @see setBuffer()
|
|
*/
|
|
QgsTextBufferSettings& buffer();
|
|
|
|
/** Sets the text's buffer settings.
|
|
* @param bufferSettings buffer settings
|
|
* @see buffer()
|
|
*/
|
|
void setBuffer( const QgsTextBufferSettings& bufferSettings );
|
|
|
|
/** Returns a reference to the text background settings.
|
|
* @see setBackground()
|
|
*/
|
|
QgsTextBackgroundSettings& background();
|
|
|
|
/** Sets the text's background settings.
|
|
* @param backgroundSettings background settings
|
|
* @see background()
|
|
*/
|
|
void setBackground( const QgsTextBackgroundSettings& backgroundSettings );
|
|
|
|
/** Returns a reference to the text drop shadow settings.
|
|
* @see setShadow()
|
|
*/
|
|
QgsTextShadowSettings& shadow();
|
|
|
|
/** Sets the text's drop shadow settings.
|
|
* @param shadowSettings shadow settings
|
|
* @see shadow()
|
|
*/
|
|
void setShadow( const QgsTextShadowSettings& shadowSettings );
|
|
|
|
/** Returns the font used for rendering text. Note that the size of the font
|
|
* is not used, and size() should be called instead to determine the size
|
|
* of rendered text.
|
|
* @see setFont()
|
|
* @see namedStyle()
|
|
*/
|
|
QFont font() const;
|
|
|
|
/** Returns a font with the size scaled to match the format's size settings (including
|
|
* units and map unit scale) for a specified render context.
|
|
* @param context destination render context
|
|
* @returns font with scaled size
|
|
* @see font()
|
|
* @see size()
|
|
*/
|
|
QFont scaledFont( const QgsRenderContext& context ) const;
|
|
|
|
/** Sets the font used for rendering text. Note that the size of the font
|
|
* is not used, and setSize() should be called instead to explicitly set the size
|
|
* of rendered text.
|
|
* @param font desired font
|
|
* @see font()
|
|
* @see setNamedStyle()
|
|
*/
|
|
void setFont( const QFont& font );
|
|
|
|
/** Returns the named style for the font used for rendering text (eg "bold").
|
|
* @see setNamedStyle()
|
|
* @see font()
|
|
*/
|
|
QString namedStyle() const;
|
|
|
|
/** Sets the named style for the font used for rendering text.
|
|
* @param style named style, eg "bold"
|
|
* @see namedStyle()
|
|
* @see setFont()
|
|
*/
|
|
void setNamedStyle( const QString& style );
|
|
|
|
/** Returns the size for rendered text. Units are retrieved using sizeUnit().
|
|
* @see setSize()
|
|
* @see sizeUnit()
|
|
*/
|
|
double size() const;
|
|
|
|
/** Sets the size for rendered text.
|
|
* @param size size of rendered text. Units are set using setSizeUnit()
|
|
* @see size()
|
|
* @see setSizeUnit()
|
|
*/
|
|
void setSize( double size );
|
|
|
|
/** Returns the units for the size of rendered text.
|
|
* @see size()
|
|
* @see setSizeUnit()
|
|
* @see sizeMapUnitScale()
|
|
*/
|
|
QgsUnitTypes::RenderUnit sizeUnit() const;
|
|
|
|
/** Sets the units for the size of rendered text.
|
|
* @param unit size units
|
|
* @see setSize()
|
|
* @see sizeUnit()
|
|
* @see setSizeMapUnitScale()
|
|
*/
|
|
void setSizeUnit( QgsUnitTypes::RenderUnit unit );
|
|
|
|
/** Returns the map unit scale object for the size. This is only used if the
|
|
* sizeUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see setSizeMapUnitScale()
|
|
* @see sizeUnit()
|
|
*/
|
|
QgsMapUnitScale sizeMapUnitScale() const;
|
|
|
|
/** Sets the map unit scale object for the size. This is only used if the
|
|
* sizeUnit() is set to QgsUnitTypes::RenderMapUnit.
|
|
* @see sizeMapUnitScale()
|
|
* @see setSizeUnit()
|
|
*/
|
|
void setSizeMapUnitScale( const QgsMapUnitScale& scale );
|
|
|
|
/** Returns the color that text will be rendered in.
|
|
* @see setColor()
|
|
*/
|
|
QColor color() const;
|
|
|
|
/** Sets the color that text will be rendered in.
|
|
* @param color text color
|
|
* @see color()
|
|
*/
|
|
void setColor( const QColor& color );
|
|
|
|
/** Returns the text's opacity. The opacity is a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque).
|
|
* @see setOpacity()
|
|
*/
|
|
double opacity() const;
|
|
|
|
/** Sets the text's opacity.
|
|
* @param opacity opacity as a double value between 0 (fully transparent) and 1 (totally
|
|
* opaque)
|
|
* @see opacity()
|
|
*/
|
|
void setOpacity( double opacity );
|
|
|
|
/** Returns the blending mode used for drawing the text.
|
|
* @see setBlendMode()
|
|
*/
|
|
QPainter::CompositionMode blendMode() const;
|
|
|
|
/** Sets the blending mode used for drawing the text.
|
|
* @param mode blending mode
|
|
* @see blendMode()
|
|
*/
|
|
void setBlendMode( QPainter::CompositionMode mode );
|
|
|
|
/** Returns the line height for text. This is a number between
|
|
* 0.0 and 10.0 representing the leading between lines as a
|
|
* multiplier of line height.
|
|
* @see setLineHeight()
|
|
*/
|
|
double lineHeight() const;
|
|
|
|
/** Sets the line height for text.
|
|
* @param height a number between
|
|
* 0.0 and 10.0 representing the leading between lines as a
|
|
* multiplier of line height.
|
|
* @see lineHeight()
|
|
*/
|
|
void setLineHeight( double height );
|
|
|
|
/** Reads settings from a layer's custom properties.
|
|
* @param layer source vector layer
|
|
* @see writeToLayer()
|
|
*/
|
|
void readFromLayer( QgsVectorLayer* layer );
|
|
|
|
/** Writes settings to a layer's custom properties.
|
|
* @param layer target vector layer
|
|
* @see readFromLayer()
|
|
*/
|
|
void writeToLayer( QgsVectorLayer* layer ) const;
|
|
|
|
/** Read settings from a DOM element.
|
|
* @see writeXml()
|
|
*/
|
|
void readXml( const QDomElement& elem );
|
|
|
|
/** Write settings into a DOM element.
|
|
* @see readXml()
|
|
*/
|
|
QDomElement writeXml( QDomDocument& doc ) const;
|
|
|
|
/** Returns true if any component of the font format requires advanced effects
|
|
* such as blend modes, which require output in raster formats to be fully respected.
|
|
*/
|
|
bool containsAdvancedEffects() const;
|
|
|
|
/** Returns true if the specified font was found on the system, or false
|
|
* if the font was not found and a replacement was used instead.
|
|
* @see resolvedFontFamily()
|
|
*/
|
|
bool fontFound() const;
|
|
|
|
/** Returns the family for the resolved font, ie if the specified font
|
|
* was not found on the system this will return the name of the replacement
|
|
* font.
|
|
* @see fontFound()
|
|
*/
|
|
QString resolvedFontFamily() const;
|
|
|
|
};
|
|
|
|
|
|
class QgsTextRenderer
|
|
{
|
|
%TypeHeaderCode
|
|
#include <qgstextrenderer.h>
|
|
%End
|
|
|
|
public:
|
|
|
|
enum TextPart
|
|
{
|
|
Text,
|
|
Buffer,
|
|
Background,
|
|
Shadow
|
|
};
|
|
|
|
enum HAlignment
|
|
{
|
|
AlignLeft,
|
|
AlignCenter,
|
|
AlignRight,
|
|
};
|
|
|
|
/** Calculates pixel size (considering output size should be in pixel or map units, scale factors and optionally oversampling)
|
|
* @param size size to convert
|
|
* @param c rendercontext
|
|
* @param unit size units
|
|
* @param rasterfactor whether to consider oversampling
|
|
* @param mapUnitScale a mapUnitScale clamper
|
|
* @return font pixel size
|
|
*/
|
|
static int sizeToPixel( double size, const QgsRenderContext& c, QgsUnitTypes::RenderUnit unit, bool rasterfactor = false, const QgsMapUnitScale& mapUnitScale = QgsMapUnitScale() );
|
|
|
|
/** Calculates size (considering output size should be in pixel or map units, scale factors and optionally oversampling)
|
|
* @param size size to convert
|
|
* @param c rendercontext
|
|
* @param unit size units
|
|
* @param rasterfactor whether to consider oversampling
|
|
* @param mapUnitScale a mapUnitScale clamper
|
|
* @return size that will render, as double
|
|
*/
|
|
static double scaleToPixelContext( double size, const QgsRenderContext& c, QgsUnitTypes::RenderUnit unit, bool rasterfactor = false, const QgsMapUnitScale& mapUnitScale = QgsMapUnitScale() );
|
|
|
|
/** Draws text within a rectangle using the specified settings.
|
|
* @param rect destination rectangle for text
|
|
* @param rotation text rotation
|
|
* @param textLines list of lines of text to draw
|
|
* @param context render context
|
|
* @param format text format
|
|
* @param drawAsOutlines set to false to render text as text. This allows outputs to
|
|
* formats like SVG to maintain text as text objects, but at the cost of degraded
|
|
* rendering and may result in side effects like misaligned text buffers.
|
|
*/
|
|
static void drawText( const QRectF& rect, double rotation, HAlignment alignment, const QStringList& textLines,
|
|
QgsRenderContext& context, const QgsTextFormat& format,
|
|
bool drawAsOutlines = true );
|
|
|
|
/** Draws text at a point origin using the specified settings.
|
|
* @param point origin of text
|
|
* @param rotation text rotation
|
|
* @param textLines list of lines of text to draw
|
|
* @param context render context
|
|
* @param format text format
|
|
* @param drawAsOutlines set to false to render text as text. This allows outputs to
|
|
* formats like SVG to maintain text as text objects, but at the cost of degraded
|
|
* rendering and may result in side effects like misaligned text buffers.
|
|
*/
|
|
static void drawText( const QPointF& point, double rotation, HAlignment alignment, const QStringList& textLines,
|
|
QgsRenderContext& context, const QgsTextFormat& format,
|
|
bool drawAsOutlines = true );
|
|
|
|
/** Draws a single component of rendered text using the specified settings.
|
|
* @param rect destination rectangle for text
|
|
* @param rotation text rotation
|
|
* @param textLines list of lines of text to draw
|
|
* @param context render context
|
|
* @param format text format
|
|
* @param part component of text to draw
|
|
* @param drawAsOutlines set to false to render text as text. This allows outputs to
|
|
* formats like SVG to maintain text as text objects, but at the cost of degraded
|
|
* rendering and may result in side effects like misaligned text buffers.
|
|
*/
|
|
static void drawPart( const QRectF& rect, double rotation, HAlignment alignment, const QStringList& textLines,
|
|
QgsRenderContext& context, const QgsTextFormat& format,
|
|
TextPart part, bool drawAsOutlines = true );
|
|
|
|
/** Draws a single component of rendered text using the specified settings.
|
|
* @param origin origin for start of text. Y coordinate will be used as baseline.
|
|
* @param rotation text rotation
|
|
* @param textLines list of lines of text to draw
|
|
* @param context render context
|
|
* @param format text format
|
|
* @param part component of text to draw. Note that Shadow parts cannot be drawn
|
|
* individually and instead are drawn with their associated part (eg drawn together
|
|
* with the text or background parts)
|
|
* @param drawAsOutlines set to false to render text as text. This allows outputs to
|
|
* formats like SVG to maintain text as text objects, but at the cost of degraded
|
|
* rendering and may result in side effects like misaligned text buffers.
|
|
*/
|
|
static void drawPart( const QPointF& origin, double rotation, HAlignment alignment, const QStringList& textLines,
|
|
QgsRenderContext& context, const QgsTextFormat& format,
|
|
TextPart part, bool drawAsOutlines = true );
|
|
};
|