Class documentation of Concepts

Loading...
Searching...
No Matches
quadsubdiv.hh
Go to the documentation of this file.
1
7#ifndef quadsubdiv_hh
8#define quadsubdiv_hh
9
10#include <iostream>
11#include "subdivision.hh"
12
13namespace concepts {
14
15 // forward declaration
16 class Vertex;
17 class Connector1;
18 class Edge;
19 class Quad;
20 class InfiniteEdge;
21 class InfiniteQuad;
22
23 // ******************************************************* QuadSubdivision **
24
38 public:
41 virtual void createChildren(Quad& q) const = 0;
45 virtual void removeChildren(Quad& q) const = 0;
52 virtual Edge* newEdge(const Quad& q, uint i) const = 0;
60 virtual Vertex* newVertex(const Quad& q, uint i) const = 0;
61 };
62
63 // *********************************************************** QuadSubdiv4 **
64
74 public:
75 virtual void createChildren(Quad& q) const;
76 virtual void removeChildren(Quad& q) const;
77 virtual Edge* newEdge(const Quad& q, uint i) const;
78 virtual Vertex* newVertex(const Quad& q, uint i) const;
79 static const QuadSubdiv4* instance();
80 virtual ~QuadSubdiv4();
81 protected:
82 virtual std::ostream& info(std::ostream& os) const;
83 private:
84 static std::unique_ptr<QuadSubdiv4> instance_;
85 };
86
87 // ********************************************************** QuadSubdiv2H **
88
96 public:
97 virtual void createChildren(Quad& q) const;
98 virtual void removeChildren(Quad& q) const;
99 virtual Edge* newEdge(const Quad& q, uint i) const;
100 virtual Vertex* newVertex(const Quad& q, uint i) const;
101 static const QuadSubdiv2H* instance();
102 virtual ~QuadSubdiv2H();
103 protected:
104 virtual std::ostream& info(std::ostream& os) const;
105 private:
106 static std::unique_ptr<QuadSubdiv2H> instance_;
107 };
108
109 // ********************************************************** QuadSubdiv2V **
110
118 public:
119 virtual void createChildren(Quad& q) const;
120 virtual void removeChildren(Quad& q) const;
121 virtual Edge* newEdge(const Quad& q, uint i) const;
122 virtual Vertex* newVertex(const Quad& q, uint i) const;
123 static const QuadSubdiv2V* instance();
124 virtual ~QuadSubdiv2V();
125 protected:
126 virtual std::ostream& info(std::ostream& os) const;
127 private:
128 static std::unique_ptr<QuadSubdiv2V> instance_;
129 };
130
131 // ******************************************************* InfQuadSubdivision **
132
148 public:
151 virtual void createChildren(InfiniteQuad& q) const = 0;
155 virtual void removeChildren(InfiniteQuad& q) const = 0;
162 virtual Connector1* newEdge(const InfiniteQuad& q, uint i) const = 0;
170 virtual Vertex* newVertex(const InfiniteQuad& q, uint i) const = 0;
171 };
172
173 // ******************************************************* InfQuadSubdiv2V **
174
183 public:
184 virtual void createChildren(InfiniteQuad& q) const;
185 virtual void removeChildren(InfiniteQuad& q) const;
186 virtual Connector1* newEdge(const InfiniteQuad& q, uint i) const;
187 virtual Vertex* newVertex(const InfiniteQuad& q, uint i) const;
188 static const InfQuadSubdiv2V* instance();
189 virtual ~InfQuadSubdiv2V();
190 protected:
191 virtual std::ostream& info(std::ostream& os) const;
192 private:
193 static std::unique_ptr<InfQuadSubdiv2V> instance_;
194 };
195
196
197} // namespace concepts
198
199#endif // quadsubdiv_hh
virtual Vertex * newVertex(const InfiniteQuad &q, uint i) const
virtual Connector1 * newEdge(const InfiniteQuad &q, uint i) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual void createChildren(InfiniteQuad &q) const
virtual void removeChildren(InfiniteQuad &q) const
virtual void removeChildren(InfiniteQuad &q) const =0
virtual void createChildren(InfiniteQuad &q) const =0
virtual Connector1 * newEdge(const InfiniteQuad &q, uint i) const =0
virtual Vertex * newVertex(const InfiniteQuad &q, uint i) const =0
virtual void createChildren(Quad &q) const
virtual Vertex * newVertex(const Quad &q, uint i) const
virtual Edge * newEdge(const Quad &q, uint i) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual void removeChildren(Quad &q) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual Vertex * newVertex(const Quad &q, uint i) const
virtual void createChildren(Quad &q) const
virtual Edge * newEdge(const Quad &q, uint i) const
virtual void removeChildren(Quad &q) const
virtual void removeChildren(Quad &q) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual Edge * newEdge(const Quad &q, uint i) const
virtual void createChildren(Quad &q) const
virtual Vertex * newVertex(const Quad &q, uint i) const
virtual void removeChildren(Quad &q) const =0
virtual Vertex * newVertex(const Quad &q, uint i) const =0
virtual void createChildren(Quad &q) const =0
virtual Edge * newEdge(const Quad &q, uint i) const =0
Set< F > makeSet(uint n, const F &first,...)
Definition set.hh:320