Flutter Engine
The Flutter Engine
FuzzPathMeasure.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2018 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "fuzz/Fuzz.h"
9#include "fuzz/FuzzCommon.h"
11
12void inline ignoreResult(bool ) {}
13
15 uint8_t bits;
16 fuzz->next(&bits);
18 for (auto index = 0; index < 6; ++index) {
19 fuzz->next(&distance[index]);
20 }
22 FuzzEvilPath(fuzz, &path, SkPath::Verb::kDone_Verb);
23 SkRect bounds = path.getBounds();
24 SkScalar maxDim = std::max(bounds.width(), bounds.height());
25 if (maxDim > 1000000) {
26 return;
27 }
28 SkScalar resScale = maxDim / 1000;
29 SkPathMeasure measure(path, bits & 1, resScale);
30 SkPoint position;
31 SkVector tangent;
32 ignoreResult(measure.getPosTan(distance[0], &position, &tangent));
33 SkPath dst;
34 ignoreResult(measure.getSegment(distance[1], distance[2], &dst, (bits >> 1) & 1));
35 ignoreResult(measure.nextContour());
36 ignoreResult(measure.getPosTan(distance[3], &position, &tangent));
37 ignoreResult(measure.getSegment(distance[4], distance[5], &dst, (bits >> 2) & 1));
38}
void FuzzEvilPath(Fuzz *fuzz, SkPath *path, int last_verb)
Definition: FuzzCommon.cpp:237
void ignoreResult(bool)
DEF_FUZZ(PathMeasure, fuzz)
bool getSegment(SkScalar startD, SkScalar stopD, SkPath *dst, bool startWithMoveTo)
bool getPosTan(SkScalar distance, SkPoint *position, SkVector *tangent)
Definition: SkPath.h:59
float SkScalar
Definition: extension.cpp:12
static float max(float r, float g, float b)
Definition: hsl.cpp:49
Optional< SkRect > bounds
Definition: SkRecords.h:189
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition: switches.h:57
CanvasPathMeasure PathMeasure
Definition: dart_ui.cc:56
dst
Definition: cp.py:12