/src/geos/include/geos/triangulate/quadedge/QuadEdgeQuartet.h
Line | Count | Source |
1 | | /********************************************************************** |
2 | | * |
3 | | * GEOS - Geometry Engine Open Source |
4 | | * http://geos.osgeo.org |
5 | | * |
6 | | * Copyright (C) 2019 Daniel Baston |
7 | | * |
8 | | * This is free software; you can redistribute and/or modify it under |
9 | | * the terms of the GNU Lesser General Licence as published |
10 | | * by the Free Software Foundation. |
11 | | * See the COPYING file for more information. |
12 | | * |
13 | | **********************************************************************/ |
14 | | |
15 | | #pragma once |
16 | | |
17 | | #include <geos/triangulate/quadedge/QuadEdge.h> |
18 | | |
19 | | |
20 | | namespace geos { |
21 | | namespace triangulate { |
22 | | namespace quadedge { |
23 | | |
24 | | class GEOS_DLL QuadEdgeQuartet { |
25 | | |
26 | | public: |
27 | 0 | QuadEdgeQuartet() : e{{QuadEdge(0), QuadEdge(1), QuadEdge(2), QuadEdge(3)}} { |
28 | 0 | e[0].next = &(e[0]); |
29 | 0 | e[1].next = &(e[3]); |
30 | 0 | e[2].next = &(e[2]); |
31 | 0 | e[3].next = &(e[1]); |
32 | 0 | }; |
33 | | |
34 | 0 | static QuadEdge& makeEdge(const Vertex& o, const Vertex & d, std::deque<QuadEdgeQuartet> & edges) { |
35 | 0 | edges.emplace_back(); |
36 | 0 | auto& qe = edges.back(); |
37 | 0 | qe.base().setOrig(o); |
38 | 0 | qe.base().setDest(d); |
39 | |
|
40 | 0 | return qe.base(); |
41 | 0 | } |
42 | | |
43 | 0 | QuadEdge& base() { |
44 | 0 | return e[0]; |
45 | 0 | } |
46 | | |
47 | 0 | const QuadEdge& base() const { |
48 | 0 | return e[0]; |
49 | 0 | } |
50 | | |
51 | 0 | void setVisited(bool status) { |
52 | 0 | for (auto& edge : e) { |
53 | 0 | edge.setVisited(status); |
54 | 0 | } |
55 | 0 | } |
56 | | |
57 | | private: |
58 | | std::array<QuadEdge, 4> e; |
59 | | }; |
60 | | |
61 | | } |
62 | | } |
63 | | } |
64 | | |