Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_wrapped_hline_iterator.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_WRAPPED_HLINE_ITERATOR_H
8#define __KIS_WRAPPED_HLINE_ITERATOR_H
9
10#include "kis_iterator_ng.h"
11#include "kis_wrapped_rect.h"
12
13
15{
16public:
18
25
26 inline QSize originalRectToColumnsRows(const QRect &rect) {
27 return rect.size();
28 }
29
30 inline QPoint columnRowToXY(const QPoint &pt) const {
31 return pt;
32 }
33
35 const QRect &rc,
36 qint32 offsetX, qint32 offsetY,
37 bool writable,
39
40 return new KisHLineIterator2(dataManager,
41 rc.x(), rc.y(),
42 rc.width(),
43 offsetX, offsetY,
44 writable,
45 listener);
46 }
47
49 KisWrappedRect *splitRect) {
50 m_splitRect = splitRect;
51 m_iterators = iterators;
52
54 }
55
59
63
65 bool needSwitching = leftColumnIterator()->y() == m_lastRowCoord;
66
67 if (needSwitching) {
70
73 } else /* if (m_iteratorRowStart == KisWrappedRect::BOTTOMLEFT) */ {
76
77 Q_FOREACH (IteratorTypeSP it, *m_iterators) {
78 if (it) {
79 it->resetRowPos();
80 }
81 }
82 }
83 }
84
85 return needSwitching;
86 }
87
88 inline void iteratorsToNextRow() {
89 leftColumnIterator()->nextRow();
90 if (rightColumnIterator()) {
91 rightColumnIterator()->nextRow();
92 }
93 }
94
95 inline bool trySwitchColumnForced() {
96 leftColumnIterator()->resetPixelPos();
97 if (rightColumnIterator()) {
98 rightColumnIterator()->resetPixelPos();
99 }
100 return true;
101 }
102
103private:
106 int m_iteratorRowStart; // may be either KisWrappedRect::TOPLEFT or KisWrappedRect::BOTTOMLEFT
108};
109
112
113
114#endif /* __KIS_WRAPPED_HLINE_ITERATOR_H */
void completeInitialization(QVector< IteratorTypeSP > *iterators, KisWrappedRect *splitRect)
IteratorTypeSP createIterator(KisDataManager *dataManager, const QRect &rc, qint32 offsetX, qint32 offsetY, bool writable, KisIteratorCompleteListener *listener)
QSize originalRectToColumnsRows(const QRect &rect)
QVector< IteratorTypeSP > * m_iterators
QPoint columnRowToXY(const QPoint &pt) const
KisWrappedLineIteratorBase< WrappedHLineIteratorStrategy, KisHLineIteratorNG > KisWrappedHLineIterator
The KisIteratorCompleteListener struct is a special interface for notifying the paint device that an ...
QRect topLeft() const
QRect bottomLeft() const