8#include "third_party/skia/include/core/SkPathBuilder.h"
9#include "third_party/skia/include/core/SkString.h"
10#include "third_party/skia/include/pathops/SkPathOps.h"
11#include "third_party/skia/include/utils/SkParsePath.h"
15 return new SkPathBuilder();
25 return new SkPathBuilder(path->snapshot());
29 SkPathFillType fill_type) {
30 path->setFillType(fill_type);
34 return path->fillType();
44 path->rMoveTo({
x,
y});
54 path->rLineTo({
x,
y});
62 path->quadTo({x1, y1}, {x2, y2});
70 path->rQuadTo({x1, y1}, {x2, y2});
80 path->cubicTo({x1, y1}, {x2, y2}, {x3, y3});
90 path->rCubicTo({x1, y1}, {x2, y2}, {x3, y3});
99 path->conicTo({x1, y1}, {x2, y2}, w);
108 path->rConicTo({x1, y1}, {x2, y2}, w);
113 SkScalar start_angle,
114 SkScalar sweep_angle,
115 bool force_move_to) {
116 path->arcTo(*rect, start_angle, sweep_angle, force_move_to);
122 SkScalar x_axis_rotate,
123 SkPathBuilder::ArcSize arc_size,
124 SkPathDirection path_direction,
127 path->arcTo({rx, ry}, x_axis_rotate, arc_size, path_direction, {
x,
y});
133 SkScalar x_axis_rotate,
134 SkPathBuilder::ArcSize arc_size,
135 SkPathDirection path_direction,
138 path->rArcTo({rx, ry}, x_axis_rotate, arc_size, path_direction, {
x,
y});
142 path->addRect(*rect);
146 path->addOval(*oval, SkPathDirection::kCW, 1);
151 SkScalar start_angle,
152 SkScalar sweep_angle) {
153 path->addArc(*oval, start_angle, sweep_angle);
160 path->addPolygon({
points, count}, close);
164 const SkScalar* rrect_values) {
169 const SkPathBuilder* other,
170 const SkScalar* matrix_33,
171 SkPath::AddPathMode extend_path) {
185 return path->contains({
x,
y});
189 const SkScalar* matrix_33) {
194 *rect = path->computeFiniteBounds().value_or(SkRect());
198 const SkPathBuilder* path1,
199 const SkPathBuilder* path2) {
200 if (
auto result = Op(path1->snapshot(), path2->snapshot(), operation)) {
202 SkPathBuilder* output =
new SkPathBuilder(result.value());
203 output->setFillType(path1->fillType());
212 SkString*
string =
new SkString(SkParsePath::ToSVGString(path->snapshot()));
uint32_t live_string_count
SkRRect CreateSkRRect(const SkScalar *f)
SkMatrix CreateSkMatrix(const SkScalar *f)
SKWASM_EXPORT SkPathBuilder * path_create()
SKWASM_EXPORT void path_relativeArcToRotated(SkPathBuilder *path, SkScalar rx, SkScalar ry, SkScalar x_axis_rotate, SkPathBuilder::ArcSize arc_size, SkPathDirection path_direction, SkScalar x, SkScalar y)
SKWASM_EXPORT void path_addOval(SkPathBuilder *path, const SkRect *oval)
SKWASM_EXPORT void path_dispose(SkPathBuilder *path)
SKWASM_EXPORT void path_relativeConicTo(SkPathBuilder *path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
SKWASM_EXPORT void path_addPath(SkPathBuilder *path, const SkPathBuilder *other, const SkScalar *matrix_33, SkPath::AddPathMode extend_path)
SKWASM_EXPORT void path_addRRect(SkPathBuilder *path, const SkScalar *rrect_values)
SKWASM_EXPORT SkPathBuilder * path_copy(SkPathBuilder *path)
SKWASM_EXPORT void path_getBounds(SkPathBuilder *path, SkRect *rect)
SKWASM_EXPORT void path_conicTo(SkPathBuilder *path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w)
SKWASM_EXPORT void path_moveTo(SkPathBuilder *path, SkScalar x, SkScalar y)
SKWASM_EXPORT void path_quadraticBezierTo(SkPathBuilder *path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
SKWASM_EXPORT void path_close(SkPathBuilder *path)
SKWASM_EXPORT SkPathFillType path_getFillType(SkPathBuilder *path)
SKWASM_EXPORT void path_addPolygon(SkPathBuilder *path, const SkPoint *points, int count, bool close)
SKWASM_EXPORT SkPathBuilder * path_combine(SkPathOp operation, const SkPathBuilder *path1, const SkPathBuilder *path2)
SKWASM_EXPORT void path_addArc(SkPathBuilder *path, const SkRect *oval, SkScalar start_angle, SkScalar sweep_angle)
SKWASM_EXPORT void path_transform(SkPathBuilder *path, const SkScalar *matrix_33)
SKWASM_EXPORT void path_arcToRotated(SkPathBuilder *path, SkScalar rx, SkScalar ry, SkScalar x_axis_rotate, SkPathBuilder::ArcSize arc_size, SkPathDirection path_direction, SkScalar x, SkScalar y)
SKWASM_EXPORT void path_setFillType(SkPathBuilder *path, SkPathFillType fill_type)
SKWASM_EXPORT void path_reset(SkPathBuilder *path)
SKWASM_EXPORT SkString * path_getSvgString(SkPathBuilder *path)
SKWASM_EXPORT void path_arcToOval(SkPathBuilder *path, const SkRect *rect, SkScalar start_angle, SkScalar sweep_angle, bool force_move_to)
SKWASM_EXPORT void path_relativeQuadraticBezierTo(SkPathBuilder *path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2)
SKWASM_EXPORT void path_relativeMoveTo(SkPathBuilder *path, SkScalar x, SkScalar y)
SKWASM_EXPORT void path_cubicTo(SkPathBuilder *path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)
SKWASM_EXPORT void path_addRect(SkPathBuilder *path, const SkRect *rect)
SKWASM_EXPORT void path_relativeLineTo(SkPathBuilder *path, SkScalar x, SkScalar y)
SKWASM_EXPORT void path_relativeCubicTo(SkPathBuilder *path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3)
SKWASM_EXPORT bool path_contains(SkPathBuilder *path, SkScalar x, SkScalar y)
SKWASM_EXPORT void path_lineTo(SkPathBuilder *path, SkScalar x, SkScalar y)
std::vector< Point > points