Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_random_accessor.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006,2010 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KIS_TILED_RANDOM_ACCESSOR_H
7#define KIS_TILED_RANDOM_ACCESSOR_H
8
9
10#include <kis_shared.h>
11
15
16
18{
19
27
28public:
29
30 KisRandomAccessor2(KisTiledDataManager *ktm, qint32 offsetX, qint32 offsetY, bool writable, KisIteratorCompleteListener *completeListener);
31 KisRandomAccessor2(const KisTiledRandomAccessor& lhs);
32 ~KisRandomAccessor2() override;
33
34
35private:
36 inline void lockTile(KisTileSP &tile) {
37 if (m_writable)
38 tile->lockForWrite();
39 else
40 tile->lockForRead();
41 }
42
43 inline void lockOldTile(KisTileSP &tile) {
44 // Doesn't depend on access type
45 tile->lockForRead();
46 }
47
48 inline void unlockTile(KisTileSP &tile) {
49 if (m_writable) {
50 tile->unlockForWrite();
51 } else {
52 tile->unlockForRead();
53 }
54 }
55
56 inline void unlockOldTile(KisTileSP &tile) {
57 tile->unlockForRead();
58 }
59
60 inline quint32 xToCol(quint32 x) const {
61 return m_ktm ? m_ktm->xToCol(x) : 0;
62 }
63 inline quint32 yToRow(quint32 y) const {
64 return m_ktm ? m_ktm->yToRow(y) : 0;
65 }
66
67 KisTileInfo* fetchTileData(qint32 col, qint32 row);
68
69public:
71 void moveTo(qint32 x, qint32 y) override;
72 quint8* rawData() override;
73 const quint8* oldRawData() const override;
74 const quint8* rawDataConst() const override;
75 qint32 numContiguousColumns(qint32 x) const override;
76 qint32 numContiguousRows(qint32 y) const override;
77 qint32 rowStride(qint32 x, qint32 y) const override;
78 qint32 x() const override;
79 qint32 y() const override;
80
81private:
86 quint8* m_data;
87 const quint8* m_oldData;
92 static const quint32 CACHESIZE; // Define the number of tiles we keep in cache
93
94};
95
96#endif
KisRandomAccessor2(KisTiledDataManager *ktm, qint32 offsetX, qint32 offsetY, bool writable, KisIteratorCompleteListener *completeListener)
void lockTile(KisTileSP &tile)
const quint8 * oldRawData() const override
quint8 * rawData() override
qint32 y() const override
void lockOldTile(KisTileSP &tile)
void unlockTile(KisTileSP &tile)
KisTileInfo * fetchTileData(qint32 col, qint32 row)
quint32 xToCol(quint32 x) const
qint32 numContiguousRows(qint32 y) const override
KisTileInfo ** m_tilesCache
const quint8 * rawDataConst() const override
KisRandomAccessor2(const KisTiledRandomAccessor &lhs)
KisIteratorCompleteListener * m_completeListener
qint32 rowStride(qint32 x, qint32 y) const override
qint32 x() const override
quint32 yToRow(quint32 y) const
qint32 numContiguousColumns(qint32 x) const override
void moveTo(qint32 x, qint32 y) override
Move to a given x,y position, fetch tiles and data.
static const quint32 CACHESIZE
KisTiledDataManager * m_ktm
void unlockOldTile(KisTileSP &tile)
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 ...