-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathAreaOrderer.h
40 lines (31 loc) · 886 Bytes
/
AreaOrderer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// AreaOrderer.h
// Copyright (c) 2010, Dan Heeks
// This program is released under the BSD license. See the file COPYING for details.
#pragma once
#include <list>
#include <set>
class CArea;
class CCurve;
class CAreaOrderer;
class CInnerCurves
{
CInnerCurves* m_pOuter;
const CCurve* m_curve; // always empty if top level
std::set<CInnerCurves*> m_inner_curves;
CArea *m_unite_area; // new curves made by uniting are stored here
public:
static CAreaOrderer* area_orderer;
CInnerCurves(CInnerCurves* pOuter, const CCurve* curve);
~CInnerCurves();
void Insert(const CCurve* pcurve);
void GetArea(CArea &area, bool outside = true, bool use_curve = true)const;
void Unite(const CInnerCurves* c);
};
class CAreaOrderer
{
public:
CInnerCurves* m_top_level;
CAreaOrderer();
void Insert(CCurve* pcurve);
CArea ResultArea()const;
};