mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			1034 lines
		
	
	
		
			37 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1034 lines
		
	
	
		
			37 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
// QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*> is implemented as a Python dictionary.
 | 
						|
%MappedType QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*> /DocType="dict-of-QgsPalLayerSettings.DataDefinedProperties-QgsDataDefined*"/
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qmap.h>
 | 
						|
#include <qgspallabeling.h>
 | 
						|
#include <qgsdatadefined.h>
 | 
						|
%End
 | 
						|
%ConvertFromTypeCode
 | 
						|
    // Create the dictionary.
 | 
						|
    PyObject *d = PyDict_New();
 | 
						|
    if (!d)
 | 
						|
        return NULL;
 | 
						|
    // Set the dictionary elements.
 | 
						|
    QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*>::const_iterator i = sipCpp->constBegin();
 | 
						|
    while (i != sipCpp->constEnd())
 | 
						|
    {
 | 
						|
      QgsDataDefined *t = i.value();
 | 
						|
      PyObject *kobj = sipConvertFromEnum(i.key(), sipType_QgsPalLayerSettings_DataDefinedProperties);
 | 
						|
      PyObject *tobj = sipConvertFromType(t, sipType_QgsDataDefined, sipTransferObj);
 | 
						|
      if (kobj == NULL || tobj == NULL || PyDict_SetItem(d, kobj, tobj) < 0)
 | 
						|
      {
 | 
						|
	Py_DECREF(d);
 | 
						|
	if (kobj)
 | 
						|
	{
 | 
						|
	  Py_DECREF(kobj);
 | 
						|
	}
 | 
						|
	if (tobj)
 | 
						|
	{
 | 
						|
	  Py_DECREF(tobj);
 | 
						|
	}
 | 
						|
	else
 | 
						|
	{
 | 
						|
	  delete t;
 | 
						|
	}
 | 
						|
	return NULL;
 | 
						|
      }
 | 
						|
      Py_DECREF(kobj);
 | 
						|
      Py_DECREF(tobj);
 | 
						|
      ++i;
 | 
						|
    }
 | 
						|
    return d;
 | 
						|
%End
 | 
						|
