Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const > Class Template Reference
+ Inheritance diagram for KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >:

Public Member Functions

SegmentIteratorType bottomSegment () const
 
int col () const
 
 control_point_iterator_impl ()
 
 control_point_iterator_impl (MeshType *mesh, int col, int row, int controlIndex)
 
Mesh::ControlPointIndex controlIndex () const
 
bool isBorderNode () const
 
bool isBottomBorder () const
 
bool isCornerNode () const
 
bool isLeftBorder () const
 
bool isNode () const
 
bool isRightBorder () const
 
bool isTopBorder () const
 
bool isValid () const
 
SegmentIteratorType leftSegment () const
 
NodeTypenode () const
 
Mesh::NodeIndex nodeIndex () const
 
SegmentIteratorType rightSegment () const
 
int row () const
 
control_point_iterator_impl symmetricControl () const
 
SegmentIteratorType topSegment () const
 
Mesh::ControlType type () const
 

Private Types

using MeshType = std::add_const_if_t<is_const, Mesh>
 
using NodeType = std::add_const_if_t<is_const, Node>
 
using PointType = std::add_const_if_t<is_const, QPointF>
 
using SegmentIteratorType = segment_iterator_impl<is_const>
 

Private Member Functions

bool controlIsValid () const
 
void decrement ()
 
PointTypedereference () const
 
bool equal (control_point_iterator_impl const &other) const
 
void increment ()
 
bool nodeIsValid () const
 

Private Attributes

int m_col
 
int m_controlIndex
 
MeshTypem_mesh
 
int m_row
 

Friends

class boost::iterator_core_access
 

Detailed Description

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
class KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >

Definition at line 347 of file KisBezierMesh.h.

Member Typedef Documentation

◆ MeshType

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
using KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::MeshType = std::add_const_if_t<is_const, Mesh>
private

Definition at line 354 of file KisBezierMesh.h.

◆ NodeType

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
using KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::NodeType = std::add_const_if_t<is_const, Node>
private

Definition at line 353 of file KisBezierMesh.h.

◆ PointType

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
using KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::PointType = std::add_const_if_t<is_const, QPointF>
private

Definition at line 352 of file KisBezierMesh.h.

◆ SegmentIteratorType

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
using KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::SegmentIteratorType = segment_iterator_impl<is_const>
private

Definition at line 355 of file KisBezierMesh.h.

Constructor & Destructor Documentation

◆ control_point_iterator_impl() [1/2]

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::control_point_iterator_impl ( )
inline

◆ control_point_iterator_impl() [2/2]

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::control_point_iterator_impl ( MeshType * mesh,
int col,
int row,
int controlIndex )
inline

Member Function Documentation

◆ bottomSegment()

template<typename NodeArg , typename PatchArg >
template<bool is_const>
Mesh< NodeArg, PatchArg >::template control_point_iterator_impl< is_const >::SegmentIteratorType KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::bottomSegment ( ) const

Definition at line 1395 of file KisBezierMesh.h.

1396{
1397 using SegmentIteratorType = typename Mesh<NodeArg, PatchArg>::template control_point_iterator_impl<is_const>::SegmentIteratorType;
1398
1399 if (isBottomBorder()) {
1400 return m_mesh->endSegments();
1401 }
1402
1403 return SegmentIteratorType(m_mesh, m_col, m_row, false);
1404}
segment_iterator_impl< is_const > SegmentIteratorType

◆ col()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
int KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::col ( ) const
inline

◆ controlIndex()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
Mesh::ControlPointIndex KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::controlIndex ( ) const
inline

◆ controlIsValid()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::controlIsValid ( ) const
inlineprivate

Definition at line 473 of file KisBezierMesh.h.

473 {
474 if (m_col == 0 && m_controlIndex == Mesh::ControlType::LeftControl) {
475 return false;
476 }
477
478 if (m_col == m_mesh->m_size.width() - 1 && m_controlIndex == Mesh::ControlType::RightControl) {
479 return false;
480 }
481
482 if (m_row == 0 && m_controlIndex == Mesh::ControlType::TopControl) {
483 return false;
484 }
485
486 if (m_row == m_mesh->m_size.height() - 1 && m_controlIndex == Mesh::ControlType::BottomControl) {
487 return false;
488 }
489
490 return true;
491 }

References KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_col, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_controlIndex, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_mesh, and KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_row.

◆ decrement()

◆ dereference()

◆ equal()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::equal ( control_point_iterator_impl< is_const > const & other) const
inlineprivate

