blob: 4af486ffe3d3a3f3ed57e746303629aadd9ee844 [file] [log] [blame]
// 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 "export.h"
#include "helpers.h"
#include "third_party/skia/include/core/SkContourMeasure.h"
#include "third_party/skia/include/core/SkPath.h"
using namespace Skwasm;
SKWASM_EXPORT SkContourMeasureIter*
contourMeasureIter_create(SkPath* path, bool forceClosed, SkScalar resScale) {
return new SkContourMeasureIter(*path, forceClosed, resScale);
}
SKWASM_EXPORT SkContourMeasure* contourMeasureIter_next(
SkContourMeasureIter* iter) {
auto next = iter->next();
if (next) {
next->ref();
}
return next.get();
}
SKWASM_EXPORT void contourMeasureIter_dispose(SkContourMeasureIter* iter) {
delete iter;
}
SKWASM_EXPORT void contourMeasure_dispose(SkContourMeasure* measure) {
measure->unref();
}
SKWASM_EXPORT SkScalar contourMeasure_length(SkContourMeasure* measure) {
return measure->length();
}
SKWASM_EXPORT bool contourMeasure_isClosed(SkContourMeasure* measure) {
return measure->isClosed();
}
SKWASM_EXPORT bool contourMeasure_getPosTan(SkContourMeasure* measure,
SkScalar distance,
SkPoint* outPosition,
SkVector* outTangent) {
return measure->getPosTan(distance, outPosition, outTangent);
}
SKWASM_EXPORT SkPath* contourMeasure_getSegment(SkContourMeasure* measure,
SkScalar startD,
SkScalar stopD,
bool startWithMoveTo) {
SkPath* outPath = new SkPath();
if (!measure->getSegment(startD, stopD, outPath, startWithMoveTo)) {
delete outPath;
return nullptr;
}
return outPath;
}