Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_memory_window.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_MEMORY_WINDOW_H
8#define __KIS_MEMORY_WINDOW_H
9
10#include <QTemporaryFile>
11
12#include "kis_chunk_allocator.h"
13
14
15#define DEFAULT_WINDOW_SIZE (16*MiB)
16
17class KRITAIMAGE_EXPORT KisMemoryWindow
18{
19public:
24 KisMemoryWindow(const QString &swapDir, quint64 writeWindowSize = DEFAULT_WINDOW_SIZE);
26
27 inline quint8* getReadChunkPtr(KisChunk readChunk) {
28 return getReadChunkPtr(readChunk.data());
29 }
30
31 inline quint8* getWriteChunkPtr(KisChunk writeChunk) {
32 return getWriteChunkPtr(writeChunk.data());
33 }
34
35 quint8* getReadChunkPtr(const KisChunkData &readChunk);
36 quint8* getWriteChunkPtr(const KisChunkData &writeChunk);
37
38private:
40 MappingWindow(quint64 _defaultSize)
41 : chunk(0,0),
42 window(0),
43 defaultSize(_defaultSize)
44 {
45 }
46
47 quint8* calculatePointer(const KisChunkData &other) const {
48 return window + other.m_begin - chunk.m_begin;
49 }
50
52 quint8 *window;
53 const quint64 defaultSize;
54 };
55
56
57private:
58 bool adjustWindow(const KisChunkData &requestedChunk,
59 MappingWindow *adjustingWindow,
60 MappingWindow *otherWindow);
61
62private:
63 QTemporaryFile m_file;
64
65 bool m_valid;
68};
69
70#endif /* __KIS_MEMORY_WINDOW_H */
71
const KisChunkData & data()
quint8 * getWriteChunkPtr(KisChunk writeChunk)
MappingWindow m_readWindowEx
quint8 * getReadChunkPtr(KisChunk readChunk)
QTemporaryFile m_file
MappingWindow m_writeWindowEx
#define DEFAULT_WINDOW_SIZE
MappingWindow(quint64 _defaultSize)
quint8 * calculatePointer(const KisChunkData &other) const