36 QPainter *painter = context.
painter();
41 QTransform t = createTransform( context );
42 painter->setTransform( t,
true );
51 props.insert( QStringLiteral(
"reflect_x" ), mReflectX ?
"1" :
"0" );
52 props.insert( QStringLiteral(
"reflect_y" ), mReflectY ?
"1" :
"0" );
53 props.insert( QStringLiteral(
"scale_x" ), QString::number( mScaleX ) );
54 props.insert( QStringLiteral(
"scale_y" ), QString::number( mScaleY ) );
55 props.insert( QStringLiteral(
"rotation" ), QString::number( mRotation ) );
56 props.insert( QStringLiteral(
"shear_x" ), QString::number( mShearX ) );
57 props.insert( QStringLiteral(
"shear_y" ), QString::number( mShearY ) );
58 props.insert( QStringLiteral(
"translate_x" ), QString::number( mTranslateX ) );
59 props.insert( QStringLiteral(
"translate_y" ), QString::number( mTranslateY ) );
62 props.insert( QStringLiteral(
"enabled" ),
mEnabled ?
"1" :
"0" );
63 props.insert( QStringLiteral(
"draw_mode" ), QString::number(
int(
mDrawMode ) ) );
69 mEnabled = props.value( QStringLiteral(
"enabled" ), QStringLiteral(
"1" ) ).toInt();
71 mReflectX = props.value( QStringLiteral(
"reflect_x" ), QStringLiteral(
"0" ) ).toInt();
72 mReflectY = props.value( QStringLiteral(
"reflect_y" ), QStringLiteral(
"0" ) ).toInt();
73 mScaleX = props.value( QStringLiteral(
"scale_x" ), QStringLiteral(
"1.0" ) ).toDouble();
74 mScaleY = props.value( QStringLiteral(
"scale_y" ), QStringLiteral(
"1.0" ) ).toDouble();
75 mRotation = props.value( QStringLiteral(
"rotation" ), QStringLiteral(
"0.0" ) ).toDouble();
76 mShearX = props.value( QStringLiteral(
"shear_x" ), QStringLiteral(
"0.0" ) ).toDouble();
77 mShearY = props.value( QStringLiteral(
"shear_y" ), QStringLiteral(
"0.0" ) ).toDouble();
78 mTranslateX = props.value( QStringLiteral(
"translate_x" ), QStringLiteral(
"0.0" ) ).toDouble();
79 mTranslateY = props.value( QStringLiteral(
"translate_y" ), QStringLiteral(
"0.0" ) ).toDouble();
92 QTransform t = createTransform( context );
93 return t.mapRect( rect );
96 QTransform QgsTransformEffect::createTransform(
const QgsRenderContext &context )
const 103 int width =
source()->boundingRect().width();
104 int height =
source()->boundingRect().height();
105 int top =
source()->boundingRect().top();
106 int left =
source()->boundingRect().left();
114 t.translate( translateX + left + width / 2.0,
115 translateY + top + height / 2.0 );
117 t.rotate( mRotation );
118 t.shear( mShearX, mShearY );
119 t.scale( mScaleX, mScaleY );
121 if ( mReflectX || mReflectY )
123 t.scale( mReflectX ? -1 : 1, mReflectY ? -1 : 1 );
126 t.translate( -left - width / 2.0,
127 -top - height / 2.0 );
double convertToPainterUnits(double size, QgsUnitTypes::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale()) const
Converts a size from the specified units to painter units (pixels).
bool enabled() const
Returns whether the effect is enabled.
Base class for visual effects which can be applied to QPicture drawings.
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
QMap< QString, QString > QgsStringMap
static Q_INVOKABLE QgsUnitTypes::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string.
DrawMode
Drawing modes for effects.
static Q_INVOKABLE QString encodeUnit(QgsUnitTypes::DistanceUnit unit)
Encodes a distance unit to a string.
Contains information about the context of a rendering operation.
QPainter * painter()
Returns the destination QPainter for the render operation.
void drawSource(QPainter &painter)
Draws the source QPicture onto the specified painter.
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
const QPicture * source() const
Returns the source QPicture.