d2eb581ebc
When curves cross, their intersection points may be nearby, but not exactly the same. Sort the angles formed by the crossing curves when all angles don't have the same origin. This sets up the framework to solve test case that currently fail (e.g., joel6) but does not fix all related test cases (e.g., joel9). All older existing test cases, including extended tests, pass. Rework the test framework to better report when tests expected to produce failing results now pass. Add new point and vector operations to support offset angles. TBR=reed@google.com BUG=skia:6041 Change-Id: I67c651ded0a25e99ad93d55d6a35109b3ee3698e Reviewed-on: https://skia-review.googlesource.com/6624 Commit-Queue: Cary Clark <caryclark@google.com> Reviewed-by: Cary Clark <caryclark@google.com>
64 lines
2.9 KiB
C
64 lines
2.9 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 "SkPath.h"
|
|
#include "SkPathOpsTypes.h"
|
|
#include "SkStream.h"
|
|
#include "Test.h"
|
|
|
|
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 testPathOpFuzz(skiatest::Reporter* reporter, const SkPath& a,
|
|
const SkPath& b, const SkPathOp , const char* testName);
|
|
extern bool testPathOpTry(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);
|
|
extern bool testSimplifyFuzz(skiatest::Reporter* reporter, const SkPath& path,
|
|
const char* filename);
|
|
extern bool testSimplifyTry(skiatest::Reporter* reporter, const SkPath& path, const char* filename);
|
|
|
|
void initializeTests(skiatest::Reporter* reporter, const char* testName);
|
|
|
|
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
|