// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "path_ops.h" namespace flutter { SkPath* CreatePath(SkPathFillType fill_type) { auto* path = new SkPath(); path->setFillType(fill_type); return path; } void DestroyPath(SkPath* path) { delete path; } void MoveTo(SkPath* path, SkScalar x, SkScalar y) { path->moveTo(x, y); } void LineTo(SkPath* path, SkScalar x, SkScalar y) { path->lineTo(x, y); } void CubicTo(SkPath* path, SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3) { path->cubicTo(x1, y1, x2, y2, x3, y3); } void Close(SkPath* path) { path->close(); } void Reset(SkPath* path) { path->reset(); } void Op(SkPath* one, SkPath* two, SkPathOp op) { Op(*one, *two, op, one); } int GetFillType(SkPath* path) { return static_cast(path->getFillType()); } struct PathData* Data(SkPath* path) { int point_count = path->countPoints(); int verb_count = path->countVerbs(); auto data = new PathData(); data->points = new float[point_count * 2]; data->point_count = point_count * 2; data->verbs = new uint8_t[verb_count]; data->verb_count = verb_count; path->getVerbs(data->verbs, verb_count); path->getPoints(reinterpret_cast(data->points), point_count); return data; } void DestroyData(PathData* data) { delete[] data->points; delete[] data->verbs; delete data; } } // namespace flutter