Krita Source Code Documentation
Loading...
Searching...
No Matches
KisRectsGrid.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISRECTSGRID_H
8#define KISRECTSGRID_H
9
10#include <QRect>
11#include <QVector>
12#include "kritaglobal_export.h"
13
14
30class KRITAGLOBAL_EXPORT KisRectsGrid
31{
32public:
36 KisRectsGrid(int gridSize = 64);
37
38
43 QRect alignRect(const QRect &rc) const;
44
54 QVector<QRect> addRect(const QRect &rc);
55
70 QVector<QRect> removeRect(const QRect &rc);
71
81 QVector<QRect> addAlignedRect(const QRect &rc);
82
92 QVector<QRect> removeAlignedRect(const QRect &rc);
93
97 bool contains(const QRect &rc) const;
98
102 QRect boundingRect() const;
103
104private:
105 void resize(const QRect &newMappedAreaSize);
106 static QRect shrinkRectToAlignedGrid(const QRect &srcRect, int lod);
107
108private:
112 QRect m_mappedAreaSize; // measured in col/row
113
114};
115
116#endif // KISRECTSGRID_H
A utility class to maintain a sparse grid of loaded/unloaded rects.
QRect m_mappedAreaSize
QVector< quint8 > m_mapping