Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_base_iterator.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef _KIS_BASE_ITERATOR_H_
8#define _KIS_BASE_ITERATOR_H_
9
10#include "kis_datamanager.h"
12#include "kis_tile.h"
13#include "kis_types.h"
14#include "kis_shared.h"
16
18protected:
19 KisBaseIterator(KisTiledDataManager * _dataManager, bool _writable, KisIteratorCompleteListener *listener) {
20 m_dataManager = _dataManager;
22 m_writable = _writable;
23 m_completeListener = listener;
24 }
30
32 qint32 m_pixelSize; // bytes per pixel
34 inline void lockTile(KisTileSP &tile) {
35 if (m_writable)
36 tile->lockForWrite();
37 else
38 tile->lockForRead();
39 }
40 inline void lockOldTile(KisTileSP &tile) {
41 // Doesn't depend on current access type
42 tile->lockForRead();
43 }
44 inline void unlockTile(KisTileSP &tile) {
45 if (m_writable) {
46 tile->unlockForWrite();
47 } else {
48 tile->unlockForRead();
49 }
50 }
51
52 inline void unlockOldTile(KisTileSP &tile) {
53 tile->unlockForRead();
54 }
55
56 inline quint32 xToCol(quint32 x) const {
57 return m_dataManager ? m_dataManager->xToCol(x) : 0;
58 }
59 inline quint32 yToRow(quint32 y) const {
60 return m_dataManager ? m_dataManager->yToRow(y) : 0;
61 }
62
63 inline qint32 calcXInTile(qint32 x, qint32 col) const {
64 return x - col * KisTileData::WIDTH;
65 }
66
67 inline qint32 calcYInTile(qint32 y, qint32 row) const {
68 return y - row * KisTileData::HEIGHT;
69 }
70
71private:
73};
74
75#endif
void lockOldTile(KisTileSP &tile)
qint32 calcXInTile(qint32 x, qint32 col) const
KisBaseIterator(KisTiledDataManager *_dataManager, bool _writable, KisIteratorCompleteListener *listener)
void unlockOldTile(KisTileSP &tile)
void unlockTile(KisTileSP &tile)
quint32 yToRow(quint32 y) const
void lockTile(KisTileSP &tile)
KisIteratorCompleteListener * m_completeListener
qint32 calcYInTile(qint32 y, qint32 row) const
KisTiledDataManager * m_dataManager
quint32 xToCol(quint32 x) const
static const qint32 HEIGHT
static const qint32 WIDTH
void lockForWrite()
Definition kis_tile.cc:221
void lockForRead() const
Definition kis_tile.cc:208
void unlockForWrite()
Definition kis_tile.cc:264
void unlockForRead() const
Definition kis_tile.cc:275
qint32 yToRow(qint32 y) const
qint32 xToCol(qint32 x) const
The KisIteratorCompleteListener struct is a special interface for notifying the paint device that an ...
virtual void notifyWritableIteratorCompleted()=0