%ConvertToTypeCode
 | 
						|
    PyObject *kobj, *tobj;
 | 
						|
    SIP_SSIZE_T i = 0;
 | 
						|
    // Check the type if that is all that is required.
 | 
						|
    if (sipIsErr == NULL)
 | 
						|
    {
 | 
						|
        if (!PyDict_Check(sipPy))
 | 
						|
            return 0;
 | 
						|
        while (PyDict_Next(sipPy, &i, &kobj, &tobj))
 | 
						|
            if (!sipCanConvertToType(tobj, sipType_QgsDataDefined, SIP_NOT_NONE))
 | 
						|
                return 0;
 | 
						|
        return 1;
 | 
						|
    }
 | 
						|
    QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*> *qm = new QMap<QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined*>;
 | 
						|
 | 
						|
    while (PyDict_Next(sipPy, &i, &kobj, &tobj))
 | 
						|
    {
 | 
						|
        int state, k = SIPLong_AsLong(kobj);
 | 
						|
        QgsDataDefined *t = reinterpret_cast<QgsDataDefined *>(sipConvertToType(tobj, sipType_QgsDataDefined, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
 | 
						|
 | 
						|
        if (*sipIsErr)
 | 
						|
        {
 | 
						|
            sipReleaseType(t, sipType_QgsDataDefined, state);
 | 
						|
            delete qm;
 | 
						|
            return 0;
 | 
						|
        }
 | 
						|
        qm->insert(QgsPalLayerSettings::DataDefinedProperties(k), t);
 | 
						|
        sipReleaseType(t, sipType_QgsDataDefined, state);
 | 
						|
    }
 | 
						|
 | 
						|
    *sipCppPtr = qm;
 | 
						|
 | 
						|
    return sipGetState(sipTransferObj);
 | 
						|
%End
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class QgsLabelPosition
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    QgsLabelPosition( int id, double r, const QVector< QgsPoint >& corners, const QgsRectangle& rect, double w, double h, const QString& layer, const QString& labeltext, const QFont& labelfont, bool upside_down, bool diagram = false, bool pinned = false, const QString& providerId = QString() );
 | 
						|
    QgsLabelPosition();
 | 
						|
    int featureId;
 | 
						|
    double rotation;
 | 
						|
    QVector< QgsPoint > cornerPoints;
 | 
						|
    QgsRectangle labelRect;
 | 
						|
    double width;
 | 
						|
    double height;
 | 
						|
    QString layerID;
 | 
						|
    QString labelText;
 | 
						|
    QFont labelFont;
 | 
						|
    bool upsideDown;
 | 
						|
    bool isDiagram;
 | 
						|
    bool isPinned;
 | 
						|
    //! @note added in 2.14
 | 
						|
    QString providerID;
 | 
						|
};
 | 
						|
 | 
						|
/** Labeling engine interface. */
 | 
						|
class QgsLabelingEngineInterface
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
%End
 | 
						|
 | 
						|
  public:
 | 
						|
 | 
						|
    virtual ~QgsLabelingEngineInterface();
 | 
						|
 | 
						|
    //! called when we're going to start with rendering
 | 
						|
    virtual void init( const QgsMapSettings& mapSettings ) = 0;
 | 
						|
    //! called to find out whether the layer is used for labeling
 | 
						|
    virtual bool willUseLayer( QgsVectorLayer* layer ) = 0;
 | 
						|
    //! clears all PAL layer settings for registered layers
 | 
						|
    virtual void clearActiveLayers() = 0;
 | 
						|
    //! clears data defined objects from PAL layer settings for a registered layer
 | 
						|
    virtual void clearActiveLayer( const QString& layerID ) = 0;
 | 
						|
    //! called when starting rendering of a layer
 | 
						|
    virtual int prepareLayer( QgsVectorLayer* layer, QStringList& attrNames, QgsRenderContext& ctx ) = 0;
 | 
						|
    //! adds a diagram layer to the labeling engine
 | 
						|
    //! @note added in QGIS 2.12
 | 
						|
    virtual int prepareDiagramLayer( QgsVectorLayer *layer, QStringList &attrNames, QgsRenderContext &ctx );
 | 
						|
    //! called for every feature
 | 
						|
    virtual void registerFeature( const QString &layerID, QgsFeature &feat, QgsRenderContext &context ) = 0;
 | 
						|
    //! called for every diagram feature
 | 
						|
    virtual void registerDiagramFeature( const QString &layerID, QgsFeature &feat, QgsRenderContext &context );
 | 
						|
    //! called when the map is drawn and labels should be placed
 | 
						|
    virtual void drawLabeling( QgsRenderContext& context ) = 0;
 | 
						|
    //! called when we're done with rendering
 | 
						|
    virtual void exit() = 0;
 | 
						|
 | 
						|
    //! called when passing engine among map renderers
 | 
						|
    virtual QgsLabelingEngineInterface* clone() = 0 /Factory/;
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
class QgsPalLayerSettings
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
#include <qgsdiagramrenderer.h>
 | 
						|
%End
 | 
						|
  public:
 | 
						|
    QgsPalLayerSettings();
 | 
						|
    QgsPalLayerSettings( const QgsPalLayerSettings& s );
 | 
						|
    ~QgsPalLayerSettings();
 | 
						|
 | 
						|
    //! @note added in 2.4
 | 
						|
    static QgsPalLayerSettings fromLayer( QgsVectorLayer* layer );
 | 
						|
 | 
						|
    /** Placement modes which determine how label candidates are generated for a feature.
 | 
						|
     */
 | 
						|
    //TODO QGIS 3.0 - move to QgsLabelingEngine
 | 
						|
    enum Placement
 | 
						|
    {
 | 
						|
      AroundPoint, /**< Arranges candidates in a circle around a point (or centroid of a polygon). Applies to point or polygon layers only.*/
 | 
						|
      OverPoint, /**  Arranges candidates over a point (or centroid of a polygon), or at a preset offset from the point. Applies to point or polygon layers only.*/
 | 
						|
      Line, /**< Arranges candidates parallel to a generalised line representing the feature or parallel to a polygon's perimeter. Applies to line or polygon layers only. */
 | 
						|
      Curved, /** Arranges candidates following the curvature of a line feature. Applies to line layers only.*/
 | 
						|
      Horizontal, /**< Arranges horizontal candidates scattered throughout a polygon feature. Applies to polygon layers only.*/
 | 
						|
      Free, /**< Arranges candidates scattered throughout a polygon feature. Candidates are rotated to respect the polygon's orientation. Applies to polygon layers only.*/
 | 
						|
      OrderedPositionsAroundPoint, /**< Candidates are placed in predefined positions around a point. Peference is given to positions with greatest cartographic appeal, eg top right, bottom right, etc. Applies to point layers only.*/
 | 
						|
      PerimeterCurved, /** Arranges candidates following the curvature of a polygon's boundary. Applies to polygon layers only.*/
 | 
						|
    };
 | 
						|
 | 
						|
    //! Positions for labels when using the QgsPalLabeling::OrderedPositionsAroundPoint placement mode
 | 
						|
    //TODO QGIS 3.0 - move to QgsLabelingEngine
 | 
						|
    enum PredefinedPointPosition
 | 
						|
    {
 | 
						|
      TopLeft, //!< Label on top-left of point
 | 
						|
      TopSlightlyLeft, //! Label on top of point, slightly left of center
 | 
						|
      TopMiddle, //!< Label directly above point
 | 
						|
      TopSlightlyRight, //! Label on top of point, slightly right of center
 | 
						|
      TopRight, //!< Label on top-right of point
 | 
						|
      MiddleLeft, //!< Label on left of point
 | 
						|
      MiddleRight, //!< Label on right of point
 | 
						|
      BottomLeft, //!< Label on bottom-left of point
 | 
						|
      BottomSlightlyLeft, //! Label below point, slightly left of center
 | 
						|
      BottomMiddle, //!< Label directly below point
 | 
						|
      BottomSlightlyRight, //! Label below point, slightly right of center
 | 
						|
      BottomRight, //!< Label on bottom right of point
 | 
						|
    };
 | 
						|
 | 
						|
    //! Behaviour modifier for label offset and distance, only applies in some
 | 
						|
    //! label placement modes.
 | 
						|
    //TODO QGIS 3.0 - move to QgsLabelingEngine
 | 
						|
    enum OffsetType
 | 
						|
    {
 | 
						|
      FromPoint, //!< Offset distance applies from point geometry
 | 
						|
      FromSymbolBounds, //!< Offset distance applies from rendered symbol bounds
 | 
						|
    };
 | 
						|
 | 
						|
    /** Line placement flags, which control how candidates are generated for a linear feature.
 | 
						|
     */
 | 
						|
    //TODO QGIS 3.0 - move to QgsLabelingEngine, rename to LinePlacementFlag, use Q_DECLARE_FLAGS to make
 | 
						|
    //LinePlacementFlags type, and replace use of pal::LineArrangementFlag
 | 
						|
    enum LinePlacementFlags
 | 
						|
    {
 | 
						|
      OnLine,          /**< Labels can be placed directly over a line feature.*/
 | 
						|
      AboveLine,       /**< Labels can be placed above a line feature. Unless MapOrientation is also specified this mode
 | 
						|
                            respects the direction of the line feature, so a line from right to left labels will have labels
 | 
						|
                            placed placed below the line feature. */
 | 
						|
      BelowLine,       /**< Labels can be placed below a line feature. Unless MapOrientation is also specified this mode
 | 
						|
                            respects the direction of the line feature, so a line from right to left labels will have labels
 | 
						|
                            placed placed above the line feature. */
 | 
						|
      MapOrientation,  /**< Signifies that the AboveLine and BelowLine flags should respect the map's orientation rather
 | 
						|
                            than the feature's orientation. Eg, AboveLine will always result in label's being placed
 | 
						|
                            above a line, regardless of the line's direction. */
 | 
						|
    };
 | 
						|
 | 
						|
    enum QuadrantPosition
 | 
						|
    {
 | 
						|
      QuadrantAboveLeft,
 | 
						|
      QuadrantAbove,
 | 
						|
      QuadrantAboveRight,
 | 
						|
      QuadrantLeft,
 | 
						|
      QuadrantOver,
 | 
						|
      QuadrantRight,
 | 
						|
      QuadrantBelowLeft,
 | 
						|
      QuadrantBelow,
 | 
						|
      QuadrantBelowRight
 | 
						|
    };
 | 
						|
 | 
						|
    enum UpsideDownLabels
 | 
						|
    {
 | 
						|
      Upright, /*!< upside-down labels (90 <= angle < 270) are shown upright */
 | 
						|
      ShowDefined, /*!< show upside down when rotation is layer- or data-defined */
 | 
						|
      ShowAll /*!< show upside down for all labels, including dynamic ones */
 | 
						|
    };
 | 
						|
 | 
						|
    enum DirectionSymbols
 | 
						|
    {
 | 
						|
      SymbolLeftRight, /*!< place direction symbols on left/right of label */
 | 
						|
      SymbolAbove, /*!< place direction symbols on above label */
 | 
						|
      SymbolBelow /*!< place direction symbols on below label */
 | 
						|
    };
 | 
						|
 | 
						|
    enum MultiLineAlign
 | 
						|
    {
 | 
						|
      MultiLeft,
 | 
						|
      MultiCenter,
 | 
						|
      MultiRight,
 | 
						|
      MultiFollowPlacement /*!< Alignment follows placement of label, eg labels to the left of a feature
 | 
						|
                               will be drawn with right alignment*/
 | 
						|
    };
 | 
						|
 | 
						|
    /** Valid obstacle types, which affect how features within the layer will act as obstacles
 | 
						|
     * for labels.
 | 
						|
     */
 | 
						|
    //TODO QGIS 3.0 - Move to QgsLabelingEngine
 | 
						|
    enum ObstacleType
 | 
						|
    {
 | 
						|
      PolygonInterior, /*!< avoid placing labels over interior of polygon (prefer placing labels totally
 | 
						|
       outside or just slightly inside polygon) */
 | 
						|
      PolygonBoundary, /*!< avoid placing labels over boundary of polygon (prefer placing outside or
 | 
						|
       completely inside polygon) */
 | 
						|
      PolygonWhole /*!< avoid placing labels over ANY part of polygon. Where PolygonInterior will prefer
 | 
						|
       to place labels with the smallest area of intersection between the label and the polygon,
 | 
						|
       PolygonWhole will penalise any label which intersects with the polygon by an equal amount, so that
 | 
						|
       placing labels over any part of the polygon is avoided.*/
 | 
						|
    };
 | 
						|
 | 
						|
    enum ShapeType
 | 
						|
    {
 | 
						|
      ShapeRectangle,
 | 
						|
      ShapeSquare,
 | 
						|
      ShapeEllipse,
 | 
						|
      ShapeCircle,
 | 
						|
      ShapeSVG
 | 
						|
    };
 | 
						|
 | 
						|
    enum SizeType
 | 
						|
    {
 | 
						|
      SizeBuffer,
 | 
						|
      SizeFixed,
 | 
						|
      SizePercent
 | 
						|
    };
 | 
						|
 | 
						|
    enum RotationType
 | 
						|
    {
 | 
						|
      RotationSync,
 | 
						|
      RotationOffset,
 | 
						|
      RotationFixed
 | 
						|
    };
 | 
						|
 | 
						|
    /** Units used for option sizes, before being converted to rendered sizes */
 | 
						|
    enum SizeUnit
 | 
						|
    {
 | 
						|
      Points,
 | 
						|
      MM,
 | 
						|
      MapUnits,
 | 
						|
      Percent
 | 
						|
    };
 | 
						|
 | 
						|
    enum ShadowType
 | 
						|
    {
 | 
						|
      ShadowLowest,
 | 
						|
      ShadowText,
 | 
						|
      ShadowBuffer,
 | 
						|
      ShadowShape
 | 
						|
    };
 | 
						|
 | 
						|
    // update mDataDefinedNames QMap in constructor when adding/deleting enum value
 | 
						|
    enum DataDefinedProperties
 | 
						|
    {
 | 
						|
      // text style
 | 
						|
      Size,
 | 
						|
      Bold,
 | 
						|
      Italic,
 | 
						|
      Underline,
 | 
						|
      Color,
 | 
						|
      Strikeout,
 | 
						|
      Family,
 | 
						|
      FontStyle,
 | 
						|
      FontSizeUnit,
 | 
						|
      FontTransp,
 | 
						|
      FontCase,
 | 
						|
      FontLetterSpacing,
 | 
						|
      FontWordSpacing,
 | 
						|
      FontBlendMode,
 | 
						|
 | 
						|
      // text formatting
 | 
						|
      MultiLineWrapChar,
 | 
						|
      MultiLineHeight,
 | 
						|
      MultiLineAlignment,
 | 
						|
      DirSymbDraw,
 | 
						|
      DirSymbLeft,
 | 
						|
      DirSymbRight,
 | 
						|
      DirSymbPlacement,
 | 
						|
      DirSymbReverse,
 | 
						|
      NumFormat,
 | 
						|
      NumDecimals,
 | 
						|
      NumPlusSign,
 | 
						|
 | 
						|
      // text buffer
 | 
						|
      BufferDraw,
 | 
						|
      BufferSize,
 | 
						|
      BufferUnit,
 | 
						|
      BufferColor,
 | 
						|
      BufferTransp,
 | 
						|
      BufferJoinStyle,
 | 
						|
      BufferBlendMode,
 | 
						|
 | 
						|
      // background
 | 
						|
      ShapeDraw,
 | 
						|
      ShapeKind,
 | 
						|
      ShapeSVGFile,
 | 
						|
      ShapeSizeType,
 | 
						|
      ShapeSizeX,
 | 
						|
      ShapeSizeY,
 | 
						|
      ShapeSizeUnits,
 | 
						|
      ShapeRotationType,
 | 
						|
      ShapeRotation,
 | 
						|
      ShapeOffset,
 | 
						|
      ShapeOffsetUnits,
 | 
						|
      ShapeRadii,
 | 
						|
      ShapeRadiiUnits,
 | 
						|
      ShapeTransparency,
 | 
						|
      ShapeBlendMode,
 | 
						|
      ShapeFillColor,
 | 
						|
      ShapeBorderColor,
 | 
						|
      ShapeBorderWidth,
 | 
						|
      ShapeBorderWidthUnits,
 | 
						|
      ShapeJoinStyle,
 | 
						|
 | 
						|
      // drop shadow
 | 
						|
      ShadowDraw,
 | 
						|
      ShadowUnder,
 | 
						|
      ShadowOffsetAngle,
 | 
						|
      ShadowOffsetDist,
 | 
						|
      ShadowOffsetUnits,
 | 
						|
      ShadowRadius,
 | 
						|
      ShadowRadiusUnits,
 | 
						|
      ShadowTransparency,
 | 
						|
      ShadowScale,
 | 
						|
      ShadowColor,
 | 
						|
      ShadowBlendMode,
 | 
						|
 | 
						|
      // placement
 | 
						|
      CentroidWhole,
 | 
						|
      OffsetQuad,
 | 
						|
      OffsetXY,
 | 
						|
      OffsetUnits,
 | 
						|
      LabelDistance,
 | 
						|
      DistanceUnits,
 | 
						|
      OffsetRotation,
 | 
						|
      CurvedCharAngleInOut,
 | 
						|
      // (data defined only)
 | 
						|
      PositionX, //x-coordinate data defined label position
 | 
						|
      PositionY, //y-coordinate data defined label position
 | 
						|
      Hali, //horizontal alignment for data defined label position (Left, Center, Right)
 | 
						|
      Vali, //vertical alignment for data defined label position (Bottom, Base, Half, Cap, Top)
 | 
						|
      Rotation, //data defined rotation
 | 
						|
      RepeatDistance,
 | 
						|
      RepeatDistanceUnit,
 | 
						|
      Priority,
 | 
						|
      PredefinedPositionOrder,
 | 
						|
 | 
						|
      // rendering
 | 
						|
      ScaleVisibility,
 | 
						|
      MinScale,
 | 
						|
      MaxScale,
 | 
						|
      FontLimitPixel,
 | 
						|
      FontMinPixel,
 | 
						|
      FontMaxPixel,
 | 
						|
      IsObstacle,
 | 
						|
      ObstacleFactor,
 | 
						|
      ZIndex,
 | 
						|
 | 
						|
      // (data defined only)
 | 
						|
      Show,
 | 
						|
      AlwaysShow
 | 
						|
    };
 | 
						|
 | 
						|
    // whether to label this layer
 | 
						|
    bool enabled;
 | 
						|
 | 
						|
    /** Whether to draw labels for this layer. For some layers it may be desirable
 | 
						|
     * to register their features as obstacles for other labels without requiring
 | 
						|
     * labels to be drawn for the layer itself. In this case drawLabels can be set
 | 
						|
     * to false and obstacle set to true, which will result in the layer acting
 | 
						|
     * as an obstacle but having no labels of its own.
 | 
						|
     * @note added in QGIS 2.12
 | 
						|
     */
 | 
						|
    bool drawLabels;
 | 
						|
 | 
						|
    //-- text style
 | 
						|
 | 
						|
    QString fieldName;
 | 
						|
 | 
						|
    /** Is this label made from a expression string eg FieldName || 'mm'
 | 
						|
      */
 | 
						|
    bool isExpression;
 | 
						|
 | 
						|
    /** Returns the QgsExpression for this label settings.
 | 
						|
      */
 | 
						|
    QgsExpression* getLabelExpression();
 | 
						|
 | 
						|
    QFont textFont;
 | 
						|
    QString textNamedStyle;
 | 
						|
    bool fontSizeInMapUnits; //true if font size is in map units (otherwise in points)
 | 
						|
    QgsMapUnitScale fontSizeMapUnitScale; // scale range for map units for font size
 | 
						|
    QColor textColor;
 | 
						|
    int textTransp;
 | 
						|
    QPainter::CompositionMode blendMode;
 | 
						|
    QColor previewBkgrdColor;
 | 
						|
 | 
						|
    //! Substitution collection for automatic text substitution with labels
 | 
						|
    QgsStringReplacementCollection substitutions;
 | 
						|
    //! True if substitutions should be applied
 | 
						|
    bool useSubstitutions;
 | 
						|
 | 
						|
    //-- text formatting
 | 
						|
 | 
						|
    QString wrapChar;
 | 
						|
    double multilineHeight; //0.0 to 10.0, leading between lines as multiplyer of line height
 | 
						|
    MultiLineAlign multilineAlign; // horizontal alignment of multi-line labels
 | 
						|
 | 
						|
    // Adds '<' or '>', or user-defined symbol to the label string pointing to the
 | 
						|
    // direction of the line / polygon ring
 | 
						|
    // Works only if Placement == Line
 | 
						|
    bool addDirectionSymbol;
 | 
						|
    QString leftDirectionSymbol;
 | 
						|
    QString rightDirectionSymbol;
 | 
						|
    DirectionSymbols placeDirectionSymbol; // whether to place left/right, above or below label
 | 
						|
    bool reverseDirectionSymbol;
 | 
						|
 | 
						|
    bool formatNumbers;
 | 
						|
    int decimals;
 | 
						|
    bool plusSign;
 | 
						|
 | 
						|
    //-- text buffer
 | 
						|
 | 
						|
    bool bufferDraw;
 | 
						|
    double bufferSize; // buffer size
 | 
						|
    bool bufferSizeInMapUnits; //true if buffer is in map units (otherwise in mm)
 | 
						|
    QgsMapUnitScale bufferSizeMapUnitScale; // scale range for map units for buffer size
 | 
						|
    QColor bufferColor;
 | 
						|
    bool bufferNoFill; //set interior of buffer to 100% transparent
 | 
						|
    int bufferTransp;
 | 
						|
    Qt::PenJoinStyle bufferJoinStyle;
 | 
						|
    QPainter::CompositionMode bufferBlendMode;
 | 
						|
 | 
						|
    //-- shape background
 | 
						|
 | 
						|
    bool shapeDraw;
 | 
						|
    ShapeType shapeType;
 | 
						|
    QString shapeSVGFile;
 | 
						|
    SizeType shapeSizeType;
 | 
						|
    QPointF shapeSize;
 | 
						|
    SizeUnit shapeSizeUnits;
 | 
						|
    QgsMapUnitScale shapeSizeMapUnitScale;
 | 
						|
    RotationType shapeRotationType;
 | 
						|
    double shapeRotation;
 | 
						|
    QPointF shapeOffset;
 | 
						|
    SizeUnit shapeOffsetUnits;
 | 
						|
    QgsMapUnitScale shapeOffsetMapUnitScale;
 | 
						|
    QPointF shapeRadii;
 | 
						|
    SizeUnit shapeRadiiUnits;
 | 
						|
    QgsMapUnitScale shapeRadiiMapUnitScale;
 | 
						|
    int shapeTransparency;
 | 
						|
    QPainter::CompositionMode shapeBlendMode;
 | 
						|
    QColor shapeFillColor;
 | 
						|
    QColor shapeBorderColor;
 | 
						|
    double shapeBorderWidth;
 | 
						|
    SizeUnit shapeBorderWidthUnits;
 | 
						|
    QgsMapUnitScale shapeBorderWidthMapUnitScale;
 | 
						|
    Qt::PenJoinStyle shapeJoinStyle;
 | 
						|
 | 
						|
    //-- drop shadow
 | 
						|
 | 
						|
    bool shadowDraw;
 | 
						|
    ShadowType shadowUnder;
 | 
						|
    int shadowOffsetAngle;
 | 
						|
    double shadowOffsetDist;
 | 
						|
    SizeUnit shadowOffsetUnits;
 | 
						|
    QgsMapUnitScale shadowOffsetMapUnitScale;
 | 
						|
    bool shadowOffsetGlobal;
 | 
						|
    double shadowRadius;
 | 
						|
    SizeUnit shadowRadiusUnits;
 | 
						|
    QgsMapUnitScale shadowRadiusMapUnitScale;
 | 
						|
    bool shadowRadiusAlphaOnly;
 | 
						|
    int shadowTransparency;
 | 
						|
    int shadowScale;
 | 
						|
    QColor shadowColor;
 | 
						|
    QPainter::CompositionMode shadowBlendMode;
 | 
						|
 | 
						|
    //-- placement
 | 
						|
 | 
						|
    Placement placement;
 | 
						|
    unsigned int placementFlags;
 | 
						|
 | 
						|
    bool centroidWhole; // whether centroid calculated from whole or visible polygon
 | 
						|
    bool centroidInside; // whether centroid-point calculated must be inside polygon
 | 
						|
 | 
						|
    /** Ordered list of predefined label positions for points. Positions earlier
 | 
						|
     * in the list will be prioritised over later positions. Only used when the placement
 | 
						|
     * is set to QgsPalLayerSettings::OrderedPositionsAroundPoint.
 | 
						|
     * @note not available in Python bindings
 | 
						|
     */
 | 
						|
    //QVector< QgsPalLayerSettings::PredefinedPointPosition > predefinedPositionOrder;
 | 
						|
 | 
						|
    /** True if only labels which completely fit within a polygon are allowed.
 | 
						|
     */
 | 
						|
    bool fitInPolygonOnly;
 | 
						|
    double dist; // distance from the feature (in mm)
 | 
						|
    bool distInMapUnits; //true if distance is in map units (otherwise in mm)
 | 
						|
    QgsMapUnitScale distMapUnitScale;
 | 
						|
    //! Offset type for layer (only applies in certain placement modes)
 | 
						|
    OffsetType offsetType;
 | 
						|
 | 
						|
    double repeatDistance;
 | 
						|
    SizeUnit repeatDistanceUnit;
 | 
						|
    QgsMapUnitScale repeatDistanceMapUnitScale;
 | 
						|
 | 
						|
    // offset labels of point/centroid features default to center
 | 
						|
    // move label to quadrant: left/down, don't move, right/up (-1, 0, 1)
 | 
						|
    QuadrantPosition quadOffset;
 | 
						|
 | 
						|
    double xOffset; // offset from point in mm or map units
 | 
						|
    double yOffset; // offset from point in mm or map units
 | 
						|
    bool labelOffsetInMapUnits; //true if label offset is in map units (otherwise in mm)
 | 
						|
    QgsMapUnitScale labelOffsetMapUnitScale;
 | 
						|
    double angleOffset; // rotation applied to offset labels
 | 
						|
    bool preserveRotation; // preserve predefined rotation data during label pin/unpin operations
 | 
						|
 | 
						|
    double maxCurvedCharAngleIn; // maximum angle between inside curved label characters (defaults to 20.0, range 20.0 to 60.0)
 | 
						|
    double maxCurvedCharAngleOut; // maximum angle between outside curved label characters (defaults to -20.0, range -20.0 to -95.0)
 | 
						|
 | 
						|
    int priority; // 0 = low, 10 = high
 | 
						|
 | 
						|
    //-- rendering
 | 
						|
 | 
						|
    bool scaleVisibility;
 | 
						|
    int scaleMin;
 | 
						|
    int scaleMax;
 | 
						|
 | 
						|
    bool fontLimitPixelSize; // true is label should be limited by fontMinPixelSize/fontMaxPixelSize
 | 
						|
    int fontMinPixelSize; // minimum pixel size for showing rendered map unit labels (1 - 1000)
 | 
						|
    int fontMaxPixelSize; // maximum pixel size for showing rendered map unit labels (1 - 10000)
 | 
						|
 | 
						|
    bool displayAll;  // if true, all features will be labelled even though overlaps occur
 | 
						|
    UpsideDownLabels upsidedownLabels; // whether, or how, to show upsidedown labels
 | 
						|
 | 
						|
    bool labelPerPart; // whether to label every feature's part or only the biggest one
 | 
						|
    bool mergeLines;
 | 
						|
 | 
						|
    bool limitNumLabels; // whether to limit the number of labels to be drawn
 | 
						|
    int maxNumLabels; // maximum number of labels to be drawn
 | 
						|
 | 
						|
    double minFeatureSize; // minimum feature size to be labelled (in mm)
 | 
						|
    bool obstacle; // whether features for layer are obstacles to labels of other layers
 | 
						|
 | 
						|
    /** Obstacle factor, where 1.0 = default, < 1.0 more likely to be covered by labels,
 | 
						|
     * > 1.0 less likely to be covered
 | 
						|
     */
 | 
						|
    double obstacleFactor;
 | 
						|
 | 
						|
    /** Controls how features act as obstacles for labels
 | 
						|
     */
 | 
						|
    ObstacleType obstacleType;
 | 
						|
 | 
						|
    //! Z-Index of label, where labels with a higher z-index are rendered on top of labels with a lower z-index
 | 
						|
    double zIndex;
 | 
						|
 | 
						|
    //-- scale factors
 | 
						|
    double vectorScaleFactor; //scale factor painter units->pixels
 | 
						|
    double rasterCompressFactor; //pixel resolution scale factor
 | 
						|
 | 
						|
    // called from register feature hook
 | 
						|
    void calculateLabelSize( const QFontMetricsF* fm, QString text, double& labelX, double& labelY, QgsFeature* f = 0, QgsRenderContext* context = 0 );
 | 
						|
 | 
						|
    /** Register a feature for labelling.
 | 
						|
     * @param f feature to label
 | 
						|
     * @param context render context. The QgsExpressionContext contained within the render context
 | 
						|
     * must have already had the feature and fields sets prior to calling this method.
 | 
						|
     * @param labelFeature if using QgsLabelingEngine, this will receive the label feature. Not available
 | 
						|
     * in Python bindings.
 | 
						|
     * @param obstacleGeometry optional obstacle geometry, if a different geometry to the feature's geometry
 | 
						|
     * should be used as an obstacle for labels (eg, if the feature has been rendered with an offset point
 | 
						|
     * symbol, the obstacle geometry should represent the bounds of the offset symbol). If not set,
 | 
						|
     * the feature's original geometry will be used as an obstacle for labels. Not available
 | 
						|
     * in Python bindings.
 | 
						|
     */
 | 
						|
    void registerFeature( QgsFeature& f, QgsRenderContext& context );
 | 
						|
 | 
						|
    void readFromLayer( QgsVectorLayer* layer );
 | 
						|
    void writeToLayer( QgsVectorLayer* layer );
 | 
						|
 | 
						|
    /** Read settings from a DOM element
 | 
						|
     * @note added in 2.12
 | 
						|
     */
 | 
						|
    void readXml( QDomElement& elem );
 | 
						|
 | 
						|
    /** Write settings into a DOM element
 | 
						|
     * @note added in 2.12
 | 
						|
     */
 | 
						|
    QDomElement writeXml( QDomDocument& doc );
 | 
						|
 | 
						|
    /** Get a data defined property pointer
 | 
						|
     * @note helpful for Python access
 | 
						|
     */
 | 
						|
    QgsDataDefined* dataDefinedProperty( QgsPalLayerSettings::DataDefinedProperties p );
 | 
						|
 | 
						|
    /** Set a property as data defined
 | 
						|
     * @note helpful for Python access
 | 
						|
     */
 | 
						|
    void setDataDefinedProperty( QgsPalLayerSettings::DataDefinedProperties p,
 | 
						|
                                 bool active, bool useExpr, const QString& expr, const QString& field );
 | 
						|
 | 
						|
    /** Set a property to static instead data defined */
 | 
						|
    void removeDataDefinedProperty( QgsPalLayerSettings::DataDefinedProperties p );
 | 
						|
 | 
						|
    /** Clear all data-defined properties
 | 
						|
     * @note added in QGIS 2.12
 | 
						|
     */
 | 
						|
    void removeAllDataDefinedProperties();
 | 
						|
 | 
						|
    /** Convert old property value to new one as delimited values
 | 
						|
     * @note not available in python bindings; as temporary solution until refactoring of project settings
 | 
						|
     */
 | 
						|
    QString updateDataDefinedString( const QString& value );
 | 
						|
 | 
						|
    /** Get property value as separate values split into Qmap
 | 
						|
     * @note not available in python bindings
 | 
						|
     */
 | 
						|
    QMap<QString, QString> dataDefinedMap( QgsPalLayerSettings::DataDefinedProperties p ) const;
 | 
						|
 | 
						|
    /** Get data defined property value from expression string or attribute field name
 | 
						|
     * @returns value inside QVariant
 | 
						|
     * @note not available in python bindings
 | 
						|
     */
 | 
						|
    //QVariant dataDefinedValue( QgsPalLayerSettings::DataDefinedProperties p, QgsFeature& f, const QgsFields& fields,
 | 
						|
    //                           const QgsExpressionContext* context = 0 ) const;
 | 
						|
 | 
						|
    /** Get data defined property value from expression string or attribute field name
 | 
						|
     * @returns true/false whether result is null or invalid
 | 
						|
     * @note not available in python bindings
 | 
						|
     */
 | 
						|
    //bool dataDefinedEvaluate( QgsPalLayerSettings::DataDefinedProperties p, QVariant& exprVal, const QgsExpressionContext* context = 0 ) const;
 | 
						|
 | 
						|
    /** Whether data definition is active
 | 
						|
     */
 | 
						|
    bool dataDefinedIsActive( QgsPalLayerSettings::DataDefinedProperties p ) const;
 | 
						|
 | 
						|
    /** Whether data definition is set to use an expression
 | 
						|
     */
 | 
						|
    bool dataDefinedUseExpression( QgsPalLayerSettings::DataDefinedProperties p ) const;
 | 
						|
 | 
						|
    /** Map of current data defined properties
 | 
						|
     *
 | 
						|
     * Pointers to QgsDataDefined should never be null, the pointers are owned by this class
 | 
						|
     */
 | 
						|
    QMap< QgsPalLayerSettings::DataDefinedProperties, QgsDataDefined* > dataDefinedProperties;
 | 
						|
 | 
						|
 | 
						|
    /** 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 SizeUnit enum value of size
 | 
						|
     * @param rasterfactor whether to consider oversampling
 | 
						|
     * @param mapUnitScale a mapUnitScale clamper
 | 
						|
     * @return font pixel size
 | 
						|
     */
 | 
						|
    int sizeToPixel( double size, const QgsRenderContext& c, SizeUnit unit, bool rasterfactor = false, const QgsMapUnitScale& mapUnitScale = QgsMapUnitScale() ) const;
 | 
						|
 | 
						|
    /** 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 SizeUnit enum value of size
 | 
						|
     * @param rasterfactor whether to consider oversampling
 | 
						|
     * @param mapUnitScale a mapUnitScale clamper
 | 
						|
     * @return size that will render, as double
 | 
						|
     */
 | 
						|
    double scaleToPixelContext( double size, const QgsRenderContext& c, SizeUnit unit, bool rasterfactor = false, const QgsMapUnitScale& mapUnitScale = QgsMapUnitScale() ) const;
 | 
						|
 | 
						|
    /** Map of data defined enum to names and old-style indecies
 | 
						|
     * The QPair contains a new string for layer property key, and a reference to old-style numeric key (< QGIS 2.0)
 | 
						|
     * @note not available in python bindings;
 | 
						|
     */
 | 
						|
    // QMap<QgsPalLayerSettings::DataDefinedProperties, QPair<QString, int> > dataDefinedNames() const;
 | 
						|
 | 
						|
    // temporary stuff: set when layer gets prepared or labeled
 | 
						|
    QgsFeature* mCurFeat;
 | 
						|
    QgsFields mCurFields;
 | 
						|
    int fieldIndex;
 | 
						|
    const QgsMapToPixel* xform;
 | 
						|
    QgsCoordinateTransform ct;
 | 
						|
 | 
						|
    QgsPoint ptZero;
 | 
						|
    QgsPoint ptOne;
 | 
						|
    QgsGeometry extentGeom;
 | 
						|
    int mFeaturesToLabel; // total features that will probably be labeled, may be less (figured before PAL)
 | 
						|
    int mFeatsSendingToPal; // total features tested for sending into PAL (relative to maxNumLabels)
 | 
						|
    int mFeatsRegPal; // number of features registered in PAL, when using limitNumLabels
 | 
						|
 | 
						|
    QString mTextFontFamily;
 | 
						|
    bool mTextFontFound;
 | 
						|
 | 
						|
    bool showingShadowRects; // whether to show debug rectangles for drop shadows
 | 
						|
};
 | 
						|
 | 
						|
