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

#include <kis_memento.h>

+ Inheritance diagram for KisMemento:

Public Member Functions

QRect extent ()
 
void extent (qint32 &x, qint32 &y, qint32 &w, qint32 &h)
 
 KisMemento (KisMementoManager *)
 
const quint8 * newDefaultPixel () const
 
const quint8 * oldDefaultPixel () const
 
void saveNewDefaultPixel (const quint8 *pixel, quint32 pixelSize)
 
void saveOldDefaultPixel (const quint8 *pixel, quint32 pixelSize)
 
 ~KisMemento ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Private Member Functions

void updateExtent (qint32 col, qint32 row, QMutex *currentMementoExtentLock)
 

Private Attributes

qint32 m_extentMaxX
 
qint32 m_extentMaxY
 
qint32 m_extentMinX
 
qint32 m_extentMinY
 
quint8 * m_newDefaultPixel
 
quint8 * m_oldDefaultPixel
 

Friends

class KisMementoManager
 

Additional Inherited Members

- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

Definition at line 26 of file kis_memento.h.

Constructor & Destructor Documentation

◆ KisMemento()

KisMemento::KisMemento ( KisMementoManager * )
inline

Definition at line 29 of file kis_memento.h.

29 {
34
37 }
quint8 * m_newDefaultPixel
qint32 m_extentMaxY
qint32 m_extentMinX
quint8 * m_oldDefaultPixel
qint32 m_extentMaxX
qint32 m_extentMinY
const qint32 qint32_MIN
Definition kis_global.h:30
const qint32 qint32_MAX
Definition kis_global.h:29

References m_extentMaxX, m_extentMaxY, m_extentMinX, m_extentMinY, m_newDefaultPixel, m_oldDefaultPixel, qint32_MAX, and qint32_MIN.

◆ ~KisMemento()

KisMemento::~KisMemento ( )
inline

Definition at line 39 of file kis_memento.h.

39 {
40 delete[] m_oldDefaultPixel;
41 delete[] m_newDefaultPixel;
42 }

References m_newDefaultPixel, and m_oldDefaultPixel.

Member Function Documentation

◆ extent() [1/2]

QRect KisMemento::extent ( )
inline

Definition at line 61 of file kis_memento.h.

References extent().

◆ extent() [2/2]

void KisMemento::extent ( qint32 & x,
qint32 & y,
qint32 & w,
qint32 & h )
inline

Definition at line 44 of file kis_memento.h.

44 {
45 const bool extentIsValid =
47
48 if (extentIsValid) {
53 } else {
54 x = 0;
55 y = 0;
56 w = 0;
57 h = 0;
58 }
59 }

References m_extentMaxX, m_extentMaxY, m_extentMinX, and m_extentMinY.

◆ newDefaultPixel()

const quint8 * KisMemento::newDefaultPixel ( ) const
inline

Definition at line 81 of file kis_memento.h.

81 {
82 return m_newDefaultPixel;
83 }

References m_newDefaultPixel.

◆ oldDefaultPixel()

const quint8 * KisMemento::oldDefaultPixel ( ) const
inline

Definition at line 77 of file kis_memento.h.

77 {
78 return m_oldDefaultPixel;
79 }

References m_oldDefaultPixel.

◆ saveNewDefaultPixel()

void KisMemento::saveNewDefaultPixel ( const quint8 * pixel,
quint32 pixelSize )
inline

Definition at line 72 of file kis_memento.h.

72 {
73 m_newDefaultPixel = new quint8[pixelSize];
74 memcpy(m_newDefaultPixel, pixel, pixelSize);
75 }

References m_newDefaultPixel.

◆ saveOldDefaultPixel()

void KisMemento::saveOldDefaultPixel ( const quint8 * pixel,
quint32 pixelSize )
inline

Definition at line 67 of file kis_memento.h.

67 {
68 m_oldDefaultPixel = new quint8[pixelSize];
69 memcpy(m_oldDefaultPixel, pixel, pixelSize);
70 }

References m_oldDefaultPixel.

◆ updateExtent()

void KisMemento::updateExtent ( qint32 col,
qint32 row,
QMutex * currentMementoExtentLock )
inlineprivate

HACK ALERT: the lock is stored in the memento manager to avoid too many locks to be created. Anyway, a memento manager can have only one "current memento". And it would not be nice to do KisTileData::WIDTH/HEIGHT multiplication under the lock held.

Definition at line 88 of file kis_memento.h.

88 {
89 const qint32 tileMinX = col * KisTileData::WIDTH;
90 const qint32 tileMinY = row * KisTileData::HEIGHT;
91 const qint32 tileMaxX = tileMinX + KisTileData::WIDTH - 1;
92 const qint32 tileMaxY = tileMinY + KisTileData::HEIGHT - 1;
93
94 {
103 QMutexLocker l(currentMementoExtentLock);
104 m_extentMinX = qMin(m_extentMinX, tileMinX);
105 m_extentMaxX = qMax(m_extentMaxX, tileMaxX);
106 m_extentMinY = qMin(m_extentMinY, tileMinY);
107 m_extentMaxY = qMax(m_extentMaxY, tileMaxY);
108 }
109 }
static const qint32 HEIGHT
static const qint32 WIDTH

References KisTileData::HEIGHT, m_extentMaxX, m_extentMaxY, m_extentMinX, m_extentMinY, and KisTileData::WIDTH.

Friends And Related Symbol Documentation

◆ KisMementoManager

friend class KisMementoManager
friend

Definition at line 86 of file kis_memento.h.

Member Data Documentation

◆ m_extentMaxX

qint32 KisMemento::m_extentMaxX
private

Definition at line 116 of file kis_memento.h.

◆ m_extentMaxY

qint32 KisMemento::m_extentMaxY
private

Definition at line 118 of file kis_memento.h.

◆ m_extentMinX

qint32 KisMemento::m_extentMinX
private

Definition at line 115 of file kis_memento.h.

◆ m_extentMinY

qint32 KisMemento::m_extentMinY
private

Definition at line 117 of file kis_memento.h.

◆ m_newDefaultPixel

quint8* KisMemento::m_newDefaultPixel
private

Definition at line 113 of file kis_memento.h.

◆ m_oldDefaultPixel

quint8* KisMemento::m_oldDefaultPixel
private

Definition at line 112 of file kis_memento.h.


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