close();
}
+void VPath::VPathData::addPath(const VPathData &path)
+{
+ int segment = path.segments();
+
+ // make sure enough memory available
+ if (m_points.capacity() < m_points.size() + path.m_points.size())
+ m_points.reserve(m_points.size() + path.m_points.size());
+
+ if (m_elements.capacity() < m_elements.size() + path.m_elements.size())
+ m_elements.reserve(m_elements.size() + path.m_elements.size());
+
+ std::copy(path.m_points.begin(), path.m_points.end(), back_inserter(m_points));
+ std::copy(path.m_elements.begin(), path.m_elements.end(), back_inserter(m_elements));
+
+ m_segments += segment;
+}
+
V_END_NAMESPACE
void addPolygon(float points, float radius, float roundness,
float startAngle, float cx, float cy,
VPath::Direction dir = Direction::CW);
+ void addPath(const VPath &path);
void transform(const VMatrix &m);
float length() const;
const std::vector<VPath::Element> &elements() const;
void addPolygon(float points, float radius, float roundness,
float startAngle, float cx, float cy,
VPath::Direction dir = Direction::CW);
+ void addPath(const VPathData &path);
const std::vector<VPath::Element> &elements() const
{
return m_elements;
d.write().addPolygon(points, radius, roundness, startAngle, cx, cy, dir);
}
+inline void VPath::addPath(const VPath &path)
+{
+ if (path.isEmpty()) return;
+
+ if (isEmpty()) {
+ *this = path;
+ } else {
+ d.write().addPath(path.d.read());
+ }
+}
+
inline const std::vector<VPath::Element> &VPath::elements() const
{
return d->elements();