Krita Source Code Documentation
Loading...
Searching...
No Matches
KisRegion.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KISREGION_H
7#define KISREGION_H
8
9#include "kritaglobal_export.h"
10#include <QVector>
11#include <QRect>
12#include <boost/operators.hpp>
13
14class QRegion;
15
25class KRITAGLOBAL_EXPORT KisRegion :
26 public boost::equality_comparable<KisRegion>,
27 public boost::andable<KisRegion, QRect>
28{
29public:
45
46
52 static void approximateOverlappingRects(QVector<QRect> &rects, int gridSize);
53
54 static void makeGridLikeRectsUnique(QVector<QRect> &rects);
55
56public:
57 KisRegion() = default;
58 KisRegion(const KisRegion &rhs) = default;
59 KisRegion(const QRect &rect);
60 KisRegion(std::initializer_list<QRect> rects);
61
66 KisRegion(const QVector<QRect> &rects);
68
69 KisRegion& operator=(const KisRegion &rhs);
70 friend KRITAGLOBAL_EXPORT bool operator==(const KisRegion &lhs, const KisRegion &rhs);
71
72 KisRegion& operator&=(const QRect &rect);
73
74 QRect boundingRect() const;
75 QVector<QRect> rects() const;
76 int rectCount() const;
77 bool isEmpty() const;
78
79 QRegion toQRegion() const;
80
81 void translate(int dx, int dy);
82 KisRegion translated(int x, int y) const;
83
84 static KisRegion fromQRegion(const QRegion &region);
85
91 static KisRegion fromOverlappingRects(const QVector<QRect> &rects, int gridSize);
92
93private:
94 void mergeAllRects();
95
96private:
98};
99
100KRITAGLOBAL_EXPORT bool operator==(const KisRegion &lhs, const KisRegion &rhs);
101
102
103#endif // KISREGION_H
bool operator==(const KisRegion &lhs, const KisRegion &rhs)
KRITAGLOBAL_EXPORT bool operator==(const KisRegion &lhs, const KisRegion &rhs)
QVector< QRect > m_rects
Definition KisRegion.h:97
KisRegion()=default
KisRegion(const KisRegion &rhs)=default