Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_vline_iterator.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
3 * SPDX-FileCopyrightText: 2010 Cyrille Berger <cberger@cberger.net>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef _KIS_VLINE_ITERATOR_H_
9#define _KIS_VLINE_ITERATOR_H_
10
11#include "kis_base_iterator.h"
12#include "kritaimage_export.h"
13#include "kis_iterator_ng.h"
14
15class KRITAIMAGE_EXPORT KisVLineIterator2 : public KisVLineIteratorNG, KisBaseIterator {
18
19public:
20 struct KisTileInfo {
23 quint8* data {nullptr};
24 quint8* oldData {nullptr};
25 };
26
27
28public:
29 KisVLineIterator2(KisDataManager *dataManager, qint32 x, qint32 y, qint32 h, qint32 offsetX, qint32 offsetY, bool writable, KisIteratorCompleteListener *completeListener);
30 ~KisVLineIterator2() override;
31
32 void resetPixelPos() override;
33 void resetColumnPos() override;
34
35 bool nextPixel() override;
36 void nextColumn() override;
37 const quint8* rawDataConst() const override;
38 const quint8* oldRawData() const override;
39 quint8* rawData() override;
40 qint32 nConseqPixels() const override;
41 bool nextPixels(qint32 n) override;
42 qint32 x() const override;
43 qint32 y() const override;
44
45private:
46 qint32 m_offsetX {0};
47 qint32 m_offsetY {0};
48
49 qint32 m_x {0}; // current x position
50 qint32 m_y {0}; // current y position
51 qint32 m_column {0}; // current column in tilemgr
52 qint32 m_index {0}; // current row in tilemgr
53 qint32 m_tileSize {0};
54 quint8 *m_data {nullptr};
55 quint8 *m_dataBottom {nullptr};
56 quint8 *m_oldData {nullptr};
57 bool m_havePixels {false};
58
59 qint32 m_top {0};
60 qint32 m_bottom {0};
61 qint32 m_left {0};
62 qint32 m_topRow {0};
63 qint32 m_bottomRow {0};
64
65 qint32 m_topInTopmostTile {0};
66 qint32 m_xInTile {0};
67 qint32 m_lineStride {0};
68
70 qint32 m_tilesCacheSize {0};
71
72private:
73
74 void switchToTile(qint32 xInTile);
75 void fetchTileDataForCache(KisTileInfo& kti, qint32 col, qint32 row);
76 void preallocateTiles();
77};
78#endif
virtual quint8 * rawData()=0
virtual qint32 y() const =0
virtual const quint8 * oldRawData() const =0
virtual const quint8 * rawDataConst() const =0
virtual qint32 x() const =0
virtual qint32 nConseqPixels() const =0
virtual bool nextPixel()=0
virtual bool nextPixels(qint32 n)=0
virtual void nextColumn()=0
virtual void resetColumnPos()=0
virtual void resetPixelPos()=0
QVector< KisTileInfo > m_tilesCache
KisVLineIterator2 & operator=(const KisVLineIterator2 &)
KisVLineIterator2(const KisVLineIterator2 &)
The KisIteratorCompleteListener struct is a special interface for notifying the paint device that an ...