Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSampleRectIterator Class Reference

#include <KisSampleRectIterator.h>

+ Inheritance diagram for KisSampleRectIterator:

Classes

struct  HaltonSampler
 

Public Member Functions

 KisSampleRectIterator ()
 
 KisSampleRectIterator (const KisSampleRectIterator &rhs)
 
 KisSampleRectIterator (const QRectF &rect)
 
 KisSampleRectIterator (KisSampleRectIterator &&rhs)
 
int numSamples () const
 
KisSampleRectIteratoroperator= (const KisSampleRectIterator &rhs)
 
KisSampleRectIteratoroperator= (KisSampleRectIterator &&rhs)
 
 ~KisSampleRectIterator ()
 

Private Member Functions

QPointF dereference () const
 
void increment ()
 

Private Attributes

int m_index = 0
 
QRectF m_rect
 
QSharedDataPointer< HaltonSamplerm_sampler
 

Friends

class boost::iterator_core_access
 

Detailed Description

A simple generator-style iterator that samples the passed rectangle (QRectF) with semi-random points.

The first nine points returned by the iterator correspond to the corners and midpoints of the rectangle. From 10th and further the iterator returns "random" samples inside the rectangle generated by a fixed Halton sequence.

Usage:

while (1) {
const QPointF sampledPoint = *sampler++;
}

Definition at line 37 of file KisSampleRectIterator.h.

Constructor & Destructor Documentation

◆ KisSampleRectIterator() [1/4]

KisSampleRectIterator::KisSampleRectIterator ( )
default

◆ KisSampleRectIterator() [2/4]

KisSampleRectIterator::KisSampleRectIterator ( const QRectF & rect)

Definition at line 31 of file KisSampleRectIterator.cpp.

◆ KisSampleRectIterator() [3/4]

KisSampleRectIterator::KisSampleRectIterator ( const KisSampleRectIterator & rhs)
default

◆ KisSampleRectIterator() [4/4]

KisSampleRectIterator::KisSampleRectIterator ( KisSampleRectIterator && rhs)
default

◆ ~KisSampleRectIterator()

KisSampleRectIterator::~KisSampleRectIterator ( )
default

Member Function Documentation

◆ dereference()

QPointF KisSampleRectIterator::dereference ( ) const
private

Definition at line 52 of file KisSampleRectIterator.cpp.

52 {
53 switch (m_index) {
54 case 0:
55 return m_rect.topLeft();
56 case 1:
57 return m_rect.topRight();
58 case 2:
59 return m_rect.bottomRight();
60 case 3:
61 return m_rect.bottomLeft();
62 case 4:
63 return 0.5 * (m_rect.bottomLeft() + m_rect.topLeft());
64 case 5:
65 return 0.5 * (m_rect.topRight() + m_rect.topLeft());
66 case 6:
67 return 0.5 * (m_rect.topRight() + m_rect.bottomRight());
68 case 7:
69 return 0.5 * (m_rect.bottomLeft() + m_rect.bottomRight());
70 case 8:
71 return m_rect.center();
72 default:
75 QPointF(m_sampler->x.currentValue(), m_sampler->y.currentValue()),
76 m_rect);
77 }
78
79 Q_UNREACHABLE();
80}
QSharedDataPointer< HaltonSampler > m_sampler
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
QPointF relativeToAbsolute(const QPointF &pt, const QRectF &rc)

References KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, m_index, m_rect, m_sampler, and KisAlgebra2D::relativeToAbsolute().

◆ increment()

void KisSampleRectIterator::increment ( )
private

Definition at line 40 of file KisSampleRectIterator.cpp.

40 {
41 m_index++;
42
43 if (m_index >= 9) {
44 if (m_index == 9) {
46 m_sampler = new HaltonSampler();
47 }
48 m_sampler->step();
49 }
50}
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, m_index, and m_sampler.

◆ numSamples()

int KisSampleRectIterator::numSamples ( ) const

Definition at line 36 of file KisSampleRectIterator.cpp.

36 {
37 return m_index + 1;
38}

References m_index.

◆ operator=() [1/2]

KisSampleRectIterator & KisSampleRectIterator::operator= ( const KisSampleRectIterator & rhs)
default

◆ operator=() [2/2]

KisSampleRectIterator & KisSampleRectIterator::operator= ( KisSampleRectIterator && rhs)
default

Friends And Related Symbol Documentation

◆ boost::iterator_core_access

friend class boost::iterator_core_access
friend

Definition at line 56 of file KisSampleRectIterator.h.

Member Data Documentation

◆ m_index

int KisSampleRectIterator::m_index = 0
private

Definition at line 66 of file KisSampleRectIterator.h.

◆ m_rect

QRectF KisSampleRectIterator::m_rect
private

Definition at line 65 of file KisSampleRectIterator.h.

◆ m_sampler

QSharedDataPointer<HaltonSampler> KisSampleRectIterator::m_sampler
private

Definition at line 63 of file KisSampleRectIterator.h.


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