LibGfx: Add relative to last point mode to Path::append_path()

This commit is contained in:
MacDue 2024-06-10 20:54:43 +01:00 committed by Nico Weber
parent 702ff7eb46
commit d62d5079f4
2 changed files with 19 additions and 6 deletions

View file

@ -417,6 +417,19 @@ Path Path::copy_transformed(Gfx::AffineTransform const& transform) const
return result;
}
void Path::append_path(Path const& path, AppendRelativeToLastPoint relative_to_last_point)
{
auto previous_last_point = last_point();
auto new_points_start = m_points.size();
m_commands.extend(path.m_commands);
m_points.extend(path.m_points);
if (relative_to_last_point == AppendRelativeToLastPoint::Yes) {
for (size_t i = new_points_start; i < m_points.size(); i++)
m_points[i] += previous_last_point;
}
invalidate_split_lines();
}
template<typename T>
struct RoundTrip {
RoundTrip(ReadonlySpan<T> span)

View file

@ -227,12 +227,12 @@ public:
return m_split_lines->bounding_box;
}
void append_path(Path const& path)
{
m_commands.extend(path.m_commands);
m_points.extend(path.m_points);
invalidate_split_lines();
}
enum class AppendRelativeToLastPoint {
Yes,
No
};
void append_path(Path const& path, AppendRelativeToLastPoint = AppendRelativeToLastPoint::No);
ByteString to_byte_string() const;