mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
[FEATURE] add outline join style settings to simple markers
(fixes #3797)
This commit is contained in:
parent
99d5e42247
commit
6ad3537403
@ -5,12 +5,24 @@ class QgsSimpleMarkerSymbolLayerV2 : QgsMarkerSymbolLayerV2
|
|||||||
%End
|
%End
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/** Constructor for QgsSimpleMarkerSymbolLayerV2.
|
||||||
|
* @param name symbol name, should be one of "square", "rectangle", "diamond",
|
||||||
|
* "pentagon", "triangle", "equilateral_triangle", "star", "regular_star", "arrow",
|
||||||
|
* "circle", "cross", "cross2", "line", "x", "arrowhead", "filled_arrowhead"
|
||||||
|
* @param color fill color for symbol
|
||||||
|
* @param borderColor border color for symbol
|
||||||
|
* @param size symbol size (in mm)
|
||||||
|
* @param angle symbol rotation angle
|
||||||
|
* @param scaleMethod scaling method for data defined scaling
|
||||||
|
* @param penJoinStyle join style for outline pen
|
||||||
|
*/
|
||||||
QgsSimpleMarkerSymbolLayerV2( const QString& name = DEFAULT_SIMPLEMARKER_NAME,
|
QgsSimpleMarkerSymbolLayerV2( const QString& name = DEFAULT_SIMPLEMARKER_NAME,
|
||||||
const QColor& color = DEFAULT_SIMPLEMARKER_COLOR,
|
const QColor& color = DEFAULT_SIMPLEMARKER_COLOR,
|
||||||
const QColor& borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
|
const QColor& borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
|
||||||
double size = DEFAULT_SIMPLEMARKER_SIZE,
|
double size = DEFAULT_SIMPLEMARKER_SIZE,
|
||||||
double angle = DEFAULT_SIMPLEMARKER_ANGLE,
|
double angle = DEFAULT_SIMPLEMARKER_ANGLE,
|
||||||
QgsSymbolV2::ScaleMethod scaleMethod = DEFAULT_SCALE_METHOD );
|
QgsSymbolV2::ScaleMethod scaleMethod = DEFAULT_SCALE_METHOD,
|
||||||
|
Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEFILL_JOINSTYLE );
|
||||||
|
|
||||||
// static stuff
|
// static stuff
|
||||||
|
|
||||||
@ -41,9 +53,20 @@ class QgsSimpleMarkerSymbolLayerV2 : QgsMarkerSymbolLayerV2
|
|||||||
QColor borderColor() const;
|
QColor borderColor() const;
|
||||||
void setBorderColor( const QColor& color );
|
void setBorderColor( const QColor& color );
|
||||||
|
|
||||||
|
/** Get outline join style.
|
||||||
|
* @note added in 2.4 */
|
||||||
Qt::PenStyle outlineStyle() const;
|
Qt::PenStyle outlineStyle() const;
|
||||||
|
/** Set outline join style.
|
||||||
|
* @note added in 2.4 */
|
||||||
void setOutlineStyle( Qt::PenStyle outlineStyle );
|
void setOutlineStyle( Qt::PenStyle outlineStyle );
|
||||||
|
|
||||||
|
/** Get outline join style.
|
||||||
|
* @note added in 2.16 */
|
||||||
|
Qt::PenJoinStyle penJoinStyle() const;
|
||||||
|
/** Set outline join style.
|
||||||
|
* @note added in 2.16 */
|
||||||
|
void setPenJoinStyle( Qt::PenJoinStyle style );
|
||||||
|
|
||||||
/** Get outline color.
|
/** Get outline color.
|
||||||
* @note added in 2.1 */
|
* @note added in 2.1 */
|
||||||
QColor outlineColor() const;
|
QColor outlineColor() const;
|
||||||
|
@ -48,8 +48,9 @@ static void _fixQPictureDPI( QPainter* p )
|
|||||||
|
|
||||||
//////
|
//////
|
||||||
|
|
||||||
QgsSimpleMarkerSymbolLayerV2::QgsSimpleMarkerSymbolLayerV2( const QString& name, const QColor& color, const QColor& borderColor, double size, double angle, QgsSymbolV2::ScaleMethod scaleMethod )
|
QgsSimpleMarkerSymbolLayerV2::QgsSimpleMarkerSymbolLayerV2( const QString& name, const QColor& color, const QColor& borderColor, double size, double angle, QgsSymbolV2::ScaleMethod scaleMethod,
|
||||||
: mOutlineStyle( Qt::SolidLine ), mOutlineWidth( 0 ), mOutlineWidthUnit( QgsSymbolV2::MM )
|
Qt::PenJoinStyle penJoinStyle )
|
||||||
|
: mOutlineStyle( Qt::SolidLine ), mOutlineWidth( 0 ), mOutlineWidthUnit( QgsSymbolV2::MM ), mPenJoinStyle( penJoinStyle )
|
||||||
{
|
{
|
||||||
mName = name;
|
mName = name;
|
||||||
mColor = color;
|
mColor = color;
|
||||||
@ -68,6 +69,7 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::create( const QgsStringMap& prop
|
|||||||
QString name = DEFAULT_SIMPLEMARKER_NAME;
|
QString name = DEFAULT_SIMPLEMARKER_NAME;
|
||||||
QColor color = DEFAULT_SIMPLEMARKER_COLOR;
|
QColor color = DEFAULT_SIMPLEMARKER_COLOR;
|
||||||
QColor borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR;
|
QColor borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR;
|
||||||
|
Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEMARKER_JOINSTYLE;
|
||||||
double size = DEFAULT_SIMPLEMARKER_SIZE;
|
double size = DEFAULT_SIMPLEMARKER_SIZE;
|
||||||
double angle = DEFAULT_SIMPLEMARKER_ANGLE;
|
double angle = DEFAULT_SIMPLEMARKER_ANGLE;
|
||||||
QgsSymbolV2::ScaleMethod scaleMethod = DEFAULT_SCALE_METHOD;
|
QgsSymbolV2::ScaleMethod scaleMethod = DEFAULT_SCALE_METHOD;
|
||||||
@ -89,6 +91,10 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::create( const QgsStringMap& prop
|
|||||||
{
|
{
|
||||||
borderColor = QgsSymbolLayerV2Utils::decodeColor( props["line_color"] );
|
borderColor = QgsSymbolLayerV2Utils::decodeColor( props["line_color"] );
|
||||||
}
|
}
|
||||||
|
if ( props.contains( "joinstyle" ) )
|
||||||
|
{
|
||||||
|
penJoinStyle = QgsSymbolLayerV2Utils::decodePenJoinStyle( props["joinstyle"] );
|
||||||
|
}
|
||||||
if ( props.contains( "size" ) )
|
if ( props.contains( "size" ) )
|
||||||
size = props["size"].toDouble();
|
size = props["size"].toDouble();
|
||||||
if ( props.contains( "angle" ) )
|
if ( props.contains( "angle" ) )
|
||||||
@ -96,7 +102,7 @@ QgsSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::create( const QgsStringMap& prop
|
|||||||
if ( props.contains( "scale_method" ) )
|
if ( props.contains( "scale_method" ) )
|
||||||
scaleMethod = QgsSymbolLayerV2Utils::decodeScaleMethod( props["scale_method"] );
|
scaleMethod = QgsSymbolLayerV2Utils::decodeScaleMethod( props["scale_method"] );
|
||||||
|
|
||||||
QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( name, color, borderColor, size, angle, scaleMethod );
|
QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( name, color, borderColor, size, angle, scaleMethod, penJoinStyle );
|
||||||
if ( props.contains( "offset" ) )
|
if ( props.contains( "offset" ) )
|
||||||
m->setOffset( QgsSymbolLayerV2Utils::decodePoint( props["offset"] ) );
|
m->setOffset( QgsSymbolLayerV2Utils::decodePoint( props["offset"] ) );
|
||||||
if ( props.contains( "offset_unit" ) )
|
if ( props.contains( "offset_unit" ) )
|
||||||
@ -168,6 +174,7 @@ void QgsSimpleMarkerSymbolLayerV2::startRender( QgsSymbolV2RenderContext& contex
|
|||||||
mBrush = QBrush( brushColor );
|
mBrush = QBrush( brushColor );
|
||||||
mPen = QPen( penColor );
|
mPen = QPen( penColor );
|
||||||
mPen.setStyle( mOutlineStyle );
|
mPen.setStyle( mOutlineStyle );
|
||||||
|
mPen.setJoinStyle( mPenJoinStyle );
|
||||||
mPen.setWidthF( QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(), mOutlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale ) );
|
mPen.setWidthF( QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(), mOutlineWidth, mOutlineWidthUnit, mOutlineWidthMapUnitScale ) );
|
||||||
|
|
||||||
QColor selBrushColor = context.renderContext().selectionColor();
|
QColor selBrushColor = context.renderContext().selectionColor();
|
||||||
@ -190,8 +197,8 @@ void QgsSimpleMarkerSymbolLayerV2::startRender( QgsSymbolV2RenderContext& contex
|
|||||||
// - drawing to screen (not printer)
|
// - drawing to screen (not printer)
|
||||||
mUsingCache = !hasDataDefinedRotation && !hasDataDefinedSize && !context.renderContext().forceVectorOutput()
|
mUsingCache = !hasDataDefinedRotation && !hasDataDefinedSize && !context.renderContext().forceVectorOutput()
|
||||||
&& !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER )
|
&& !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_NAME ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_COLOR_BORDER )
|
||||||
&& !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE ) &&
|
&& !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_WIDTH ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_OUTLINE_STYLE )
|
||||||
!hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE );
|
&& !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOIN_STYLE ) && !hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_SIZE );
|
||||||
|
|
||||||
// use either QPolygonF or QPainterPath for drawing
|
// use either QPolygonF or QPainterPath for drawing
|
||||||
// TODO: find out whether drawing directly doesn't bring overhead - if not, use it for all shapes
|
// TODO: find out whether drawing directly doesn't bring overhead - if not, use it for all shapes
|
||||||
@ -259,7 +266,7 @@ bool QgsSimpleMarkerSymbolLayerV2::prepareCache( QgsSymbolV2RenderContext& conte
|
|||||||
double scaledSize = QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(), mSize, mSizeUnit, mSizeMapUnitScale );
|
double scaledSize = QgsSymbolLayerV2Utils::convertToPainterUnits( context.renderContext(), mSize, mSizeUnit, mSizeMapUnitScale );
|
||||||
|
|
||||||
// calculate necessary image size for the cache
|
// calculate necessary image size for the cache
|
||||||
double pw = (( qgsDoubleNear( mPen.widthF(), 0.0 ) ? 1 : mPen.widthF() ) + 1 ) / 2 * 2; // make even (round up); handle cosmetic pen
|
double pw = qRound((( qgsDoubleNear( mPen.widthF(), 0.0 ) ? 1 : mPen.widthF() * 4 ) + 1 ) ) / 2 * 2; // make even (round up); handle cosmetic pen
|
||||||
int imageSize = ( static_cast< int >( scaledSize ) + pw ) / 2 * 2 + 1; // make image width, height odd; account for pen width
|
int imageSize = ( static_cast< int >( scaledSize ) + pw ) / 2 * 2 + 1; // make image width, height odd; account for pen width
|
||||||
double center = imageSize / 2.0;
|
double center = imageSize / 2.0;
|
||||||
|
|
||||||
@ -560,6 +567,16 @@ void QgsSimpleMarkerSymbolLayerV2::renderPoint( QPointF point, QgsSymbolV2Render
|
|||||||
mSelPen.setStyle( QgsSymbolLayerV2Utils::decodePenStyle( outlineStyle ) );
|
mSelPen.setStyle( QgsSymbolLayerV2Utils::decodePenStyle( outlineStyle ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ( hasDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOIN_STYLE ) )
|
||||||
|
{
|
||||||
|
context.setOriginalValueVariable( QgsSymbolLayerV2Utils::encodePenJoinStyle( mPenJoinStyle ) );
|
||||||
|
QString style = evaluateDataDefinedProperty( QgsSymbolLayerV2::EXPR_JOIN_STYLE, context, QVariant(), &ok ).toString();
|
||||||
|
if ( ok )
|
||||||
|
{
|
||||||
|
mPen.setJoinStyle( QgsSymbolLayerV2Utils::decodePenJoinStyle( style ) );
|
||||||
|
mSelPen.setJoinStyle( QgsSymbolLayerV2Utils::decodePenJoinStyle( style ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
p->setBrush( context.selected() ? mSelBrush : mBrush );
|
p->setBrush( context.selected() ? mSelBrush : mBrush );
|
||||||
p->setPen( context.selected() ? mSelPen : mPen );
|
p->setPen( context.selected() ? mSelPen : mPen );
|
||||||
@ -664,6 +681,7 @@ QgsStringMap QgsSimpleMarkerSymbolLayerV2::properties() const
|
|||||||
map["outline_width"] = QString::number( mOutlineWidth );
|
map["outline_width"] = QString::number( mOutlineWidth );
|
||||||
map["outline_width_unit"] = QgsSymbolLayerV2Utils::encodeOutputUnit( mOutlineWidthUnit );
|
map["outline_width_unit"] = QgsSymbolLayerV2Utils::encodeOutputUnit( mOutlineWidthUnit );
|
||||||
map["outline_width_map_unit_scale"] = QgsSymbolLayerV2Utils::encodeMapUnitScale( mOutlineWidthMapUnitScale );
|
map["outline_width_map_unit_scale"] = QgsSymbolLayerV2Utils::encodeMapUnitScale( mOutlineWidthMapUnitScale );
|
||||||
|
map["joinstyle"] = QgsSymbolLayerV2Utils::encodePenJoinStyle( mPenJoinStyle );
|
||||||
map["horizontal_anchor_point"] = QString::number( mHorizontalAnchorPoint );
|
map["horizontal_anchor_point"] = QString::number( mHorizontalAnchorPoint );
|
||||||
map["vertical_anchor_point"] = QString::number( mVerticalAnchorPoint );
|
map["vertical_anchor_point"] = QString::number( mVerticalAnchorPoint );
|
||||||
|
|
||||||
@ -675,7 +693,7 @@ QgsStringMap QgsSimpleMarkerSymbolLayerV2::properties() const
|
|||||||
|
|
||||||
QgsSimpleMarkerSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::clone() const
|
QgsSimpleMarkerSymbolLayerV2* QgsSimpleMarkerSymbolLayerV2::clone() const
|
||||||
{
|
{
|
||||||
QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( mName, mColor, mBorderColor, mSize, mAngle, mScaleMethod );
|
QgsSimpleMarkerSymbolLayerV2* m = new QgsSimpleMarkerSymbolLayerV2( mName, mColor, mBorderColor, mSize, mAngle, mScaleMethod, mPenJoinStyle );
|
||||||
m->setOffset( mOffset );
|
m->setOffset( mOffset );
|
||||||
m->setSizeUnit( mSizeUnit );
|
m->setSizeUnit( mSizeUnit );
|
||||||
m->setSizeMapUnitScale( mSizeMapUnitScale );
|
m->setSizeMapUnitScale( mSizeMapUnitScale );
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#define DEFAULT_SIMPLEMARKER_NAME "circle"
|
#define DEFAULT_SIMPLEMARKER_NAME "circle"
|
||||||
#define DEFAULT_SIMPLEMARKER_COLOR QColor(255,0,0)
|
#define DEFAULT_SIMPLEMARKER_COLOR QColor(255,0,0)
|
||||||
#define DEFAULT_SIMPLEMARKER_BORDERCOLOR QColor(0,0,0)
|
#define DEFAULT_SIMPLEMARKER_BORDERCOLOR QColor(0,0,0)
|
||||||
|
#define DEFAULT_SIMPLEMARKER_JOINSTYLE Qt::BevelJoin
|
||||||
#define DEFAULT_SIMPLEMARKER_SIZE DEFAULT_POINT_SIZE
|
#define DEFAULT_SIMPLEMARKER_SIZE DEFAULT_POINT_SIZE
|
||||||
#define DEFAULT_SIMPLEMARKER_ANGLE 0
|
#define DEFAULT_SIMPLEMARKER_ANGLE 0
|
||||||
|
|
||||||
@ -34,12 +35,24 @@
|
|||||||
class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
|
class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/** Constructor for QgsSimpleMarkerSymbolLayerV2.
|
||||||
|
* @param name symbol name, should be one of "square", "rectangle", "diamond",
|
||||||
|
* "pentagon", "triangle", "equilateral_triangle", "star", "regular_star", "arrow",
|
||||||
|
* "circle", "cross", "cross2", "line", "x", "arrowhead", "filled_arrowhead"
|
||||||
|
* @param color fill color for symbol
|
||||||
|
* @param borderColor border color for symbol
|
||||||
|
* @param size symbol size (in mm)
|
||||||
|
* @param angle symbol rotation angle
|
||||||
|
* @param scaleMethod scaling method for data defined scaling
|
||||||
|
* @param penJoinStyle join style for outline pen
|
||||||
|
*/
|
||||||
QgsSimpleMarkerSymbolLayerV2( const QString& name = DEFAULT_SIMPLEMARKER_NAME,
|
QgsSimpleMarkerSymbolLayerV2( const QString& name = DEFAULT_SIMPLEMARKER_NAME,
|
||||||
const QColor& color = DEFAULT_SIMPLEMARKER_COLOR,
|
const QColor& color = DEFAULT_SIMPLEMARKER_COLOR,
|
||||||
const QColor& borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
|
const QColor& borderColor = DEFAULT_SIMPLEMARKER_BORDERCOLOR,
|
||||||
double size = DEFAULT_SIMPLEMARKER_SIZE,
|
double size = DEFAULT_SIMPLEMARKER_SIZE,
|
||||||
double angle = DEFAULT_SIMPLEMARKER_ANGLE,
|
double angle = DEFAULT_SIMPLEMARKER_ANGLE,
|
||||||
QgsSymbolV2::ScaleMethod scaleMethod = DEFAULT_SCALE_METHOD );
|
QgsSymbolV2::ScaleMethod scaleMethod = DEFAULT_SCALE_METHOD,
|
||||||
|
Qt::PenJoinStyle penJoinStyle = DEFAULT_SIMPLEMARKER_JOINSTYLE );
|
||||||
|
|
||||||
// static stuff
|
// static stuff
|
||||||
|
|
||||||
@ -70,9 +83,20 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
|
|||||||
QColor borderColor() const { return mBorderColor; }
|
QColor borderColor() const { return mBorderColor; }
|
||||||
void setBorderColor( const QColor& color ) { mBorderColor = color; }
|
void setBorderColor( const QColor& color ) { mBorderColor = color; }
|
||||||
|
|
||||||
|
/** Get outline join style.
|
||||||
|
* @note added in 2.4 */
|
||||||
Qt::PenStyle outlineStyle() const { return mOutlineStyle; }
|
Qt::PenStyle outlineStyle() const { return mOutlineStyle; }
|
||||||
|
/** Set outline join style.
|
||||||
|
* @note added in 2.4 */
|
||||||
void setOutlineStyle( Qt::PenStyle outlineStyle ) { mOutlineStyle = outlineStyle; }
|
void setOutlineStyle( Qt::PenStyle outlineStyle ) { mOutlineStyle = outlineStyle; }
|
||||||
|
|
||||||
|
/** Get outline join style.
|
||||||
|
* @note added in 2.16 */
|
||||||
|
Qt::PenJoinStyle penJoinStyle() const { return mPenJoinStyle; }
|
||||||
|
/** Set outline join style.
|
||||||
|
* @note added in 2.16 */
|
||||||
|
void setPenJoinStyle( Qt::PenJoinStyle style ) { mPenJoinStyle = style; }
|
||||||
|
|
||||||
/** Get outline color.
|
/** Get outline color.
|
||||||
* @note added in 2.1 */
|
* @note added in 2.1 */
|
||||||
QColor outlineColor() const override { return borderColor(); }
|
QColor outlineColor() const override { return borderColor(); }
|
||||||
@ -122,6 +146,7 @@ class CORE_EXPORT QgsSimpleMarkerSymbolLayerV2 : public QgsMarkerSymbolLayerV2
|
|||||||
double mOutlineWidth;
|
double mOutlineWidth;
|
||||||
QgsSymbolV2::OutputUnit mOutlineWidthUnit;
|
QgsSymbolV2::OutputUnit mOutlineWidthUnit;
|
||||||
QgsMapUnitScale mOutlineWidthMapUnitScale;
|
QgsMapUnitScale mOutlineWidthMapUnitScale;
|
||||||
|
Qt::PenJoinStyle mPenJoinStyle;
|
||||||
QPen mPen;
|
QPen mPen;
|
||||||
QBrush mBrush;
|
QBrush mBrush;
|
||||||
QPolygonF mPolygon;
|
QPolygonF mPolygon;
|
||||||
|
@ -455,6 +455,7 @@ QgsSimpleMarkerSymbolLayerV2Widget::QgsSimpleMarkerSymbolLayerV2Widget( const Qg
|
|||||||
connect( lstNames, SIGNAL( currentRowChanged( int ) ), this, SLOT( setName() ) );
|
connect( lstNames, SIGNAL( currentRowChanged( int ) ), this, SLOT( setName() ) );
|
||||||
connect( btnChangeColorBorder, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setColorBorder( const QColor& ) ) );
|
connect( btnChangeColorBorder, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setColorBorder( const QColor& ) ) );
|
||||||
connect( btnChangeColorFill, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setColorFill( const QColor& ) ) );
|
connect( btnChangeColorFill, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setColorFill( const QColor& ) ) );
|
||||||
|
connect( cboJoinStyle, SIGNAL( currentIndexChanged( int ) ), this, SLOT( penJoinStyleChanged() ) );
|
||||||
connect( spinSize, SIGNAL( valueChanged( double ) ), this, SLOT( setSize() ) );
|
connect( spinSize, SIGNAL( valueChanged( double ) ), this, SLOT( setSize() ) );
|
||||||
connect( spinAngle, SIGNAL( valueChanged( double ) ), this, SLOT( setAngle() ) );
|
connect( spinAngle, SIGNAL( valueChanged( double ) ), this, SLOT( setAngle() ) );
|
||||||
connect( spinOffsetX, SIGNAL( valueChanged( double ) ), this, SLOT( setOffset() ) );
|
connect( spinOffsetX, SIGNAL( valueChanged( double ) ), this, SLOT( setOffset() ) );
|
||||||
@ -503,6 +504,9 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer
|
|||||||
mOutlineWidthSpinBox->blockSignals( true );
|
mOutlineWidthSpinBox->blockSignals( true );
|
||||||
mOutlineWidthSpinBox->setValue( mLayer->outlineWidth() );
|
mOutlineWidthSpinBox->setValue( mLayer->outlineWidth() );
|
||||||
mOutlineWidthSpinBox->blockSignals( false );
|
mOutlineWidthSpinBox->blockSignals( false );
|
||||||
|
cboJoinStyle->blockSignals( true );
|
||||||
|
cboJoinStyle->setPenJoinStyle( mLayer->penJoinStyle() );
|
||||||
|
cboJoinStyle->blockSignals( false );
|
||||||
|
|
||||||
// without blocking signals the value gets changed because of slot setOffset()
|
// without blocking signals the value gets changed because of slot setOffset()
|
||||||
spinOffsetX->blockSignals( true );
|
spinOffsetX->blockSignals( true );
|
||||||
@ -542,6 +546,7 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setSymbolLayer( QgsSymbolLayerV2* layer
|
|||||||
registerDataDefinedButton( mBorderColorDDBtn, "color_border", QgsDataDefinedButton::String, QgsDataDefinedButton::colorAlphaDesc() );
|
registerDataDefinedButton( mBorderColorDDBtn, "color_border", QgsDataDefinedButton::String, QgsDataDefinedButton::colorAlphaDesc() );
|
||||||
registerDataDefinedButton( mOutlineWidthDDBtn, "outline_width", QgsDataDefinedButton::Double, QgsDataDefinedButton::doublePosDesc() );
|
registerDataDefinedButton( mOutlineWidthDDBtn, "outline_width", QgsDataDefinedButton::Double, QgsDataDefinedButton::doublePosDesc() );
|
||||||
registerDataDefinedButton( mOutlineStyleDDBtn, "outline_style", QgsDataDefinedButton::String, QgsDataDefinedButton::lineStyleDesc() );
|
registerDataDefinedButton( mOutlineStyleDDBtn, "outline_style", QgsDataDefinedButton::String, QgsDataDefinedButton::lineStyleDesc() );
|
||||||
|
registerDataDefinedButton( mJoinStyleDDBtn, "join_style", QgsDataDefinedButton::String, QgsDataDefinedButton::penJoinStyleDesc() );
|
||||||
registerDataDefinedButton( mSizeDDBtn, "size", QgsDataDefinedButton::Double, QgsDataDefinedButton::doublePosDesc() );
|
registerDataDefinedButton( mSizeDDBtn, "size", QgsDataDefinedButton::Double, QgsDataDefinedButton::doublePosDesc() );
|
||||||
registerDataDefinedButton( mAngleDDBtn, "angle", QgsDataDefinedButton::Double, QgsDataDefinedButton::double180RotDesc() );
|
registerDataDefinedButton( mAngleDDBtn, "angle", QgsDataDefinedButton::Double, QgsDataDefinedButton::double180RotDesc() );
|
||||||
registerDataDefinedButton( mOffsetDDBtn, "offset", QgsDataDefinedButton::String, QgsDataDefinedButton::doubleXYDesc() );
|
registerDataDefinedButton( mOffsetDDBtn, "offset", QgsDataDefinedButton::String, QgsDataDefinedButton::doubleXYDesc() );
|
||||||
@ -574,6 +579,12 @@ void QgsSimpleMarkerSymbolLayerV2Widget::setColorFill( const QColor& color )
|
|||||||
emit changed();
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsSimpleMarkerSymbolLayerV2Widget::penJoinStyleChanged()
|
||||||
|
{
|
||||||
|
mLayer->setPenJoinStyle( cboJoinStyle->penJoinStyle() );
|
||||||
|
emit changed();
|
||||||
|
}
|
||||||
|
|
||||||
void QgsSimpleMarkerSymbolLayerV2Widget::setSize()
|
void QgsSimpleMarkerSymbolLayerV2Widget::setSize()
|
||||||
{
|
{
|
||||||
mLayer->setSize( spinSize->value() );
|
mLayer->setSize( spinSize->value() );
|
||||||
|
@ -201,6 +201,7 @@ class GUI_EXPORT QgsSimpleMarkerSymbolLayerV2Widget : public QgsSymbolLayerV2Wid
|
|||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void updateAssistantSymbol();
|
void updateAssistantSymbol();
|
||||||
|
void penJoinStyleChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="1">
|
<item row="7" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QgsDoubleSpinBox" name="mOutlineWidthSpinBox">
|
<widget class="QgsDoubleSpinBox" name="mOutlineWidthSpinBox">
|
||||||
@ -295,7 +295,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QLabel" name="mOutlineWidthLabel">
|
<widget class="QLabel" name="mOutlineWidthLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Outline width</string>
|
<string>Outline width</string>
|
||||||
@ -323,6 +323,30 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
|
<property name="text">
|
||||||
|
<string>Join style</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_7">
|
||||||
|
<item>
|
||||||
|
<widget class="QgsPenJoinStyleComboBox" name="cboJoinStyle"/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QgsDataDefinedButton" name="mJoinStyleDDBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
<item>
|
<item>
|
||||||
@ -491,6 +515,11 @@
|
|||||||
<header>qgsunitselectionwidget.h</header>
|
<header>qgsunitselectionwidget.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>QgsPenJoinStyleComboBox</class>
|
||||||
|
<extends>QComboBox</extends>
|
||||||
|
<header>qgspenstylecombobox.h</header>
|
||||||
|
</customwidget>
|
||||||
<customwidget>
|
<customwidget>
|
||||||
<class>QgsPenStyleComboBox</class>
|
<class>QgsPenStyleComboBox</class>
|
||||||
<extends>QComboBox</extends>
|
<extends>QComboBox</extends>
|
||||||
@ -507,9 +536,11 @@
|
|||||||
<tabstop>mSizeUnitWidget</tabstop>
|
<tabstop>mSizeUnitWidget</tabstop>
|
||||||
<tabstop>mOutlineStyleComboBox</tabstop>
|
<tabstop>mOutlineStyleComboBox</tabstop>
|
||||||
<tabstop>mOutlineStyleDDBtn</tabstop>
|
<tabstop>mOutlineStyleDDBtn</tabstop>
|
||||||
|
<tabstop>cboJoinStyle</tabstop>
|
||||||
|
<tabstop>mJoinStyleDDBtn</tabstop>
|
||||||
<tabstop>mOutlineWidthSpinBox</tabstop>
|
<tabstop>mOutlineWidthSpinBox</tabstop>
|
||||||
<tabstop>mOutlineWidthDDBtn</tabstop>
|
<tabstop>mOutlineWidthDDBtn</tabstop>
|
||||||
<tabstop>mOutlineWidthUnitWidget</tabstop>
|
<tabstop>mOutlineWidthUnitWidget</tabstop>
|
||||||
<tabstop>spinAngle</tabstop>
|
<tabstop>spinAngle</tabstop>
|
||||||
<tabstop>mAngleDDBtn</tabstop>
|
<tabstop>mAngleDDBtn</tabstop>
|
||||||
<tabstop>spinOffsetX</tabstop>
|
<tabstop>spinOffsetX</tabstop>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user