class QgsLabelCandidate
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
%End
 | 
						|
 | 
						|
  public:
 | 
						|
    QgsLabelCandidate( const QRectF& r, double c );
 | 
						|
 | 
						|
    QRectF rect;
 | 
						|
    double cost;
 | 
						|
};
 | 
						|
 | 
						|
/** \ingroup core
 | 
						|
  * Maintains current state of more grainular and temporal values when creating/painting
 | 
						|
  * component parts of an individual label (e.g. buffer, background, shadow, etc.).
 | 
						|
  */
 | 
						|
class QgsLabelComponent
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
%End
 | 
						|
 | 
						|
  public:
 | 
						|
    QgsLabelComponent();
 | 
						|
 | 
						|
    // methods
 | 
						|
 | 
						|
    QString text() const;
 | 
						|
    void setText( const QString& text );
 | 
						|
 | 
						|
    const QgsPoint& origin() const;
 | 
						|
    void setOrigin( const QgsPoint& point );
 | 
						|
 | 
						|
    bool useOrigin() const;
 | 
						|
    void setUseOrigin( const bool use );
 | 
						|
 | 
						|
    double rotation() const;
 | 
						|
    void setRotation( const double rotation );
 | 
						|
 | 
						|
    double rotationOffset() const;
 | 
						|
    void setRotationOffset( const double rotation );
 | 
						|
 | 
						|
    bool useRotation() const;
 | 
						|
    void setUseRotation( const bool use );
 | 
						|
 | 
						|
    const QgsPoint& center() const;
 | 
						|
    void setCenter( const QgsPoint& point );
 | 
						|
 | 
						|
    bool useCenter() const;
 | 
						|
    void setUseCenter( const bool use );
 | 
						|
 | 
						|
    const QgsPoint& size() const;
 | 
						|
    void setSize( const QgsPoint& point );
 | 
						|
 | 
						|
    const QgsPoint& offset() const;
 | 
						|
    void setOffset( const QgsPoint& point );
 | 
						|
 | 
						|
    const QPicture* picture() const;
 | 
						|
    void setPicture( QPicture* picture );
 | 
						|
 | 
						|
    double pictureBuffer() const;
 | 
						|
    void setPictureBuffer( const double buffer );
 | 
						|
 | 
						|
    double dpiRatio() const;
 | 
						|
    void setDpiRatio( const double ratio );
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Class that stores computed placement from labeling engine.
 | 
						|
 * @note added in 2.4
 | 
						|
 */
 | 
						|
