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

Public Types

enum  Mode {
  OVER_POINT = 0 , OVER_POINT_SYMMETRIC , OVER_NODE , OVER_NODE_WHOLE_LINE ,
  OVER_SEGMENT , OVER_SEGMENT_SYMMETRIC , OVER_PATCH , OVER_PATCH_LOCKED ,
  SPLIT_SEGMENT , MULTIPLE_POINT_SELECTION , MOVE_MODE , ROTATE_MODE ,
  SCALE_MODE , NOTHING
}
 

Public Member Functions

QTransform imageToThumb (bool useFlakeOptimization)
 
 Private (KisMeshTransformStrategy *_q, const KisCoordinatesConverter *_converter, ToolTransformArgs &_currentArgs, TransformTransactionProperties &_transaction)
 
void recalculateTransformations ()
 

Public Attributes

const KisCoordinatesConverterconverter
 
ToolTransformArgscurrentArgs
 
boost::optional< KisBezierTransformMesh::ControlPointIndexhoveredControl
 
QPointF hoveredHandleOffset
 
boost::optional< KisBezierTransformMesh::PatchIndexhoveredPatch
 
boost::optional< KisBezierTransformMesh::SegmentIndexhoveredSegment
 
KisBezierTransformMesh initialMeshState
 
QPointF initialRotationCenter
 
qreal initialSelectionMaxDimension = 0.0
 
QSize lastMeshSize
 
QPointF lastMousePos
 
QPointF localPatchPosition
 
qreal localSegmentPosition = 0.0
 
Mode mode = NOTHING
 
QPointF mouseClickPos
 
QPointF paintingOffset
 
QTransform paintingTransform
 
bool pointWasDragged = false
 
KisMeshTransformStrategy *const q
 
KisSignalCompressor recalculateSignalCompressor
 
QSet< KisBezierTransformMesh::NodeIndexselectedNodes
 
TransformTransactionPropertiestransaction
 
QImage transformedImage
 

Detailed Description

Definition at line 27 of file kis_mesh_transform_strategy.cpp.

Member Enumeration Documentation

◆ Mode

Enumerator
OVER_POINT 
OVER_POINT_SYMMETRIC 
OVER_NODE 
OVER_NODE_WHOLE_LINE 
OVER_SEGMENT 
OVER_SEGMENT_SYMMETRIC 
OVER_PATCH 
OVER_PATCH_LOCKED 
SPLIT_SEGMENT 
MULTIPLE_POINT_SELECTION 
MOVE_MODE 
ROTATE_MODE 
SCALE_MODE 
NOTHING 

Definition at line 43 of file kis_mesh_transform_strategy.cpp.

43 {
44 OVER_POINT = 0,
58 };

Constructor & Destructor Documentation

◆ Private()

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

Definition at line 29 of file kis_mesh_transform_strategy.cpp.

Member Function Documentation

◆ imageToThumb()

QTransform KisMeshTransformStrategy::Private::imageToThumb ( bool useFlakeOptimization)

◆ recalculateTransformations()

void KisMeshTransformStrategy::Private::recalculateTransformations ( )

Definition at line 814 of file kis_mesh_transform_strategy.cpp.

815{
816 const QTransform scaleTransform = KisTransformUtils::imageToFlakeTransform(converter);
817
818 const QTransform resultThumbTransform = q->thumbToImageTransform() * scaleTransform;
819 const qreal scale = KisTransformUtils::scaleFromAffineMatrix(resultThumbTransform);
820 const bool useFlakeOptimization = scale < 1.0 &&
821 !KisTransformUtils::thumbnailTooSmall(resultThumbTransform, q->originalImage().rect());
822
823 const QTransform imageToThumb = this->imageToThumb(useFlakeOptimization);
824 KIS_SAFE_ASSERT_RECOVER_RETURN(imageToThumb.type() <= QTransform::TxScale);
825
827 mesh.transformSrcAndDst(imageToThumb);
828
830
831 if (!q->originalImage().isNull()) {
832 const QPointF origTLInFlake = imageToThumb.map(transaction.originalTopLeft());
833 if (useFlakeOptimization) {
834 transformedImage = q->originalImage().transformed(resultThumbTransform);
835 paintingTransform = QTransform();
836 } else {
838 paintingTransform = resultThumbTransform;
839
840 }
841
842 const QRect dstImageRect = mesh.dstBoundingRect().toAlignedRect();
843 QImage dstImage(dstImageRect.size(), transformedImage.format());
844 dstImage.fill(0);
845
846 mesh.transformMesh(origTLInFlake.toPoint(), transformedImage,
847 dstImageRect.topLeft(), &dstImage);
848
849 transformedImage = dstImage;
850 paintingOffset = dstImageRect.topLeft();
851
852 } else {
855 paintingTransform = resultThumbTransform;
856 }
857
858 Q_EMIT q->requestCanvasUpdate();
860}
static qreal scaleFromAffineMatrix(const QTransform &t)
static QTransform imageToFlakeTransform(const KisCoordinatesConverter *converter)
static bool thumbnailTooSmall(const QTransform &resultThumbTransform, const QRect &originalImageRect)
const KisBezierTransformMesh * meshTransform() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
QTransform imageToThumb(bool useFlakeOptimization)

References KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::dstBoundingRect(), KisTransformUtils::imageToFlakeTransform(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisTransformUtils::scaleFromAffineMatrix(), KisTransformUtils::thumbnailTooSmall(), KisBezierTransformMeshDetail::KisBezierTransformMesh::transformMesh(), and KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::transformSrcAndDst().

Member Data Documentation

◆ converter

const KisCoordinatesConverter* KisMeshTransformStrategy::Private::converter

Definition at line 61 of file kis_mesh_transform_strategy.cpp.

◆ currentArgs

ToolTransformArgs& KisMeshTransformStrategy::Private::currentArgs

Definition at line 62 of file kis_mesh_transform_strategy.cpp.

◆ hoveredControl

boost::optional<KisBezierTransformMesh::ControlPointIndex> KisMeshTransformStrategy::Private::hoveredControl

Definition at line 67 of file kis_mesh_transform_strategy.cpp.

◆ hoveredHandleOffset

QPointF KisMeshTransformStrategy::Private::hoveredHandleOffset

Definition at line 71 of file kis_mesh_transform_strategy.cpp.

◆ hoveredPatch

boost::optional<KisBezierTransformMesh::PatchIndex> KisMeshTransformStrategy::Private::hoveredPatch

Definition at line 68 of file kis_mesh_transform_strategy.cpp.

◆ hoveredSegment

boost::optional<KisBezierTransformMesh::SegmentIndex> KisMeshTransformStrategy::Private::hoveredSegment

Definition at line 66 of file kis_mesh_transform_strategy.cpp.

◆ initialMeshState

KisBezierTransformMesh KisMeshTransformStrategy::Private::initialMeshState

Definition at line 77 of file kis_mesh_transform_strategy.cpp.

◆ initialRotationCenter

QPointF KisMeshTransformStrategy::Private::initialRotationCenter

Definition at line 75 of file kis_mesh_transform_strategy.cpp.

◆ initialSelectionMaxDimension

qreal KisMeshTransformStrategy::Private::initialSelectionMaxDimension = 0.0

Definition at line 76 of file kis_mesh_transform_strategy.cpp.

◆ lastMeshSize

QSize KisMeshTransformStrategy::Private::lastMeshSize

Definition at line 81 of file kis_mesh_transform_strategy.cpp.

◆ lastMousePos

QPointF KisMeshTransformStrategy::Private::lastMousePos

Definition at line 80 of file kis_mesh_transform_strategy.cpp.

◆ localPatchPosition

QPointF KisMeshTransformStrategy::Private::localPatchPosition

Definition at line 70 of file kis_mesh_transform_strategy.cpp.

◆ localSegmentPosition

qreal KisMeshTransformStrategy::Private::localSegmentPosition = 0.0

Definition at line 69 of file kis_mesh_transform_strategy.cpp.

◆ mode

Mode KisMeshTransformStrategy::Private::mode = NOTHING

Definition at line 59 of file kis_mesh_transform_strategy.cpp.

◆ mouseClickPos

QPointF KisMeshTransformStrategy::Private::mouseClickPos

Definition at line 73 of file kis_mesh_transform_strategy.cpp.

◆ paintingOffset

QPointF KisMeshTransformStrategy::Private::paintingOffset

Definition at line 86 of file kis_mesh_transform_strategy.cpp.

◆ paintingTransform

QTransform KisMeshTransformStrategy::Private::paintingTransform

Definition at line 85 of file kis_mesh_transform_strategy.cpp.

◆ pointWasDragged

bool KisMeshTransformStrategy::Private::pointWasDragged = false

Definition at line 79 of file kis_mesh_transform_strategy.cpp.

◆ q

KisMeshTransformStrategy* const KisMeshTransformStrategy::Private::q

Definition at line 41 of file kis_mesh_transform_strategy.cpp.

◆ recalculateSignalCompressor

KisSignalCompressor KisMeshTransformStrategy::Private::recalculateSignalCompressor

Definition at line 83 of file kis_mesh_transform_strategy.cpp.

◆ selectedNodes

QSet<KisBezierTransformMesh::NodeIndex> KisMeshTransformStrategy::Private::selectedNodes

Definition at line 65 of file kis_mesh_transform_strategy.cpp.

◆ transaction

TransformTransactionProperties& KisMeshTransformStrategy::Private::transaction

Definition at line 63 of file kis_mesh_transform_strategy.cpp.

◆ transformedImage

QImage KisMeshTransformStrategy::Private::transformedImage

Definition at line 87 of file kis_mesh_transform_strategy.cpp.


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