|
Krita Source Code Documentation
|
#include <KisBezierTransformMesh.h>
Inheritance diagram for KisBezierTransformMeshDetail::KisBezierTransformMesh:Static Public Member Functions | |
| static QRectF | calcTightSrcRectRangeInParamSpace (const KisBezierPatch &patch, const QRectF &srcSpaceRect, qreal srcPrecision) |
| static void | transformPatch (const KisBezierPatch &patch, const QPoint &srcQImageOffset, const QImage &srcImage, const QPoint &dstQImageOffset, QImage *dstImage) |
| static void | transformPatch (const KisBezierPatch &patch, KisPaintDeviceSP srcDevice, KisPaintDeviceSP dstDevice) |
Private Member Functions | |
| patch_const_iterator | hitTestPatchImpl (const QPointF &pt, QPointF *localPointResult=0) const |
Friends | |
| KRITAIMAGE_EXPORT bool | loadValue (const QDomElement &parent, KisBezierTransformMesh *mesh) |
| KRITAIMAGE_EXPORT void | saveValue (QDomElement *parent, const QString &tag, const KisBezierTransformMesh &mesh) |
Additional Inherited Members | |
Public Types inherited from KisBezierMeshDetails::Mesh< NodeArg, PatchArg > | |
| using | control_point_const_iterator = control_point_iterator_impl<true> |
| using | control_point_iterator = control_point_iterator_impl<false> |
| using | ControlType = typename ControlPointIndex::ControlType |
| using | Node = NodeArg |
| using | Patch = PatchArg |
| using | patch_const_iterator = patch_iterator_impl<true> |
| using | patch_iterator = patch_iterator_impl<false> |
| using | segment_const_iterator = segment_iterator_impl<true> |
| using | segment_iterator = segment_iterator_impl<false> |
| using | SegmentIndex = std::pair<NodeIndex, int> |
Protected Attributes inherited from KisBezierMeshDetails::Mesh< NodeArg, PatchArg > | |
| std::vector< qreal > | m_columns |
| std::vector< Node > | m_nodes |
| QRectF | m_originalRect |
| std::vector< qreal > | m_rows |
| QSize | m_size |
Definition at line 17 of file KisBezierTransformMesh.h.
|
inline |
Definition at line 20 of file KisBezierTransformMesh.h.
|
inline |
Definition at line 23 of file KisBezierTransformMesh.h.
| QRect KisBezierTransformMesh::approxChangeRect | ( | const QRect & | rc | ) | const |
Definition at line 333 of file KisBezierTransformMesh.cpp.
References KisAlgebra2D::accumulateBounds(), calcTightSrcRectRangeInParamSpace(), KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::find(), hitTestPatchInSourceSpace(), KisBezierPatch::localToGlobal(), KisSampleRectIterator::numSamples(), ppVar, and KisBezierPatch::srcBoundingRect().
| QRect KisBezierTransformMesh::approxNeedRect | ( | const QRect & | rc | ) | const |
First, try to approximate the bounding need rect by sampling control points. That is the main property of bezier curves: the resulting curve is always contained inside the control polygon.
TODO: sample the whole wrapping polygon in a more uniform way, that is, sample the whole perimeter of the patch.
the number of points that has actually been sampled from the destination rect
We don't warn if the "found" rect is empty, that is a perfectly valid case.
Definition at line 132 of file KisBezierTransformMesh.cpp.
References KisAlgebra2D::accumulateBounds(), KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::beginPatches(), KisBezierPatch::BL, KisBezierPatch::BL_HC, KisBezierPatch::BL_VC, KisBezierPatch::BR, KisBezierPatch::BR_HC, KisBezierPatch::BR_VC, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::dstBoundingRect(), KisBezierPatch::dstBoundingRect(), dstPoint, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::endPatches(), KisBezierPatch::globalToLocal(), hitTestPatchImpl(), kisDistance(), KisAlgebra2D::lerp(), KisSampleRectIterator::numSamples(), KisBezierPatch::originalRect, KisBezierPatchParamToSourceSampler::point(), KisBezierPatch::points, ppVar, KisBezierPatch::TL, KisBezierPatch::TL_HC, KisBezierPatch::TL_VC, KisBezierPatch::TR, KisBezierPatch::TR_HC, and KisBezierPatch::TR_VC.
|
static |
Approximate the param-space rect that corresponds to srcSpaceRect in the source-space. The resulting param-space rect will fully cover the source-space rect (and will be bigger).
Definition at line 383 of file KisBezierTransformMesh.cpp.
References KisBezierUtils::calcTightSrcRectRangeInParamSpace1D(), KIS_ASSERT_RECOVER_NOOP, KisBezierPatch::originalRect, KisBezierPatch::srcBoundingRect(), KisBezierPatchParamToSourceSampler::xRange(), and KisBezierPatchParamToSourceSampler::yRange().
| KisBezierTransformMesh::PatchIndex KisBezierTransformMesh::hitTestPatch | ( | const QPointF & | pt, |
| QPointF * | localPointResult = 0 ) const |
Definition at line 43 of file KisBezierTransformMesh.cpp.
References hitTestPatchImpl(), and KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::patch_iterator_impl< is_const >::patchIndex().
|
private |
Definition at line 16 of file KisBezierTransformMesh.cpp.
References KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::beginPatches(), KisBezierUtils::calculateLocalPos(), and KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::endPatches().
| QRect KisBezierTransformMesh::hitTestPatchInSourceSpace | ( | const QRectF & | rect | ) | const |
Definition at line 48 of file KisBezierTransformMesh.cpp.
References KisAlgebra2D::absoluteToRelative(), distance(), KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::m_columns, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::m_originalRect, and KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::m_rows.
| void KisBezierTransformMesh::transformMesh | ( | const QPoint & | srcQImageOffset, |
| const QImage & | srcImage, | ||
| const QPoint & | dstQImageOffset, | ||
| QImage * | dstImage ) const |
Definition at line 118 of file KisBezierTransformMesh.cpp.
References KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::beginPatches(), KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::endPatches(), and transformPatch().
| void KisBezierTransformMesh::transformMesh | ( | KisPaintDeviceSP | srcDevice, |
| KisPaintDeviceSP | dstDevice ) const |
Definition at line 125 of file KisBezierTransformMesh.cpp.
References KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::beginPatches(), KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::endPatches(), and transformPatch().
|
static |
Definition at line 74 of file KisBezierTransformMesh.cpp.
References KisBezierPatch::dstBoundingRect(), GridIterationTools::iterateThroughGrid(), KIS_SAFE_ASSERT_RECOVER_NOOP, and KisBezierPatch::sampleRegularGrid().
|
static |
Definition at line 98 of file KisBezierTransformMesh.cpp.
References GridIterationTools::iterateThroughGrid(), and KisBezierPatch::sampleRegularGrid().
|
friend |
|
friend |