Krita Source Code Documentation
Loading...
Searching...
No Matches
KisWarpTransformStrategy::Private Struct Reference

Public Types

enum  Mode {
  OVER_POINT = 0 , MULTIPLE_POINT_SELECTION , MOVE_MODE , ROTATE_MODE ,
  SCALE_MODE , NOTHING
}
 

Public Member Functions

QVector< QPointF * > getSelectedPoints (QPointF *center, bool limitToSelectedOnly=false) const
 
QPointF imageToThumb (const QPointF &pt, bool useFlakeOptimization)
 
 Private (KisWarpTransformStrategy *_q, const KisCoordinatesConverter *_converter, ToolTransformArgs &_currentArgs, TransformTransactionProperties &_transaction)
 
void recalculateTransformations ()
 
bool shouldCloseTheCage () const
 

Public Attributes

bool clipOriginalPointsPosition {true}
 
bool closeOnStartPointClick {false}
 
const KisCoordinatesConverterconverter {0}
 standard members ///
 
ToolTransformArgscurrentArgs
 
bool drawConnectionLines {false}
 
bool drawOrigPoints {false}
 
bool drawTransfPoints {true}
 
QTransform handlesTransform
 
QPointF lastMousePos
 
int lastNumPoints {0}
 
Mode mode {NOTHING}
 
QPointF paintingOffset
 
QTransform paintingTransform
 
int pointIndexUnderCursor {0}
 
QPointF pointPosOnClick
 
QVector< int > pointsInAction
 
bool pointWasDragged {false}
 
KisWarpTransformStrategy *const q
 
KisSignalCompressor recalculateSignalCompressor
 
TransformTransactionPropertiestransaction
 
QImage transformedImage
 custom members ///
 
TransformType transformType = TransformType::WARP_TRANSFORM
 

Detailed Description

Definition at line 27 of file kis_warp_transform_strategy.cpp.

Member Enumeration Documentation

◆ Mode

Constructor & Destructor Documentation

◆ Private()

KisWarpTransformStrategy::Private::Private ( KisWarpTransformStrategy * _q,
const KisCoordinatesConverter * _converter,
ToolTransformArgs & _currentArgs,
TransformTransactionProperties & _transaction )
inline

Definition at line 29 of file kis_warp_transform_strategy.cpp.

33 : q(_q),
34 converter(_converter),
35 currentArgs(_currentArgs),
36 transaction(_transaction),
38 {
39 }
TransformTransactionProperties & transaction
const KisCoordinatesConverter * converter
standard members ///

Member Function Documentation

◆ getSelectedPoints()

QVector< QPointF * > KisWarpTransformStrategy::Private::getSelectedPoints ( QPointF * center,
bool limitToSelectedOnly = false ) const

Definition at line 429 of file kis_warp_transform_strategy.cpp.

430{
432
433 QRectF boundingRect;
434 QVector<QPointF*> selectedPoints;
435 if (limitToSelectedOnly || pointsInAction.size() > 1) {
436 Q_FOREACH (int index, pointsInAction) {
437 selectedPoints << &points[index];
438 KisAlgebra2D::accumulateBounds(points[index], &boundingRect);
439 }
440 } else {
441 QVector<QPointF>::iterator it = points.begin();
442 QVector<QPointF>::iterator end = points.end();
443 for (; it != end; ++it) {
444 selectedPoints << &(*it);
445 KisAlgebra2D::accumulateBounds(*it, &boundingRect);
446 }
447 }
448
449 *center = boundingRect.center();
450 return selectedPoints;
451}
QVector< QPointF > & refTransformedPoints()
void accumulateBounds(const Point &pt, Rect *bounds)

References KisAlgebra2D::accumulateBounds(), currentArgs, pointsInAction, and ToolTransformArgs::refTransformedPoints().

◆ imageToThumb()

QPointF KisWarpTransformStrategy::Private::imageToThumb ( const QPointF & pt,
bool useFlakeOptimization )
inline

Definition at line 572 of file kis_warp_transform_strategy.cpp.

573{
574 return useFlakeOptimization ? converter->imageToDocument(converter->documentToFlake((pt))) : q->thumbToImageTransform().inverted().map(pt);
575}
_Private::Traits< T >::Result documentToFlake(const T &obj) const
_Private::Traits< T >::Result imageToDocument(const T &obj) const

◆ recalculateTransformations()

void KisWarpTransformStrategy::Private::recalculateTransformations ( )

Definition at line 577 of file kis_warp_transform_strategy.cpp.

