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

#include <kis_memento_item.h>

+ Inheritance diagram for KisMementoItem:

Public Types

enum  enumType { CHANGED = 0x0 , DELETED = 0x1 }
 

Public Member Functions

void changeTile (KisTile *tile)
 
qint32 col () const
 
void commit ()
 
void debugPrintInfo ()
 
void deleteTile (KisTile *tile, KisTileData *defaultTileData)
 
 KisMementoItem ()
 
 KisMementoItem (const KisMementoItem &rhs)
 
 KisMementoItem (const KisMementoItem &rhs, KisMementoManager *mm)
 
 KisMementoItem (qint32 col, qint32 row, KisTileData *defaultTileData, KisMementoManager *mm)
 
KisMementoItemSP next () const
 
void notifyAttachedToDataManager (KisMementoManager *mm)
 
void notifyDeadWithoutDetaching ()
 
void notifyDetachedFromDataManager ()
 
KisMementoItemSP parent ()
 
void reset ()
 
qint32 row () const
 
void setNext (KisMementoItemSP next)
 
void setParent (KisMementoItemSP parent)
 
KisTileSP tile (KisMementoManager *mm)
 
KisTileDatatileData () const
 
enumType type ()
 
 ~KisMementoItem ()
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Protected Member Functions

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

Protected Attributes

qint32 m_col {0}
 
bool m_committedFlag {false}
 
KisMementoItemSP m_next
 
KisMementoItemSP m_parent
 
qint32 m_row {0}
 
KisTileDatam_tileData {0}
 
enumType m_type {CHANGED}
 

Detailed Description

Definition at line 18 of file kis_memento_item.h.

Member Enumeration Documentation

◆ enumType

Enumerator
CHANGED 
DELETED 

Definition at line 21 of file kis_memento_item.h.

21 {
22 CHANGED = 0x0,
23 DELETED = 0x1
24 };

Constructor & Destructor Documentation

◆ KisMementoItem() [1/4]

KisMementoItem::KisMementoItem ( )
inline

Definition at line 27 of file kis_memento_item.h.

28 : m_tileData(0), m_committedFlag(false) {
29 }
KisTileData * m_tileData

◆ KisMementoItem() [2/4]

KisMementoItem::KisMementoItem ( const KisMementoItem & rhs)
inline

Definition at line 31 of file kis_memento_item.h.

32 : KisShared(),
35 m_type(rhs.m_type),
36 m_col(rhs.m_col),
37 m_row(rhs.m_row),
38 m_next(0),
39 m_parent(0) {
40 if (m_tileData) {
43 else
44 m_tileData->ref();
45 }
46 }
KisMementoItemSP m_next
KisMementoItemSP m_parent
bool ref() const

References KisTileData::acquire(), m_committedFlag, m_tileData, and KisTileData::ref().

◆ KisMementoItem() [3/4]

KisMementoItem::KisMementoItem ( qint32 col,
qint32 row,
KisTileData * defaultTileData,
KisMementoManager * mm )
inline

Automatically called by Kis..HashTable. It means that this mementoItem is a root item of parental hierarchy. So m_parent should be NULL. Taking into account the tile was not present before, the status of the item should be 'DELETED'. This memento item is considered as committed, so we acquire the tile data right at the beginning.

Definition at line 57 of file kis_memento_item.h.

57 {
58 Q_UNUSED(mm);
59 m_tileData = defaultTileData;
60 /* acquire the tileData deliberately and completely */
62 m_col = col;
63 m_row = row;
65 m_parent = 0;
66 m_committedFlag = true; /* yes, we've committed it */
67 }
qint32 col() const
qint32 row() const

References KisTileData::acquire(), col(), DELETED, m_col, m_committedFlag, m_parent, m_row, m_tileData, m_type, and row().

◆ KisMementoItem() [4/4]

KisMementoItem::KisMementoItem ( const KisMementoItem & rhs,
KisMementoManager * mm )
inline

FIXME: Not sure this function has any particular usecase. Just leave it for compatibility with a hash table

Definition at line 73 of file kis_memento_item.h.

