Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_memento_manager.h
Go to the documentation of this file.
1
/*
2
* SPDX-FileCopyrightText: 2009 Dmitry Kazakov <dimula73@gmail.com>
3
*
4
* SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#ifndef KIS_MEMENTO_MANAGER_
8
#define KIS_MEMENTO_MANAGER_
9
10
#include <QList>
11
#include <QMutex>
12
13
#include "
kis_memento_item.h
"
14
#include "config-hash-table-implementation.h"
15
16
typedef
QList<KisMementoItemSP>
KisMementoItemList
;
17
typedef
QListIterator<KisMementoItemSP>
KisMementoItemListIterator
;
18
19
class
KisMemento
;
20
struct
KisHistoryItem
{
21
KisMemento
*
memento
;
22
KisMementoItemList
itemList
;
23
};
24
25
typedef
QList<KisHistoryItem>
KisHistoryList
;
26
27
class
KisMemento
;
28
typedef
KisSharedPtr<KisMemento>
KisMementoSP
;
29
30
#ifdef USE_LOCK_FREE_HASH_TABLE
31
#include "
kis_tile_hash_table2.h
"
32
33
typedef
KisTileHashTableTraits2<KisMementoItem>
KisMementoItemHashTable
;
34
typedef
KisTileHashTableIteratorTraits2<KisMementoItem>
KisMementoItemHashTableIterator
;
35
typedef
KisTileHashTableIteratorTraits2<KisMementoItem>
KisMementoItemHashTableIteratorConst
;
36
#else
37
#include "
kis_tile_hash_table.h
"
38
39
typedef
KisTileHashTableTraits<KisMementoItem>
KisMementoItemHashTable
;
40
typedef
KisTileHashTableIteratorTraits<KisMementoItem, QWriteLocker>
KisMementoItemHashTableIterator
;
41
typedef
KisTileHashTableIteratorTraits<KisMementoItem, QReadLocker>
KisMementoItemHashTableIteratorConst
;
42
#endif
// USE_LOCK_FREE_HASH_TABLE
43
44
45
class
KRITAIMAGE_EXPORT
KisMementoManager
46
{
47
public
:
48
KisMementoManager
();
49
KisMementoManager
(
const
KisMementoManager
& rhs);
50
~KisMementoManager
();
51
64
void
registerTileChange(
KisTile
*tile);
65
70
void
registerTileDeleted(
KisTile
*tile);
71
72
77
void
commit();
78
85
void
rollback(
KisTileHashTable
*ht,
KisMementoSP
memento);
86
void
rollforward(
KisTileHashTable
*ht,
KisMementoSP
memento);
87
94
KisTileSP
getCommittedTile(qint32 col, qint32 row,
bool
&existingTile);
95
96
KisMementoSP
getMemento();
97
98
bool
hasCurrentMemento
() {
99
return
m_currentMemento;
100
}
101
102
KisMementoSP
currentMemento();
103
104
void
setDefaultTileData(
KisTileData
*defaultTileData);
105
106
void
debugPrintInfo();
107
108
115
void
purgeHistory(
KisMementoSP
oldestMemento);
116
117
protected
:
118
qint32 findRevisionByMemento(
KisMementoSP
memento)
const
;
119
void
resetRevisionHistory(
KisMementoItemList
list);
120
121
protected
:
128
KisMementoItemHashTable
m_index
;
129
133
KisHistoryList
m_revisions
;
134
138
KisHistoryList
m_cancelledRevisions
;
139
144
KisMementoItemHashTable
m_headsHashTable
;
145
150
KisMementoSP
m_currentMemento
;
151
QMutex
m_currentMementoExtentLock
;
152
161
bool
m_registrationBlocked
;
162
};
163
164
#endif
/* KIS_MEMENTO_MANAGER_ */
KisMementoManager
Definition
kis_memento_manager.h:46
KisMementoManager::m_index
KisMementoItemHashTable m_index
Definition
kis_memento_manager.h:128
KisMementoManager::m_currentMemento
KisMementoSP m_currentMemento
Definition
kis_memento_manager.h:150
KisMementoManager::m_cancelledRevisions
KisHistoryList m_cancelledRevisions
Definition
kis_memento_manager.h:138
KisMementoManager::m_headsHashTable
KisMementoItemHashTable m_headsHashTable
Definition
kis_memento_manager.h:144
KisMementoManager::m_revisions
KisHistoryList m_revisions
Definition
kis_memento_manager.h:133
KisMementoManager::hasCurrentMemento
bool hasCurrentMemento()
Definition
kis_memento_manager.h:98
KisMementoManager::m_currentMementoExtentLock
QMutex m_currentMementoExtentLock
Definition
kis_memento_manager.h:151
KisMementoManager::m_registrationBlocked
bool m_registrationBlocked
Definition
kis_memento_manager.h:161
KisMemento
Definition
kis_memento.h:27
KisSharedPtr
Definition
kis_shared_ptr.h:57
KisTileData
Definition
kis_tile_data_interface.h:89
KisTileHashTableIteratorTraits2
Definition
kis_tile_hash_table2.h:218
KisTileHashTableIteratorTraits
Definition
kis_tile_hash_table.h:133
KisTileHashTableTraits2
Definition
kis_tile_hash_table2.h:36
KisTileHashTableTraits
Definition
kis_tile_hash_table.h:25
KisTile
Definition
kis_tile.h:41
QList
Definition
KisQStringListFwd.h:16
kis_memento_item.h
KisMementoItemHashTable
KisTileHashTableTraits< KisMementoItem > KisMementoItemHashTable
Definition
kis_memento_manager.h:39
KisMementoItemHashTableIterator
KisTileHashTableIteratorTraits< KisMementoItem, QWriteLocker > KisMementoItemHashTableIterator
Definition
kis_memento_manager.h:40
KisMementoSP
KisSharedPtr< KisMemento > KisMementoSP
Definition
kis_memento_manager.h:28
KisMementoItemList
QList< KisMementoItemSP > KisMementoItemList
Definition
kis_memento_manager.h:16
KisHistoryList
QList< KisHistoryItem > KisHistoryList
Definition
kis_memento_manager.h:25
KisMementoItemHashTableIteratorConst
KisTileHashTableIteratorTraits< KisMementoItem, QReadLocker > KisMementoItemHashTableIteratorConst
Definition
kis_memento_manager.h:41
KisMementoItemListIterator
QListIterator< KisMementoItemSP > KisMementoItemListIterator
Definition
kis_memento_manager.h:17
kis_tile_hash_table2.h
kis_tile_hash_table.h
KisHistoryItem
Definition
kis_memento_manager.h:20
KisHistoryItem::itemList
KisMementoItemList itemList
Definition
kis_memento_manager.h:22
KisHistoryItem::memento
KisMemento * memento
Definition
kis_memento_manager.h:21
libs
image
tiles3
kis_memento_manager.h
Generated at
2025-11-04 02:30:02+01:00
from
Krita
branch
master
, commit
c9dde2e79561a8aea4a7e8d9ac99c98a7bac9e52