21 template<
typename Head,
typename... Tail>
class MergeShape<Head, Tail...> {
27 return mHead.generate();
29 Edge edge = mTail.generate();
34 [[nodiscard]]
bool done() const noexcept {
return mAllDone; }
42 mAllDone = mTail.done() && mHead.done();
54 : mHead{shape.mHead.edges()},
55 mTail(shape.mTail.edges()), mHeadVertexCount{
count(shape.mHead.vertices())}, mAllDone{mTail.done() && mHead.done()} {}
64 return mHead.generate();
65 return mTail.generate();
68 [[nodiscard]]
bool done() const noexcept {
return mAllDone; }
76 mAllDone = mTail.done() && mHead.done();
84 Vertices(
const MergeShape& shape) : mHead{shape.mHead.vertices()}, mTail(shape.mTail.vertices()), mAllDone{mTail.done() && mHead.done()} {}
89 MergeShape(Head head, Tail... tail) : mHead{head}, mTail{tail...} {}
Will have a type named "Type" that has same type as value returned by method edges() for type Primiti...
Definition Utility.hpp:23
decltype(std::declval< const Primitive * >() ->edges()) Type
Definition Utility.hpp:25
Vector2i vertices
Definition Edge.hpp:16
Empty shape with zero vertices and edges.
Definition EmptyShape.hpp:16
bool mAllDone
Definition MergeShape.hpp:51
Edges(const MergeShape &shape)
Definition MergeShape.hpp:53
int mHeadVertexCount
Definition MergeShape.hpp:49
EdgeGeneratorType< Head >::Type mHead
Definition MergeShape.hpp:46
void next()
Definition MergeShape.hpp:36
EdgeGeneratorType< MergeShape< Tail... > >::Type mTail
Definition MergeShape.hpp:47
Edge generate() const
Definition MergeShape.hpp:25
bool done() const noexcept
Definition MergeShape.hpp:34
VertexGeneratorType< MergeShape< Tail... > >::Type mTail
Definition MergeShape.hpp:81
VertexGeneratorType< Head >::Type mHead
Definition MergeShape.hpp:80
ShapeVertex generate() const
Definition MergeShape.hpp:62
bool mAllDone
Definition MergeShape.hpp:82
void next()
Definition MergeShape.hpp:70
bool done() const noexcept
Definition MergeShape.hpp:68
Vertices vertices() const noexcept
Definition MergeShape.hpp:92
Head mHead
Definition MergeShape.hpp:95
Edges edges() const noexcept
Definition MergeShape.hpp:91
MergeShape< Tail... > mTail
Definition MergeShape.hpp:96
MergeShape(Head head, Tail... tail)
Definition MergeShape.hpp:89
Merges (concatenates) multiple shapes together.
Definition MergeShape.hpp:17
A point on a path.
Definition ShapeVertex.hpp:16
Will have a type named "Type" that has same type as value returned by method vertices() for type Prim...
Definition Utility.hpp:37
decltype(std::declval< const Primitive * >() ->vertices()) Type
Definition Utility.hpp:39
A type that describes a conjunction of shapes that can be filled and stroked.
Definition Shape.hpp:198
Definition AnyGenerator.hpp:12
MergeShape< Shape... > mergeShape(Shape... shapes)
Definition MergeShape.hpp:99
constexpr CountAlgorithmFunctor count
Returns the number of elements matching an element.
Definition Count.hpp:82
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25