73 {
74 Q_UNUSED(mm);
76 /* Setting counter: m_refCount++ */
77 m_tileData->ref();
78 m_col = rhs.m_col;
79 m_row = rhs.m_row;
81 m_parent = 0;
82 m_committedFlag = false;
83 }

References CHANGED, m_col, m_committedFlag, m_parent, m_row, m_tileData, m_type, and KisTileData::ref().

◆ ~KisMementoItem()

KisMementoItem::~KisMementoItem ( )
inline

Definition at line 85 of file kis_memento_item.h.

85 {
87 }

References releaseTileData().

Member Function Documentation

◆ changeTile()

void KisMementoItem::changeTile ( KisTile * tile)
inline

Definition at line 119 of file kis_memento_item.h.

119 {
121 /* Setting counter: m_refCount++ */
122 m_tileData->ref();
123 m_col = tile->col();
124 m_row = tile->row();
125 m_type = CHANGED;
126 }
KisTileSP tile(KisMementoManager *mm)
qint32 row() const
Definition kis_tile.h:92
qint32 col() const
Definition kis_tile.h:95
KisTileData * tileData() const
Definition kis_tile.h:118

References CHANGED, KisTile::col(), m_col, m_row, m_tileData, m_type, KisTileData::ref(), KisTile::row(), tile(), and KisTile::tileData().

◆ col()

qint32 KisMementoItem::col ( ) const
inline

Definition at line 167 of file kis_memento_item.h.

167 {
168 return m_col;
169 }

References m_col.

◆ commit()

void KisMementoItem::commit ( )
inline

Setting counters to proper values: m_refCount++, m_usersCount++; m_refCount–

Definition at line 128 of file kis_memento_item.h.

128 {
129 if (m_committedFlag) return;
130 if (m_tileData) {
137 m_tileData->deref();
138
140 }
141 m_committedFlag = true;
142 }
void setMementoed(bool value)

References KisTileData::acquire(), KisTileData::deref(), m_committedFlag, m_tileData, and KisTileData::setMementoed().

◆ debugPrintInfo()

void KisMementoItem::debugPrintInfo ( )
inline

Definition at line 177 of file kis_memento_item.h.

177 {
178 QString s = QString("------\n"
179 "Memento item:\t\t0x%1 (0x%2)\n"
180 " status:\t(%3,%4) %5%6\n"
181 " parent:\t0x%7 (0x%8)\n"
182 " next:\t0x%9 (0x%10)\n")
183 .arg((quintptr)this)
184 .arg((quintptr)m_tileData)
185 .arg(m_col)
186 .arg(m_row)
187 .arg((m_type == CHANGED) ? 'W' : 'D')
188 .arg(m_committedFlag ? 'C' : '-')
189 .arg((quintptr)m_parent.data())
190 .arg(m_parent ? (quintptr)m_parent->m_tileData : 0)
191 .arg((quintptr)m_next.data())
192 .arg(m_next ? (quintptr)m_next->m_tileData : 0);
193 dbgKrita << s;
194 }
#define dbgKrita
Definition kis_debug.h:45

References CHANGED, KisSharedPtr< T >::data(), dbgKrita, m_col, m_committedFlag, m_next, m_parent, m_row, m_tileData, and m_type.

◆ deleteTile()

void KisMementoItem::deleteTile ( KisTile * tile,
KisTileData * defaultTileData )
inline

Definition at line 109 of file kis_memento_item.h.

109 {
110 m_tileData = defaultTileData;
111 /* Setting counter: m_refCount++ */
112 m_tileData->ref();
113
114 m_col = tile->col();
115 m_row = tile->row();
116 m_type = DELETED;
117 }

References KisTile::col(), DELETED, m_col, m_row, m_tileData, m_type, KisTileData::ref(), KisTile::row(), and tile().

◆ next()

KisMementoItemSP KisMementoItem::next ( ) const
inline

Definition at line 164 of file kis_memento_item.h.

164 {
165 return m_next;
166 }

References m_next.

◆ notifyAttachedToDataManager()

