Krita Source Code Documentation
Loading...
Searching...
No Matches
KisOptimizedByteArray.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2017 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISOPTIMIZEDBYTEARRAY_H
8#define KISOPTIMIZEDBYTEARRAY_H
9
10#include <utility>
11#include <QSharedDataPointer>
12#include <QSharedPointer>
13#include <QMutex>
14#include <QVector>
15
16#include "kritaimage_export.h"
17
19
20
21class KRITAIMAGE_EXPORT KisOptimizedByteArray
22{
23public:
24 typedef std::pair<quint8*, int> MemoryChunk;
25
26 struct KRITAIMAGE_EXPORT MemoryAllocator {
27 virtual ~MemoryAllocator() = default;
28 virtual MemoryChunk alloc(int size) = 0;
29 virtual void free(MemoryChunk chunk) = 0;
30 };
31
33
34 struct KRITAIMAGE_EXPORT PooledMemoryAllocator : public MemoryAllocator {
37
38 MemoryChunk alloc(int size) override;
39 void free(MemoryChunk chunk) override;
40
41 private:
42 QMutex m_mutex;
45 };
46
47public:
50 KisOptimizedByteArray& operator=(const KisOptimizedByteArray &rhs);
51
53
54 quint8* data();
55 const quint8* constData() const;
56
57 void resize(int size);
58 void fill(quint8 value, int size = -1);
59
60 int size() const;
61
62 bool isEmpty() const;
63
64 MemoryAllocatorSP customMemoryAllocator() const;
65
66private:
67 struct Private;
68 QSharedDataPointer<Private> m_d;
69};
70
71#endif // KISOPTIMIZEDBYTEARRAY_H
float value(const T *src, size_t ch)
std::pair< quint8 *, int > MemoryChunk
QSharedDataPointer< Private > m_d
QSharedPointer< MemoryAllocator > MemoryAllocatorSP
A simple wrapper class that hides boost includes from QtCreator preventing it from crashing when one ...
virtual void free(MemoryChunk chunk)=0
virtual MemoryChunk alloc(int size)=0