◆ increment()

◆ isBorderNode()

◆ isBottomBorder()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::isBottomBorder ( ) const
inline

◆ isCornerNode()

◆ isLeftBorder()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::isLeftBorder ( ) const
inline

◆ isNode()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::isNode ( ) const
inline

◆ isRightBorder()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::isRightBorder ( ) const
inline

◆ isTopBorder()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::isTopBorder ( ) const
inline

◆ isValid()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::isValid ( ) const
inline

◆ leftSegment()

template<typename NodeArg , typename PatchArg >
template<bool is_const>
Mesh< NodeArg, PatchArg >::template control_point_iterator_impl< is_const >::SegmentIteratorType KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::leftSegment ( ) const

Definition at line 1409 of file KisBezierMesh.h.

1410{
1411 using SegmentIteratorType = typename Mesh<NodeArg, PatchArg>::template control_point_iterator_impl<is_const>::SegmentIteratorType;
1412
1413 if (isLeftBorder()) {
1414 return m_mesh->endSegments();
1415 }
1416
1417 return SegmentIteratorType(m_mesh, m_col - 1, m_row, true);
1418}

◆ node()

◆ nodeIndex()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
Mesh::NodeIndex KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::nodeIndex ( ) const
inline

◆ nodeIsValid()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
bool KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::nodeIsValid ( ) const
inlineprivate

◆ rightSegment()

template<typename NodeArg , typename PatchArg >
template<bool is_const>
Mesh< NodeArg, PatchArg >::template control_point_iterator_impl< is_const >::SegmentIteratorType KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::rightSegment ( ) const

Definition at line 1423 of file KisBezierMesh.h.

1424{
1425 using SegmentIteratorType = typename Mesh<NodeArg, PatchArg>::template control_point_iterator_impl<is_const>::SegmentIteratorType;
1426
1427 if (isRightBorder()) {
1428 return m_mesh->endSegments();
1429 }
1430
1431 return SegmentIteratorType(m_mesh, m_col, m_row, true);
1432}

◆ row()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
int KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::row ( ) const
inline

◆ symmetricControl()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
control_point_iterator_impl KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::symmetricControl ( ) const
inline

Definition at line 426 of file KisBezierMesh.h.

426 {
427 typename Mesh::ControlPointIndex::ControlType newIndex =
429
430 switch (type()) {
433 break;
436 break;
439 break;
442 break;
445 break;
446 }
447
449
450 if (!it.controlIsValid()) {
451 it = m_mesh->endControlPoints();
452 }
453
454 return it;
455 }

References KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::ControlPointIndex::BottomControl, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::controlIsValid(), KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::ControlPointIndex::LeftControl, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_col, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_mesh, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_row, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::ControlPointIndex::Node, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::ControlPointIndex::RightControl, KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::ControlPointIndex::TopControl, and KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::type().

◆ topSegment()

template<typename NodeArg , typename PatchArg >
template<bool is_const>
Mesh< NodeArg, PatchArg >::template control_point_iterator_impl< is_const >::SegmentIteratorType KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::topSegment ( ) const

Definition at line 1381 of file KisBezierMesh.h.

1382{
1383 using SegmentIteratorType = typename Mesh<NodeArg, PatchArg>::template control_point_iterator_impl<is_const>::SegmentIteratorType;
1384
1385 if (isTopBorder()) {
1386 return m_mesh->endSegments();
1387 }
1388
1389 return SegmentIteratorType(m_mesh, m_col, m_row - 1, false);
1390}

◆ type()

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
Mesh::ControlType KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::type ( ) const
inline

Friends And Related Symbol Documentation

◆ boost::iterator_core_access

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
friend class boost::iterator_core_access
friend

Definition at line 467 of file KisBezierMesh.h.

Member Data Documentation

◆ m_col

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
int KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_col
private

Definition at line 535 of file KisBezierMesh.h.

◆ m_controlIndex

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
int KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_controlIndex
private

Definition at line 537 of file KisBezierMesh.h.

◆ m_mesh

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
MeshType* KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_mesh
private

Definition at line 534 of file KisBezierMesh.h.

◆ m_row

template<typename NodeArg = BaseMeshNode, typename PatchArg = KisBezierPatch>
template<bool is_const>
int KisBezierMeshDetails::Mesh< NodeArg, PatchArg >::control_point_iterator_impl< is_const >::m_row
private

Definition at line 536 of file KisBezierMesh.h.


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