void KisMementoItem::notifyAttachedToDataManager ( KisMementoManager * mm)
inline

Definition at line 97 of file kis_memento_item.h.

97 {
98 Q_UNUSED(mm);
99 // just to resemble KisTile...
100 }

◆ notifyDeadWithoutDetaching()

void KisMementoItem::notifyDeadWithoutDetaching ( )
inline

Definition at line 93 of file kis_memento_item.h.

93 {
94 // just to resemble KisTile...
95 }

◆ notifyDetachedFromDataManager()

void KisMementoItem::notifyDetachedFromDataManager ( )
inline

Definition at line 89 of file kis_memento_item.h.

89 {
90 // just to resemble KisTile...
91 }

◆ parent()

KisMementoItemSP KisMementoItem::parent ( )
inline

Definition at line 156 of file kis_memento_item.h.

156 {
157 return m_parent;
158 }

References m_parent.

◆ releaseTileData()

void KisMementoItem::releaseTileData ( )
inlineprotected

Definition at line 197 of file kis_memento_item.h.

197 {
198 if (m_tileData) {
199 if (m_committedFlag) {
200 m_tileData->setMementoed(false);
202 }
203 else {
204 m_tileData->deref();
205 }
206 }
207 }

References KisTileData::deref(), m_committedFlag, m_tileData, KisTileData::release(), and KisTileData::setMementoed().

◆ reset()

void KisMementoItem::reset ( )
inline

Definition at line 103 of file kis_memento_item.h.

103 {
105 m_tileData = 0;
106 m_committedFlag = false;
107 }

References m_committedFlag, m_tileData, and releaseTileData().

◆ row()

qint32 KisMementoItem::row ( ) const
inline

Definition at line 170 of file kis_memento_item.h.

170 {
171 return m_row;
172 }

References m_row.

◆ setNext()

void KisMementoItem::setNext ( KisMementoItemSP next)
inline

Definition at line 161 of file kis_memento_item.h.

161 {
162 m_next = next;
163 }
KisMementoItemSP next() const

References m_next, and next().

◆ setParent()

void KisMementoItem::setParent ( KisMementoItemSP parent)
inline

Definition at line 153 of file kis_memento_item.h.

153 {
155 }
KisMementoItemSP parent()

References m_parent, and parent().

◆ tile()

KisTileSP KisMementoItem::tile ( KisMementoManager * mm)
inline

Definition at line 144 of file kis_memento_item.h.

144 {
145 Q_ASSERT(m_tileData);
146 return KisTileSP(new KisTile(m_col, m_row, m_tileData, mm));
147 }
KisSharedPtr< KisTile > KisTileSP
Definition kis_tile.h:27

References m_col, m_row, and m_tileData.

◆ tileData()

KisTileData * KisMementoItem::tileData ( ) const
inline

Definition at line 173 of file kis_memento_item.h.

173 {
174 return m_tileData;
175 }

References m_tileData.

◆ type()

enumType KisMementoItem::type ( )
inline

Definition at line 149 of file kis_memento_item.h.

149 {
150 return m_type;
151 }

References m_type.

Member Data Documentation

◆ m_col

qint32 KisMementoItem::m_col {0}
protected

Definition at line 214 of file kis_memento_item.h.

214{0};

◆ m_committedFlag

bool KisMementoItem::m_committedFlag {false}
protected

Definition at line 211 of file kis_memento_item.h.

211{false};

◆ m_next

KisMementoItemSP KisMementoItem::m_next
protected

Definition at line 217 of file kis_memento_item.h.

◆ m_parent

KisMementoItemSP KisMementoItem::m_parent
protected

Definition at line 218 of file kis_memento_item.h.

◆ m_row

qint32 KisMementoItem::m_row {0}
protected

Definition at line 215 of file kis_memento_item.h.

215{0};

◆ m_tileData

KisTileData* KisMementoItem::m_tileData {0}
protected

Definition at line 210 of file kis_memento_item.h.

210{0};

◆ m_type

enumType KisMementoItem::m_type {CHANGED}
protected

Definition at line 212 of file kis_memento_item.h.

212{CHANGED};

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