36  QPainter *painter = context.
painter();
 
   41  const QTransform t = createTransform( context );
 
   42  painter->setTransform( t, 
true );
 
 
   49  props.insert( QStringLiteral( 
"reflect_x" ), mReflectX ? 
"1" : 
"0" );
 
   50  props.insert( QStringLiteral( 
"reflect_y" ), mReflectY ? 
"1" : 
"0" );
 
   51  props.insert( QStringLiteral( 
"scale_x" ), QString::number( mScaleX ) );
 
   52  props.insert( QStringLiteral( 
"scale_y" ), QString::number( mScaleY ) );
 
   53  props.insert( QStringLiteral( 
"rotation" ), QString::number( mRotation ) );
 
   54  props.insert( QStringLiteral( 
"shear_x" ), QString::number( mShearX ) );
 
   55  props.insert( QStringLiteral( 
"shear_y" ), QString::number( mShearY ) );
 
   56  props.insert( QStringLiteral( 
"translate_x" ), QString::number( mTranslateX ) );
 
   57  props.insert( QStringLiteral( 
"translate_y" ), QString::number( mTranslateY ) );
 
   60  props.insert( QStringLiteral( 
"enabled" ), 
mEnabled ? 
"1" : 
"0" );
 
   61  props.insert( QStringLiteral( 
"draw_mode" ), QString::number( 
int( 
mDrawMode ) ) );
 
 
   67  mEnabled = props.value( QStringLiteral( 
"enabled" ), QStringLiteral( 
"1" ) ).toInt();
 
   69  mReflectX = props.value( QStringLiteral( 
"reflect_x" ), QStringLiteral( 
"0" ) ).toInt();
 
   70  mReflectY = props.value( QStringLiteral( 
"reflect_y" ), QStringLiteral( 
"0" ) ).toInt();
 
   71  mScaleX = props.value( QStringLiteral( 
"scale_x" ), QStringLiteral( 
"1.0" ) ).toDouble();
 
   72  mScaleY = props.value( QStringLiteral( 
"scale_y" ), QStringLiteral( 
"1.0" ) ).toDouble();
 
   73  mRotation = props.value( QStringLiteral( 
"rotation" ), QStringLiteral( 
"0.0" ) ).toDouble();
 
   74  mShearX = props.value( QStringLiteral( 
"shear_x" ), QStringLiteral( 
"0.0" ) ).toDouble();
 
   75  mShearY = props.value( QStringLiteral( 
"shear_y" ), QStringLiteral( 
"0.0" ) ).toDouble();
 
   76  mTranslateX = props.value( QStringLiteral( 
"translate_x" ), QStringLiteral( 
"0.0" ) ).toDouble();
 
   77  mTranslateY = props.value( QStringLiteral( 
"translate_y" ), QStringLiteral( 
"0.0" ) ).toDouble();
 
 
   90  const QTransform t = createTransform( context );
 
   91  return t.mapRect( rect );
 
 
   94QTransform QgsTransformEffect::createTransform( 
const QgsRenderContext &context )
 const 
   98  const QPicture &pic = 
source();
 
  102  const int width = pic.boundingRect().width();
 
  103  const int height = pic.boundingRect().height();
 
  104  const int top = pic.boundingRect().top();
 
  105  const int left = pic.boundingRect().left();
 
  116  t.rotate( mRotation );
 
  117  t.shear( mShearX, mShearY );
 
  118  t.scale( mScaleX, mScaleY );
 
  120  if ( mReflectX || mReflectY )
 
  122    t.scale( mReflectX ? -1 : 1, mReflectY ? -1 : 1 );
 
  125  t.translate( -left - width / 2.0,
 
  126               -top - height / 2.0 );
 
Base class for visual effects which can be applied to QPicture drawings.
 
void drawSource(QPainter &painter)
Draws the source QPicture onto the specified painter.
 
const QPicture & source() const
Returns the source QPicture.
 
bool enabled() const
Returns whether the effect is enabled.
 
DrawMode
Drawing modes for effects.
 
Contains information about the context of a rendering operation.
 
double convertToPainterUnits(double size, Qgis::RenderUnit unit, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::RenderSubcomponentProperty property=Qgis::RenderSubcomponentProperty::Generic) const
Converts a size from the specified units to painter units (pixels).
 
QPainter * painter()
Returns the destination QPainter for the render operation.
 
Scoped object for saving and restoring a QPainter object's state.
 
static QString encodeMapUnitScale(const QgsMapUnitScale &mapUnitScale)
 
static QgsMapUnitScale decodeMapUnitScale(const QString &str)
 
static Q_INVOKABLE Qgis::RenderUnit decodeRenderUnit(const QString &string, bool *ok=nullptr)
Decodes a render unit from a string.
 
static Q_INVOKABLE QString encodeUnit(Qgis::DistanceUnit unit)
Encodes a distance unit to a string.