class QgsLabelingResults
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
%End
 | 
						|
 | 
						|
  public:
 | 
						|
    QgsLabelingResults();
 | 
						|
    ~QgsLabelingResults();
 | 
						|
 | 
						|
    //! return infos about labels at a given (map) position
 | 
						|
    QList<QgsLabelPosition> labelsAtPosition( const QgsPoint& p ) const;
 | 
						|
    //! return infos about labels within a given (map) rectangle
 | 
						|
    QList<QgsLabelPosition> labelsWithinRect( const QgsRectangle& r ) const;
 | 
						|
 | 
						|
  private:
 | 
						|
    QgsLabelingResults( const QgsLabelingResults& );
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
class QgsPalLabeling : QgsLabelingEngineInterface
 | 
						|
{
 | 
						|
%TypeHeaderCode
 | 
						|
#include <qgspallabeling.h>
 | 
						|
%End
 | 
						|
 | 
						|
  public:
 | 
						|
    enum DrawLabelType
 | 
						|
    {
 | 
						|
      LabelText,
 | 
						|
      LabelBuffer,
 | 
						|
      LabelShape,
 | 
						|
      LabelSVG,
 | 
						|
      LabelShadow
 | 
						|
    };
 | 
						|
 | 
						|
    QgsPalLabeling();
 | 
						|
    ~QgsPalLabeling();
 | 
						|
 | 
						|
    void numCandidatePositions( int& candPoint, int& candLine, int& candPolygon );
 | 
						|
    void setNumCandidatePositions( int candPoint, int candLine, int candPolygon );
 | 
						|
 | 
						|
    enum Search { Chain, Popmusic_Tabu, Popmusic_Chain, Popmusic_Tabu_Chain, Falp };
 | 
						|
 | 
						|
    void setSearchMethod( Search s );
 | 
						|
    Search searchMethod() const;
 | 
						|
 | 
						|
    bool isShowingCandidates() const;
 | 
						|
    void setShowingCandidates( bool showing );
 | 
						|
 | 
						|
    bool isShowingShadowRectangles() const;
 | 
						|
    void setShowingShadowRectangles( bool showing );
 | 
						|
 | 
						|
    bool isShowingAllLabels() const;
 | 
						|
    void setShowingAllLabels( bool showing );
 | 
						|
 | 
						|
    bool isShowingPartialsLabels() const;
 | 
						|
    void setShowingPartialsLabels( bool showing );
 | 
						|
 | 
						|
    //! @note added in 2.4
 | 
						|
    bool isDrawingOutlineLabels() const;
 | 
						|
    void setDrawingOutlineLabels( bool outline );
 | 
						|
 | 
						|
    /** Returns whether the engine will only draw the outline rectangles of labels,
 | 
						|
     * not the label contents themselves. Used for debugging and testing purposes.
 | 
						|
     * @see setDrawLabelRectOnly
 | 
						|
     * @note added in QGIS 2.12
 | 
						|
     */
 | 
						|
    bool drawLabelRectOnly() const;
 | 
						|
 | 
						|
    /** Sets whether the engine should only draw the outline rectangles of labels,
 | 
						|
     * not the label contents themselves. Used for debugging and testing purposes.
 | 
						|
     * @param drawRect set to true to enable rect drawing only
 | 
						|
     * @see drawLabelRectOnly
 | 
						|
     * @note added in QGIS 2.12
 | 
						|
     */
 | 
						|
    void setDrawLabelRectOnly( bool drawRect );
 | 
						|
 | 
						|
    // implemented methods from labeling engine interface
 | 
						|
 | 
						|
    //! called when we're going to start with rendering
 | 
						|
    virtual void init( const QgsMapSettings& mapSettings );
 | 
						|
    //! called to find out whether the layer is used for labeling
 | 
						|
    virtual bool willUseLayer( QgsVectorLayer* layer );
 | 
						|
 | 
						|
    //! called to find out whether the layer is used for labeling
 | 
						|
    //! @note added in 2.4
 | 
						|
    static bool staticWillUseLayer( QgsVectorLayer* layer );
 | 
						|
    static bool staticWillUseLayer( const QString& layerID );
 | 
						|
 | 
						|
    //! clears all PAL layer settings for registered layers
 | 
						|
    virtual void clearActiveLayers();
 | 
						|
    //! clears data defined objects from PAL layer settings for a registered layer
 | 
						|
    virtual void clearActiveLayer( const QString& layerID );
 | 
						|
    //! hook called when drawing layer before issuing select()
 | 
						|
    virtual int prepareLayer( QgsVectorLayer* layer, QStringList &attrNames, QgsRenderContext& ctx );
 | 
						|
    //! adds a diagram layer to the labeling engine
 | 
						|
    //! @note added in QGIS 2.12
 | 
						|
    virtual int prepareDiagramLayer( QgsVectorLayer* layer, QStringList& attrNames, QgsRenderContext& ctx );
 | 
						|
 | 
						|
    /** Register a feature for labelling.
 | 
						|
     * @param layerID string identifying layer associated with label
 | 
						|
     * @param feat feature to label
 | 
						|
     * @param context render context. The QgsExpressionContext contained within the render context
 | 
						|
     * must have already had the feature and fields sets prior to calling this method.
 | 
						|
     */
 | 
						|
    virtual void registerFeature( const QString& layerID, QgsFeature& feat, QgsRenderContext& context );
 | 
						|
 | 
						|
    virtual void registerDiagramFeature( const QString& layerID, QgsFeature& feat, QgsRenderContext& context );
 | 
						|
    //! called when the map is drawn and labels should be placed
 | 
						|
    virtual void drawLabeling( QgsRenderContext& context );
 | 
						|
    //! called when we're done with rendering
 | 
						|
    virtual void exit();
 | 
						|
 | 
						|
    //! Return pointer to recently computed results (in drawLabeling()) and pass the ownership of results to the caller
 | 
						|
    //! @note added in 2.4
 | 
						|
    QgsLabelingResults* takeResults() /TransferBack/;
 | 
						|
 | 
						|
    //! called when passing engine among map renderers
 | 
						|
    virtual QgsPalLabeling* clone() /Factory/;
 | 
						|
 | 
						|
    //! @note not available in python bindings
 | 
						|
    // void drawLabelCandidateRect( pal::LabelPosition* lp, QPainter* painter, const QgsMapToPixel* xform );
 | 
						|
 | 
						|
    static void drawLabelBuffer( QgsRenderContext& context,
 | 
						|
                                 const QgsLabelComponent &component,
 | 
						|
                                 const QgsPalLayerSettings& tmpLyr );
 | 
						|
 | 
						|
    static void drawLabelBackground( QgsRenderContext& context,
 | 
						|
                                     QgsLabelComponent component,
 | 
						|
                                     const QgsPalLayerSettings& tmpLyr );
 | 
						|
 | 
						|
    static void drawLabelShadow( QgsRenderContext &context,
 | 
						|
                                 const QgsLabelComponent &component,
 | 
						|
                                 const QgsPalLayerSettings& tmpLyr );
 | 
						|
 | 
						|
    //! load/save engine settings to project file
 | 
						|
    void loadEngineSettings();
 | 
						|
    void saveEngineSettings();
 | 
						|
    void clearEngineSettings();
 | 
						|
 | 
						|
    /** 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
 | 
						|
     * @returns prepared geometry
 | 
						|
     * @note added in QGIS 2.9
 | 
						|
     */
 | 
						|
    static QgsGeometry prepareGeometry( const QgsGeometry &geometry, QgsRenderContext &context, const QgsCoordinateTransform& ct, QgsGeometry *clipGeometry = 0 ) /Factory/;
 | 
						|
 | 
						|
    /** Checks whether a geometry requires preparation before registration with PAL
 | 
						|
     * @param geometry geometry to prepare
 | 
						|
     * @param context render context
 | 
						|
     * @param @param ct coordinate transform, or invalid transform if no transformation required
 | 
						|
     * @param clipGeometry geometry to clip features to, if applicable
 | 
						|
     * @returns true if geometry requires preparation
 | 
						|
     * @note added in QGIS 2.9
 | 
						|
     */
 | 
						|
    static bool geometryRequiresPreparation( const QgsGeometry& geometry, QgsRenderContext &context, const QgsCoordinateTransform& ct, QgsGeometry *clipGeometry = 0 );
 | 
						|
 | 
						|
    /** Splits a text string to a list of separate lines, using a specified wrap character.
 | 
						|
     * The text string will be split on either newline characters or the wrap character.
 | 
						|
     * @param text text string to split
 | 
						|
     * @param wrapCharacter additional character to wrap on
 | 
						|
     * @returns list of text split to lines
 | 
						|
     * @note added in QGIS 2.9
 | 
						|
     */
 | 
						|
    static QStringList splitToLines( const QString& text, const QString& wrapCharacter );
 | 
						|
 | 
						|
    /** 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 (eg Arabic and Indic based scripts)
 | 
						|
     * @param text string to split
 | 
						|
     * @returns list of graphemes
 | 
						|
     * @note added in QGIS 2.10
 | 
						|
     */
 | 
						|
    static QStringList splitToGraphemes( const QString& text );
 | 
						|
 | 
						|
  protected:
 | 
						|
    // update temporary QgsPalLayerSettings with any data defined text style values
 | 
						|
    void dataDefinedTextStyle( QgsPalLayerSettings& tmpLyr,
 | 
						|
                               const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues );
 | 
						|
 | 
						|
    // update temporary QgsPalLayerSettings with any data defined text formatting values
 | 
						|
    void dataDefinedTextFormatting( QgsPalLayerSettings& tmpLyr,
 | 
						|
                                    const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues );
 | 
						|
 | 
						|
    // update temporary QgsPalLayerSettings with any data defined text buffer values
 | 
						|
    void dataDefinedTextBuffer( QgsPalLayerSettings& tmpLyr,
 | 
						|
                                const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues );
 | 
						|
 | 
						|
    // update temporary QgsPalLayerSettings with any data defined shape background values
 | 
						|
    void dataDefinedShapeBackground( QgsPalLayerSettings& tmpLyr,
 | 
						|
                                     const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues );
 | 
						|
 | 
						|
    // update temporary QgsPalLayerSettings with any data defined drop shadow values
 | 
						|
    void dataDefinedDropShadow( QgsPalLayerSettings& tmpLyr,
 | 
						|
                                const QMap< QgsPalLayerSettings::DataDefinedProperties, QVariant >& ddValues );
 | 
						|
 | 
						|
    void deleteTemporaryData();
 | 
						|
 | 
						|
    /** Checks whether a geometry exceeds the minimum required size for a geometry to be labeled.
 | 
						|
     * @param context render context
 | 
						|
     * @param geom geometry
 | 
						|
     * @param minSize minimum size for geometry
 | 
						|
     * @returns true if geometry exceeds minimum size
 | 
						|
     * @note added in QGIS 2.9
 | 
						|
     */
 | 
						|
    static bool checkMinimumSizeMM( const QgsRenderContext &context, const QgsGeometry* geom, double minSize );
 | 
						|
};
 |