578{
579 QTransform scaleTransform = KisTransformUtils::imageToFlakeTransform(converter);
580
581 QTransform resultThumbTransform = q->thumbToImageTransform() * scaleTransform;
582 qreal scale = KisTransformUtils::scaleFromAffineMatrix(resultThumbTransform);
583 bool useFlakeOptimization = scale < 1.0 &&
584 !KisTransformUtils::thumbnailTooSmall(resultThumbTransform, q->originalImage().rect());
585
586 QVector<QPointF> thumbOrigPoints(currentArgs.numPoints());
587 QVector<QPointF> thumbTransfPoints(currentArgs.numPoints());
588
589 for (int i = 0; i < currentArgs.numPoints(); ++i) {
590 thumbOrigPoints[i] = imageToThumb(currentArgs.origPoints()[i], useFlakeOptimization);
591 thumbTransfPoints[i] = imageToThumb(currentArgs.transfPoints()[i], useFlakeOptimization);
592 }
593
595
596 if (!q->originalImage().isNull() && !currentArgs.isEditingTransformPoints()) {
597 QPointF origTLInFlake = imageToThumb(transaction.originalTopLeft(), useFlakeOptimization);
598
599 if (useFlakeOptimization) {
600 transformedImage = q->originalImage().transformed(resultThumbTransform);
601 paintingTransform = QTransform();
602 } else {
604 paintingTransform = resultThumbTransform;
605
606 }
607
610 thumbOrigPoints,
611 thumbTransfPoints,
612 origTLInFlake,
614 } else {
617 paintingTransform = resultThumbTransform;
618 }
619
620 handlesTransform = scaleTransform;
621 Q_EMIT q->requestCanvasUpdate();
623}
static qreal scaleFromAffineMatrix(const QTransform &t)
static QTransform imageToFlakeTransform(const KisCoordinatesConverter *converter)
static bool thumbnailTooSmall(const QTransform &resultThumbTransform, const QRect &originalImageRect)
virtual QImage calculateTransformedImage(ToolTransformArgs &currentArgs, const QImage &srcImage, const QVector< QPointF > &origPoints, const QVector< QPointF > &transfPoints, const QPointF &srcOffset, QPointF *dstOffset)
const QVector< QPointF > & origPoints() const
bool isEditingTransformPoints() const
const QVector< QPointF > & transfPoints() const
QPointF imageToThumb(const QPointF &pt, bool useFlakeOptimization)

References KisTransformUtils::imageToFlakeTransform(), KisTransformUtils::scaleFromAffineMatrix(), and KisTransformUtils::thumbnailTooSmall().

◆ shouldCloseTheCage()

bool KisWarpTransformStrategy::Private::shouldCloseTheCage ( ) const

Member Data Documentation

◆ clipOriginalPointsPosition

bool KisWarpTransformStrategy::Private::clipOriginalPointsPosition {true}

Definition at line 80 of file kis_warp_transform_strategy.cpp.

80{true};

◆ closeOnStartPointClick

bool KisWarpTransformStrategy::Private::closeOnStartPointClick {false}

Definition at line 79 of file kis_warp_transform_strategy.cpp.

79{false};

◆ converter

const KisCoordinatesConverter* KisWarpTransformStrategy::Private::converter {0}

standard members ///

Definition at line 45 of file kis_warp_transform_strategy.cpp.

45{0};

◆ currentArgs

ToolTransformArgs& KisWarpTransformStrategy::Private::currentArgs

Definition at line 48 of file kis_warp_transform_strategy.cpp.

◆ drawConnectionLines

bool KisWarpTransformStrategy::Private::drawConnectionLines {false}

Definition at line 76 of file kis_warp_transform_strategy.cpp.

76{false}; // useful while developing

◆ drawOrigPoints

bool KisWarpTransformStrategy::Private::drawOrigPoints {false}

Definition at line 77 of file kis_warp_transform_strategy.cpp.

77{false};

◆ drawTransfPoints

bool KisWarpTransformStrategy::Private::drawTransfPoints {true}

Definition at line 78 of file kis_warp_transform_strategy.cpp.

78{true};

◆ handlesTransform

QTransform KisWarpTransformStrategy::Private::handlesTransform

Definition at line 55 of file kis_warp_transform_strategy.cpp.

◆ lastMousePos

QPointF KisWarpTransformStrategy::Private::lastMousePos

Definition at line 84 of file kis_warp_transform_strategy.cpp.

◆ lastNumPoints

int KisWarpTransformStrategy::Private::lastNumPoints {0}

Definition at line 74 of file kis_warp_transform_strategy.cpp.

74{0};

◆ mode

Mode KisWarpTransformStrategy::Private::mode {NOTHING}

Definition at line 71 of file kis_warp_transform_strategy.cpp.

71{NOTHING};

◆ paintingOffset

QPointF KisWarpTransformStrategy::Private::paintingOffset

Definition at line 53 of file kis_warp_transform_strategy.cpp.

◆ paintingTransform

QTransform KisWarpTransformStrategy::Private::paintingTransform

Definition at line 52 of file kis_warp_transform_strategy.cpp.

◆ pointIndexUnderCursor

int KisWarpTransformStrategy::Private::pointIndexUnderCursor {0}

Definition at line 61 of file kis_warp_transform_strategy.cpp.

61{0};

◆ pointPosOnClick

QPointF KisWarpTransformStrategy::Private::pointPosOnClick

Definition at line 81 of file kis_warp_transform_strategy.cpp.

◆ pointsInAction

QVector<int> KisWarpTransformStrategy::Private::pointsInAction

Definition at line 73 of file kis_warp_transform_strategy.cpp.

◆ pointWasDragged

bool KisWarpTransformStrategy::Private::pointWasDragged {false}

Definition at line 82 of file kis_warp_transform_strategy.cpp.

82{false};

◆ q

KisWarpTransformStrategy* const KisWarpTransformStrategy::Private::q

Definition at line 41 of file kis_warp_transform_strategy.cpp.

◆ recalculateSignalCompressor

KisSignalCompressor KisWarpTransformStrategy::Private::recalculateSignalCompressor

Definition at line 88 of file kis_warp_transform_strategy.cpp.

◆ transaction

TransformTransactionProperties& KisWarpTransformStrategy::Private::transaction

Definition at line 50 of file kis_warp_transform_strategy.cpp.

◆ transformedImage

QImage KisWarpTransformStrategy::Private::transformedImage

custom members ///

Definition at line 59 of file kis_warp_transform_strategy.cpp.

◆ transformType

TransformType KisWarpTransformStrategy::Private::transformType = TransformType::WARP_TRANSFORM

Definition at line 87 of file kis_warp_transform_strategy.cpp.


The documentation for this struct was generated from the following file: