dae6b97705
Fail out in a couple of new places when the input data is very large and exceeds the limits of the pathops machinery. Most of the change here plumbs in a way to exclude an assert in one of these exceptional cases. The current SkAddIntersection implementation and the inner functions it calls has no way to report an error to the root caller for an early exit, so rather than add that in, exclude the assert when the test that would trigger it runs (allowing the test to otherwise ensure that it properly fails). TBR=reed@google.com BUG=617586,617635 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2046713003 Review-Url: https://codereview.chromium.org/2046713003
69 lines
3.0 KiB
C
69 lines
3.0 KiB
C
/*
|
|
* Copyright 2012 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
#ifndef PathOpsExtendedTest_DEFINED
|
|
#define PathOpsExtendedTest_DEFINED
|
|
|
|
#include "SkBitmap.h"
|
|
#include "SkCommandLineFlags.h"
|
|
#include "SkPath.h"
|
|
#include "SkPathOpsTypes.h"
|
|
#include "SkStream.h"
|
|
#include "Test.h"
|
|
|
|
DECLARE_bool(runFail);
|
|
DECLARE_bool(runBinary);
|
|
|
|
struct PathOpsThreadState;
|
|
|
|
struct TestDesc {
|
|
void (*fun)(skiatest::Reporter*, const char* filename);
|
|
const char* str;
|
|
};
|
|
|
|
//extern int comparePaths(const SkPath& one, const SkPath& two);
|
|
extern int comparePaths(skiatest::Reporter* reporter, const char* filename,
|
|
const SkPath& one, const SkPath& two, SkBitmap& bitmap);
|
|
|
|
inline int comparePaths(skiatest::Reporter* reporter, const char* filename,
|
|
const SkPath& one, const SkPath& two) {
|
|
SkBitmap bitmap;
|
|
return comparePaths(reporter, filename, one, two, bitmap);
|
|
}
|
|
|
|
extern bool drawAsciiPaths(const SkPath& one, const SkPath& two, bool drawPaths);
|
|
extern void showOp(const SkPathOp op);
|
|
extern bool testPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
|
|
const SkPathOp , const char* testName);
|
|
extern bool testPathOpCheck(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
|
|
const SkPathOp , const char* testName, bool checkFail);
|
|
extern bool testPathOpFailCheck(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
|
|
const SkPathOp , const char* testName);
|
|
extern bool testPathFailOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
|
|
const SkPathOp , const char* testName);
|
|
extern bool testPathSkipAssertOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
|
|
const SkPathOp , const char* testName);
|
|
extern bool testSimplify(SkPath& path, bool useXor, SkPath& out, PathOpsThreadState& state,
|
|
const char* pathStr);
|
|
extern bool testSimplify(skiatest::Reporter* reporter, const SkPath& path, const char* filename);
|
|
extern bool testSimplifyCheck(skiatest::Reporter* reporter, const SkPath& path,
|
|
const char* filename, bool checkFail);
|
|
|
|
void initializeTests(skiatest::Reporter* reporter, const char* testName);
|
|
void outputProgress(char* ramStr, const char* pathStr, SkPath::FillType );
|
|
void outputProgress(char* ramStr, const char* pathStr, SkPathOp op);
|
|
|
|
void RunTestSet(skiatest::Reporter* reporter, TestDesc tests[], size_t count,
|
|
void (*firstTest)(skiatest::Reporter* , const char* filename),
|
|
void (*skipTest)(skiatest::Reporter* , const char* filename),
|
|
void (*stopTest)(skiatest::Reporter* , const char* filename), bool reverse);
|
|
void ShowTestName(PathOpsThreadState* data, int a, int b, int c, int d);
|
|
void ShowFunctionHeader(const char* name);
|
|
void ShowPath(const SkPath& path, const char* pathName);
|
|
void ShowOp(SkPathOp op, const char* pathOne, const char* pathTwo);
|
|
|
|
#endif
|