| // 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<int>(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<SkPoint*>(data->points), point_count); | |
| return data; | |
| } | |
| void DestroyData(PathData* data) { | |
| delete[] data->points; | |
| delete[] data->verbs; | |
| delete data; | |
| } | |
| } // namespace flutter |