Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTiledExtentManager Class Reference

#include <KisTiledExtentManager.h>

Classes

class  Data
 

Public Member Functions

void clear ()
 
QRect extent () const
 
 KisTiledExtentManager ()
 
void notifyTileAdded (qint32 col, qint32 row)
 
void notifyTileRemoved (qint32 col, qint32 row)
 
void replaceTileStats (const QVector< QPoint > &indexes)
 

Private Member Functions

void updateExtent ()
 

Private Attributes

Data m_colsData
 
QRect m_currentExtent
 
QReadWriteLock m_extentLock
 
Data m_rowsData
 

Static Private Attributes

static const qint32 InitialBufferSize = 256
 

Friends

class KisTiledDataManagerTest
 

Detailed Description

Definition at line 17 of file KisTiledExtentManager.h.

Constructor & Destructor Documentation

◆ KisTiledExtentManager()

KisTiledExtentManager::KisTiledExtentManager ( )

Definition at line 245 of file KisTiledExtentManager.cpp.

246{
247 QWriteLocker l(&m_extentLock);
248 m_currentExtent = QRect();
249}

References m_currentExtent, and m_extentLock.

Member Function Documentation

◆ clear()

void KisTiledExtentManager::clear ( )

◆ extent()

QRect KisTiledExtentManager::extent ( ) const

Definition at line 299 of file KisTiledExtentManager.cpp.

300{
301 QReadLocker lock(&m_extentLock);
302 return m_currentExtent;
303}

References m_currentExtent, and m_extentLock.

◆ notifyTileAdded()

void KisTiledExtentManager::notifyTileAdded ( qint32 col,
qint32 row )

Definition at line 251 of file KisTiledExtentManager.cpp.

252{
253 bool needsUpdateExtent = false;
254
255 needsUpdateExtent |= m_colsData.add(col);
256 needsUpdateExtent |= m_rowsData.add(row);
257
258 if (needsUpdateExtent) {
259 updateExtent();
260 }
261}

References KisTiledExtentManager::Data::add(), m_colsData, m_rowsData, and updateExtent().

◆ notifyTileRemoved()

void KisTiledExtentManager::notifyTileRemoved ( qint32 col,
qint32 row )

Definition at line 263 of file KisTiledExtentManager.cpp.

264{
265 bool needsUpdateExtent = false;
266
267 needsUpdateExtent |= m_colsData.remove(col);
268 needsUpdateExtent |= m_rowsData.remove(row);
269
270 if (needsUpdateExtent) {
271 updateExtent();
272 }
273}

References m_colsData, m_rowsData, KisTiledExtentManager::Data::remove(), and updateExtent().

◆ replaceTileStats()

void KisTiledExtentManager::replaceTileStats ( const QVector< QPoint > & indexes)

Definition at line 275 of file KisTiledExtentManager.cpp.

276{
277 QVector<qint32> colsIndexes;
278 QVector<qint32> rowsIndexes;
279
280 Q_FOREACH (const QPoint &index, indexes) {
281 colsIndexes.append(index.x());
282 rowsIndexes.append(index.y());
283 }
284
285 m_colsData.replace(colsIndexes);
286 m_rowsData.replace(rowsIndexes);
287 updateExtent();
288}
void replace(const QVector< qint32 > &indexes)

References m_colsData, m_rowsData, KisTiledExtentManager::Data::replace(), and updateExtent().

◆ updateExtent()

void KisTiledExtentManager::updateExtent ( )
private

Definition at line 305 of file KisTiledExtentManager.cpp.

306{
307 qint32 minX, width, minY, height;
308
309 {
310 QReadLocker cl(&m_colsData.m_extentLock);
311
312 if (m_colsData.isEmpty()) {
313 minX = 0;
314 width = 0;
315 } else {
317 width = (m_colsData.max() + 1) * KisTileData::WIDTH - minX;
318 }
319 }
320
321 {
322 QReadLocker rl(&m_rowsData.m_extentLock);
323
324 if (m_rowsData.isEmpty()) {
325 minY = 0;
326 height = 0;
327 } else {
329 height = (m_rowsData.max() + 1) * KisTileData::HEIGHT - minY;
330 }
331 }
332
333 QWriteLocker lock(&m_extentLock);
334 m_currentExtent = QRect(minX, minY, width, height);
335}
static const qint32 HEIGHT
static const qint32 WIDTH

References KisTileData::HEIGHT, KisTiledExtentManager::Data::isEmpty(), m_colsData, m_currentExtent, KisTiledExtentManager::Data::m_extentLock, m_extentLock, m_rowsData, KisTiledExtentManager::Data::max(), KisTiledExtentManager::Data::min(), and KisTileData::WIDTH.

Friends And Related Symbol Documentation

◆ KisTiledDataManagerTest

friend class KisTiledDataManagerTest
friend

Definition at line 66 of file KisTiledExtentManager.h.

Member Data Documentation

◆ InitialBufferSize

const qint32 KisTiledExtentManager::InitialBufferSize = 256
staticprivate

Definition at line 19 of file KisTiledExtentManager.h.

◆ m_colsData

Data KisTiledExtentManager::m_colsData
private

Definition at line 71 of file KisTiledExtentManager.h.

◆ m_currentExtent

QRect KisTiledExtentManager::m_currentExtent
private

Definition at line 70 of file KisTiledExtentManager.h.

◆ m_extentLock

QReadWriteLock KisTiledExtentManager::m_extentLock
mutableprivate

Definition at line 69 of file KisTiledExtentManager.h.

◆ m_rowsData

Data KisTiledExtentManager::m_rowsData
private

Definition at line 72 of file KisTiledExtentManager.h.


The documentation for this class was generated from the following files: