summaryrefslogtreecommitdiff
path: root/SharedGraphics/DisjointRectSet.h
blob: 5b3f26d20bd256dee38868ba8f493bc8100123a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

#include <AK/Vector.h>
#include <SharedGraphics/Rect.h>

class DisjointRectSet {
public:
    DisjointRectSet() { }
    ~DisjointRectSet() { }
    DisjointRectSet(DisjointRectSet&& other) : m_rects(move(other.m_rects)) { }

    void add(const Rect&);

    void clear() { m_rects.clear(); }
    void clear_with_capacity() { m_rects.clear_with_capacity(); }
    const Vector<Rect>& rects() const { return m_rects; }

private:
    void shatter();

    Vector<Rect> m_rects;
};