/* * Copyright 2021 Google, LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "fuzz/Fuzz.h" #include "fuzz/FuzzCommon.h" #include "include/core/SkPath.h" #include "src/gpu/GrEagerVertexAllocator.h" #include "src/gpu/geometry/GrPathUtils.h" #include "src/gpu/geometry/GrTriangulator.h" DEF_FUZZ(Triangulation, fuzz) { SkPath path; FuzzEvilPath(fuzz, &path, SkPath::Verb::kDone_Verb); SkScalar tol = GrPathUtils::scaleToleranceToSrc(GrPathUtils::kDefaultTolerance, SkMatrix::I(), path.getBounds()); // TODO(robertphillips): messing w/ the clipBounds might be another axis to fuzz. // afaict it only affects inverse filled paths. SkRect clipBounds = path.getBounds(); GrCpuVertexAllocator allocator; bool isLinear; int count = GrTriangulator::PathToTriangles(path, tol, clipBounds, &allocator, &isLinear); if (count > 0) { allocator.detachVertexData(); // normally handled by the triangulating path renderer. } }