QGIS/python/core/composer/qgscomposerscalebar.sip

294 lines
8.7 KiB
Plaintext
Raw Normal View History

/** \ingroup MapComposer
* A scale bar item that can be added to a map composition.
*/
class QgsComposerScaleBar: QgsComposerItem
{
%TypeHeaderCode
#include "qgscomposerscalebar.h"
%End
public:
enum Alignment
{
2014-06-02 21:00:51 +02:00
Left,
Middle,
Right
};
enum ScaleBarUnits
{
2014-06-02 21:00:51 +02:00
MapUnits,
Meters,
Feet,
NauticalMiles
};
/** Modes for setting size for scale bar segments
*/
enum SegmentSizeMode
{
SegmentSizeFixed, /*!< Scale bar segment size is fixed to a map unit*/
SegmentSizeFitWidth /*!< Scale bar segment size is calculated to fit a size range*/
};
QgsComposerScaleBar( QgsComposition* composition /TransferThis/ );
~QgsComposerScaleBar();
2015-07-29 11:52:14 +02:00
/** Return correct graphics item type. */
virtual int type() const;
/** \brief Reimplementation of QCanvasItem::paint*/
void paint( QPainter* painter, const QStyleOptionGraphicsItem* itemStyle, QWidget* pWidget );
//getters and setters
int numSegments() const;
void setNumSegments( int nSegments );
int numSegmentsLeft() const;
void setNumSegmentsLeft( int nSegmentsLeft );
double numUnitsPerSegment() const;
void setNumUnitsPerSegment( double units );
/** Returns the size mode for scale bar segments.
* @see setSegmentSizeMode
* @see minBarWidth
* @see maxBarWidth
* @note added in QGIS 2.9
*/
SegmentSizeMode segmentSizeMode() const;
/** Sets the size mode for scale bar segments.
* @param mode size mode
* @see segmentSizeMode
* @see setMinBarWidth
* @see setMaxBarWidth
* @note added in QGIS 2.9
*/
void setSegmentSizeMode( SegmentSizeMode mode );
/** Returns the minimum size (in millimeters) for scale bar segments. This
* property is only effective if the @link segmentSizeMode @endlink is set
* to @link SegmentSizeFitWidth @endlink.
* @see segmentSizeMode
* @see setMinBarWidth
* @see maxBarWidth
* @note added in QGIS 2.9
*/
double minBarWidth() const;
/** Sets the minimum size (in millimeters) for scale bar segments. This
* property is only effective if the @link segmentSizeMode @endlink is set
* to @link SegmentSizeFitWidth @endlink.
* @param minWidth minimum width in millimeters
* @see minBarWidth
* @see setMaxBarWidth
* @see setSegmentSizeMode
* @note added in QGIS 2.9
*/
void setMinBarWidth( double minWidth );
/** Returns the maximum size (in millimeters) for scale bar segments. This
* property is only effective if the @link segmentSizeMode @endlink is set
* to @link SegmentSizeFitWidth @endlink.
* @see segmentSizeMode
* @see setMaxBarWidth
* @see minBarWidth
* @note added in QGIS 2.9
*/
double maxBarWidth() const;
/** Sets the maximum size (in millimeters) for scale bar segments. This
* property is only effective if the @link segmentSizeMode @endlink is set
* to @link SegmentSizeFitWidth @endlink.
* @param minWidth maximum width in millimeters
* @see minBarWidth
* @see setMaxBarWidth
* @see setSegmentSizeMode
* @note added in QGIS 2.9
*/
void setMaxBarWidth( double maxWidth );
double numMapUnitsPerScaleBarUnit() const;
void setNumMapUnitsPerScaleBarUnit( double d );
QString unitLabeling() const;
void setUnitLabeling( const QString& label );
QFont font() const;
void setFont( const QFont& font );
2015-07-29 11:52:14 +02:00
/** Returns the color used for drawing text in the scalebar.
* @returns font color for scalebar.
* @see setFontColor
* @see font
*/
2013-06-23 16:00:16 +02:00
QColor fontColor() const;
2015-07-29 11:52:14 +02:00
/** Sets the color used for drawing text in the scalebar.
* @param c font color for scalebar.
* @see fontColor
* @see setFont
*/
void setFontColor( const QColor& c );
2015-07-29 11:52:14 +02:00
/** Returns the pen used for drawing the scalebar.
* @returns QPen used for drawing the scalebar outlines.
* @see setPen
* @see brush
*/
QPen pen() const;
2015-07-29 11:52:14 +02:00
/** Sets the pen used for drawing the scalebar.
* @param pen QPen to use for drawing the scalebar outlines.
* @see pen
* @see setBrush
*/
void setPen( const QPen& pen );
2015-07-29 11:52:14 +02:00
/** Returns the primary brush for the scalebar.
* @returns QBrush used for filling the scalebar
* @see setBrush
* @see brush2
* @see pen
*/
QBrush brush() const;
2015-07-29 11:52:14 +02:00
/** Sets primary brush for the scalebar.
* @param brush QBrush to use for filling the scalebar
* @see brush
* @see setBrush2
* @see setPen
*/
void setBrush( const QBrush& brush );
2015-07-29 11:52:14 +02:00
/** Returns the secondary brush for the scalebar. This is used for alternating color style scalebars, such
* as single and double box styles.
* @returns QBrush used for secondary color areas
* @see setBrush2
* @see brush
*/
QBrush brush2() const;
2015-07-29 11:52:14 +02:00
/** Sets secondary brush for the scalebar. This is used for alternating color style scalebars, such
* as single and double box styles.
* @param brush QBrush to use for secondary color areas
* @see brush2
* @see setBrush
*/
void setBrush2( const QBrush& brush );
double height() const;
void setHeight( double h );
void setComposerMap( const QgsComposerMap* map );
const QgsComposerMap* composerMap();
double labelBarSpace() const;
void setLabelBarSpace( double space );
double boxContentSpace() const;
void setBoxContentSpace( double space );
double segmentMillimeters() const;
2015-07-29 11:52:14 +02:00
/** Left / Middle/ Right */
Alignment alignment() const;
void setAlignment( Alignment a );
ScaleBarUnits units() const;
void setUnits( ScaleBarUnits u );
2014-05-27 23:22:50 +02:00
/** Returns the join style used for drawing lines in the scalebar
* @returns Join style for lines
* @note introduced in 2.3
* @see setLineJoinStyle
*/
Qt::PenJoinStyle lineJoinStyle() const;
/** Sets join style used when drawing the lines in the scalebar
* @param style Join style for lines
* @returns nothing
* @note introduced in 2.3
* @see lineJoinStyle
*/
void setLineJoinStyle( Qt::PenJoinStyle style );
/** Returns the cap style used for drawing lines in the scalebar
* @returns Cap style for lines
* @note introduced in 2.3
* @see setLineCapStyle
*/
Qt::PenCapStyle lineCapStyle() const;
/** Sets cap style used when drawing the lines in the scalebar
* @param style Cap style for lines
* @returns nothing
* @note introduced in 2.3
* @see lineCapStyle
*/
void setLineCapStyle( Qt::PenCapStyle style );
2015-07-29 11:52:14 +02:00
/** Apply default settings*/
void applyDefaultSettings();
2015-07-29 11:52:14 +02:00
/** Apply default size (scale bar 1/5 of map item width) */
void applyDefaultSize( ScaleBarUnits u = Meters );
2015-07-29 11:52:14 +02:00
/** Sets style by name
@param styleName (untranslated) style name. Possibilities are: 'Single Box', 'Double Box', 'Line Ticks Middle', 'Line Ticks Down', 'Line Ticks Up', 'Numeric'*/
void setStyle( const QString& styleName );
2015-07-29 11:52:14 +02:00
/** Returns style name*/
QString style() const;
2015-07-29 11:52:14 +02:00
/** Returns the x - positions of the segment borders (in item coordinates) and the width
2014-01-27 09:22:24 +01:00
of the segment
@note python bindings not available on android
*/
%If (!ARM)
void segmentPositions( QList<QPair<double, double> >& posWidthList ) const;
%End
2015-07-29 11:52:14 +02:00
/** Sets box size suitable to content*/
void adjustBoxSize();
2015-07-29 11:52:14 +02:00
/** Adjusts box size and calls QgsComposerItem::update()*/
void update();
2015-07-29 11:52:14 +02:00
/** Returns string of first label (important for drawing, labeling, size calculation*/
QString firstLabelString() const;
2015-07-29 11:52:14 +02:00
/** Stores state in Dom element
* @param elem is Dom element corresponding to 'Composer' tag
* @param doc Dom document
*/
bool writeXML( QDomElement& elem, QDomDocument & doc ) const;
2015-07-29 11:52:14 +02:00
/** Sets state from Dom document
* @param itemElem is Dom node corresponding to item tag
* @param doc is Dom document
*/
bool readXML( const QDomElement& itemElem, const QDomDocument& doc );
2015-07-29 11:52:14 +02:00
/** Moves scalebar position to the left / right depending on alignment and change in item width*/
void correctXPositionAlignment( double width, double widthAfter );
2014-11-21 01:17:21 +01:00
//overriden to apply minimum size
void setSceneRect( const QRectF &rectangle );
public slots:
void updateSegmentSize();
2015-07-29 11:52:14 +02:00
/** Sets mCompositionMap to 0 if the map is deleted*/
void invalidateCurrentMap();
protected:
2015-07-29 11:52:14 +02:00
/** Calculates with of a segment in mm and stores it in mSegmentMillimeters*/
void refreshSegmentMillimeters();
2015-07-29 11:52:14 +02:00
/** Returns diagonal of composer map in selected units (map units / meters / feet / nautical miles)*/
double mapWidth() const;
2014-05-27 23:22:50 +02:00
};