Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_wrapped_vline_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_VLINE_ITERATOR_H
8#define __KIS_WRAPPED_VLINE_ITERATOR_H
9
10#include "kis_iterator_ng.h"
11#include "kis_wrapped_rect.h"
12
14{
15private:
16 static const int TOP_OFFSET = 0;
17 static const int BOTTOM_OFFSET = 2;
18
19public:
21
28
29 inline QSize originalRectToColumnsRows(const QRect &rect) {
30 return QSize(rect.height(), rect.width());
31 }
32
33 inline QPoint columnRowToXY(const QPoint &pt) const {
34 return QPoint(pt.y(), pt.x());
35 }
36
38 const QRect &rc,
39 qint32 offsetX, qint32 offsetY,
40 bool writable,
41 KisIteratorCompleteListener *completeListener) {
42
43 return new KisVLineIterator2(dataManager,
44 rc.x(), rc.y(),
45 rc.height(),
46 offsetX, offsetY,
47 writable,
48 completeListener);
49 }
50
52 KisWrappedRect *splitRect) {
53 m_splitRect = splitRect;
54 m_iterators = iterators;
55
57 }
58
62
66
68 bool needSwitching = leftColumnIterator()->x() == m_lastColumnCoord;
69
70 if (needSwitching) {
73
76 } else /* if (m_iteratorColumnStart == KisWrappedRect::TOPRIGHT) */ {
79
80 Q_FOREACH (IteratorTypeSP it, *m_iterators) {
81 if (it) {
82 it->resetColumnPos();
83 }
84 }
85 }
86 }
87
88 return needSwitching;
89 }
90
91 inline void iteratorsToNextRow() {
92 leftColumnIterator()->nextColumn();
93 if (rightColumnIterator()) {
94 rightColumnIterator()->nextColumn();
95 }
96 }
97
98 inline bool trySwitchColumnForced() {
99 leftColumnIterator()->resetPixelPos();
100 if (rightColumnIterator()) {
101 rightColumnIterator()->resetPixelPos();
102 }
103
104 return true;
105 }
106
107private:
110 int m_iteratorColumnStart; // may be either KisWrappedRect::TOPLEFT or KisWrappedRect::TOPRIGHT
112};
113
116
117
118#endif /* __KIS_WRAPPED_VLINE_ITERATOR_H */
QSize originalRectToColumnsRows(const QRect &rect)
IteratorTypeSP createIterator(KisDataManager *dataManager, const QRect &rc, qint32 offsetX, qint32 offsetY, bool writable, KisIteratorCompleteListener *completeListener)
QVector< IteratorTypeSP > * m_iterators
void completeInitialization(QVector< IteratorTypeSP > *iterators, KisWrappedRect *splitRect)
QPoint columnRowToXY(const QPoint &pt) const
KisWrappedLineIteratorBase< WrappedVLineIteratorStrategy, KisVLineIteratorNG > KisWrappedVLineIterator
The KisIteratorCompleteListener struct is a special interface for notifying the paint device that an ...
QRect topLeft() const
QRect topRight() const