2012-05-22 21:12:00 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2012 Google Inc.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
|
|
* found in the LICENSE file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "EdgeWalker_Test.h"
|
|
|
|
#include "Intersection_Tests.h"
|
2012-07-02 20:27:02 +00:00
|
|
|
#include "ShapeOps.h"
|
2012-05-22 21:12:00 +00:00
|
|
|
|
2012-07-23 12:14:49 +00:00
|
|
|
#define TEST(name) { name, #name }
|
|
|
|
|
2012-05-22 21:12:00 +00:00
|
|
|
static void testLine1() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(2,0);
|
|
|
|
path.lineTo(1,1);
|
|
|
|
path.lineTo(0,0);
|
|
|
|
path.close();
|
2012-06-07 21:09:20 +00:00
|
|
|
testSimplifyx(path);
|
2012-05-22 21:12:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void addInnerCWTriangle(SkPath& path) {
|
|
|
|
path.moveTo(3,0);
|
|
|
|
path.lineTo(4,1);
|
|
|
|
path.lineTo(2,1);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addInnerCCWTriangle(SkPath& path) {
|
|
|
|
path.moveTo(3,0);
|
|
|
|
path.lineTo(2,1);
|
|
|
|
path.lineTo(4,1);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addOuterCWTriangle(SkPath& path) {
|
|
|
|
path.moveTo(3,0);
|
|
|
|
path.lineTo(6,2);
|
|
|
|
path.lineTo(0,2);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addOuterCCWTriangle(SkPath& path) {
|
|
|
|
path.moveTo(3,0);
|
|
|
|
path.lineTo(0,2);
|
|
|
|
path.lineTo(6,2);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine2() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addInnerCWTriangle(path);
|
|
|
|
addOuterCWTriangle(path);
|
2012-06-07 21:09:20 +00:00
|
|
|
testSimplifyx(path);
|
2012-05-22 21:12:00 +00:00
|
|
|
}
|
|
|
|
|
2012-05-31 13:13:11 +00:00
|
|
|
static void testLine3() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addInnerCCWTriangle(path);
|
|
|
|
addOuterCWTriangle(path);
|
2012-06-07 21:09:20 +00:00
|
|
|
testSimplifyx(path);
|
2012-05-31 13:13:11 +00:00
|
|
|
}
|
|
|
|
|
2012-08-02 20:08:21 +00:00
|
|
|
static void testLine3a() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addInnerCWTriangle(path);
|
|
|
|
addOuterCCWTriangle(path);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine3b() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addInnerCCWTriangle(path);
|
|
|
|
addOuterCCWTriangle(path);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-05-31 13:13:11 +00:00
|
|
|
static void testLine4() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addOuterCCWTriangle(path);
|
|
|
|
addOuterCWTriangle(path);
|
2012-06-07 21:09:20 +00:00
|
|
|
testSimplifyx(path);
|
2012-05-31 13:13:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine5() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addOuterCWTriangle(path);
|
|
|
|
addOuterCWTriangle(path);
|
2012-06-07 21:09:20 +00:00
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine6() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,0);
|
|
|
|
path.lineTo(4,0);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(2,0);
|
|
|
|
path.lineTo(6,0);
|
|
|
|
path.lineTo(4,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine7() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,0);
|
|
|
|
path.lineTo(4,0);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(6,0);
|
|
|
|
path.lineTo(2,0);
|
|
|
|
path.lineTo(4,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
2012-05-31 13:13:11 +00:00
|
|
|
}
|
2012-05-22 21:12:00 +00:00
|
|
|
|
2012-07-11 17:52:32 +00:00
|
|
|
static void testLine7a() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,0);
|
|
|
|
path.lineTo(4,0);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine7b() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,0);
|
|
|
|
path.lineTo(4,0);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(6,0);
|
|
|
|
path.lineTo(2,0);
|
|
|
|
path.lineTo(4,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-06-07 21:09:20 +00:00
|
|
|
static void testLine8() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,4);
|
|
|
|
path.lineTo(4,4);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(2,4);
|
|
|
|
path.lineTo(6,4);
|
|
|
|
path.lineTo(4,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine9() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,4);
|
|
|
|
path.lineTo(4,4);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(6,4);
|
|
|
|
path.lineTo(2,4);
|
|
|
|
path.lineTo(4,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-02 20:27:02 +00:00
|
|
|
static void testLine10() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,4);
|
|
|
|
path.lineTo(4,4);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(2,1);
|
|
|
|
path.lineTo(3,4);
|
|
|
|
path.lineTo(6,1);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine10a() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(0,4);
|
|
|
|
path.lineTo(8,4);
|
|
|
|
path.lineTo(4,0);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(2,2);
|
|
|
|
path.lineTo(3,3);
|
|
|
|
path.lineTo(4,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addCWContainer(SkPath& path) {
|
|
|
|
path.moveTo(6,4);
|
|
|
|
path.lineTo(0,4);
|
|
|
|
path.lineTo(3,1);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addCCWContainer(SkPath& path) {
|
|
|
|
path.moveTo(0,4);
|
|
|
|
path.lineTo(6,4);
|
|
|
|
path.lineTo(3,1);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addCWContents(SkPath& path) {
|
|
|
|
path.moveTo(2,3);
|
|
|
|
path.lineTo(3,2);
|
|
|
|
path.lineTo(4,3);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void addCCWContents(SkPath& path) {
|
|
|
|
path.moveTo(3,2);
|
|
|
|
path.lineTo(2,3);
|
|
|
|
path.lineTo(4,3);
|
|
|
|
path.close();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine11() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addCWContainer(path);
|
|
|
|
addCWContents(path);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine12() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addCCWContainer(path);
|
|
|
|
addCWContents(path);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine13() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addCWContainer(path);
|
|
|
|
addCCWContents(path);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine14() {
|
|
|
|
SkPath path, simple;
|
|
|
|
addCCWContainer(path);
|
|
|
|
addCCWContents(path);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine15() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine16() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine17() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine18() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 4, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine19() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 16, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine20() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 12, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine21() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 16, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine22() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine23() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void testLine24a() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.moveTo(2,0);
|
|
|
|
path.lineTo(4,4);
|
|
|
|
path.lineTo(0,4);
|
|
|
|
path.close();
|
|
|
|
path.moveTo(2,0);
|
|
|
|
path.lineTo(1,2);
|
|
|
|
path.lineTo(2,2);
|
|
|
|
path.close();
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine24() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine25() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine26() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 12, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine27() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 8, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-11 17:52:32 +00:00
|
|
|
static void testLine28() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine29() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine30() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 4, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine31() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine32() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-12 21:05:13 +00:00
|
|
|
static void testLine33() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine34() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine35() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-13 21:07:52 +00:00
|
|
|
static void testLine36() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-23 12:14:49 +00:00
|
|
|
static void testLine37() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine38() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine40() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 18, 24, 24, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine41() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine42() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(8, 16, 17, 17, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine43() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 24, 18, 18, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine44() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 32, 27, 36, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine45() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine46() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
|
|
|
|
path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine47() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine48() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine49() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine50() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void testLine51() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-23 21:26:31 +00:00
|
|
|
static void testLine52() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine53() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine54() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
|
|
|
|
path.addRect(8, 4, 17, 17, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine55() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 6, 18, 18, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-25 12:05:18 +00:00
|
|
|
static void testLine56() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 20, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine57() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
|
|
|
|
path.addRect(20, 0, 30, 40, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-25 20:59:42 +00:00
|
|
|
static void testLine58() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 12, 12, (SkPath::Direction) 1);
|
|
|
|
path.addRect(0, 12, 9, 9, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine59() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 6, 18, 18, (SkPath::Direction) 1);
|
|
|
|
path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-07-27 18:26:38 +00:00
|
|
|
static void testLine60() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 12, 18, 18, (SkPath::Direction) 1);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine61() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 24, 24, (SkPath::Direction) 1);
|
|
|
|
path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine62() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine63() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 6, 12, 12, (SkPath::Direction) 1);
|
|
|
|
path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine64() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(18, 6, 30, 30, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine65() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
|
|
|
|
path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine66() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-08-02 20:08:21 +00:00
|
|
|
static void testLine67() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68a() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
|
|
|
|
path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68b() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68c() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
|
|
|
|
path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68d() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68e() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68f() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68g() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine68h() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
|
|
|
|
path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine69() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine70() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 24, 12, 12, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine71() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 0, 24, 24, (SkPath::Direction) 0);
|
|
|
|
path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
2012-08-03 15:05:04 +00:00
|
|
|
static void testLine72() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void testLine73() {
|
|
|
|
SkPath path, simple;
|
|
|
|
path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 40, 20, 20, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
|
|
|
|
path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
|
|
|
|
testSimplifyx(path);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void (*firstTest)() = testLine51;
|
2012-06-07 21:09:20 +00:00
|
|
|
|
2012-07-02 20:27:02 +00:00
|
|
|
static struct {
|
|
|
|
void (*fun)();
|
|
|
|
const char* str;
|
|
|
|
} tests[] = {
|
2012-08-03 15:05:04 +00:00
|
|
|
TEST(testLine73),
|
|
|
|
TEST(testLine72),
|
2012-08-02 20:08:21 +00:00
|
|
|
TEST(testLine71),
|
|
|
|
TEST(testLine70),
|
|
|
|
TEST(testLine69),
|
|
|
|
TEST(testLine68h),
|
|
|
|
TEST(testLine68g),
|
|
|
|
TEST(testLine68f),
|
|
|
|
TEST(testLine68e),
|
|
|
|
TEST(testLine68d),
|
|
|
|
TEST(testLine68c),
|
|
|
|
TEST(testLine68b),
|
|
|
|
TEST(testLine68a),
|
|
|
|
TEST(testLine67),
|
2012-07-27 18:26:38 +00:00
|
|
|
TEST(testLine66),
|
|
|
|
TEST(testLine65),
|
|
|
|
TEST(testLine64),
|
|
|
|
TEST(testLine63),
|
|
|
|
TEST(testLine62),
|
|
|
|
TEST(testLine61),
|
|
|
|
TEST(testLine60),
|
2012-07-25 20:59:42 +00:00
|
|
|
TEST(testLine59),
|
|
|
|
TEST(testLine58),
|
2012-07-25 12:05:18 +00:00
|
|
|
TEST(testLine57),
|
|
|
|
TEST(testLine56),
|
2012-07-23 21:26:31 +00:00
|
|
|
TEST(testLine55),
|
|
|
|
TEST(testLine54),
|
|
|
|
TEST(testLine53),
|
|
|
|
TEST(testLine52),
|
2012-07-23 12:14:49 +00:00
|
|
|
TEST(testLine51),
|
|
|
|
TEST(testLine50),
|
|
|
|
TEST(testLine49),
|
|
|
|
TEST(testLine48),
|
|
|
|
TEST(testLine47),
|
|
|
|
TEST(testLine46),
|
|
|
|
TEST(testLine45),
|
|
|
|
TEST(testLine44),
|
|
|
|
TEST(testLine43),
|
|
|
|
TEST(testLine42),
|
|
|
|
TEST(testLine41),
|
|
|
|
TEST(testLine40),
|
|
|
|
TEST(testLine38),
|
|
|
|
TEST(testLine37),
|
|
|
|
TEST(testLine36),
|
|
|
|
TEST(testLine35),
|
|
|
|
TEST(testLine34),
|
|
|
|
TEST(testLine33),
|
|
|
|
TEST(testLine32),
|
|
|
|
TEST(testLine31),
|
|
|
|
TEST(testLine30),
|
|
|
|
TEST(testLine29),
|
|
|
|
TEST(testLine28),
|
|
|
|
TEST(testLine27),
|
|
|
|
TEST(testLine26),
|
|
|
|
TEST(testLine25),
|
2012-07-02 20:27:02 +00:00
|
|
|
TEST(testLine24a),
|
|
|
|
TEST(testLine24),
|
2012-07-23 12:14:49 +00:00
|
|
|
TEST(testLine23),
|
|
|
|
TEST(testLine22),
|
|
|
|
TEST(testLine21),
|
|
|
|
TEST(testLine20),
|
|
|
|
TEST(testLine19),
|
|
|
|
TEST(testLine18),
|
|
|
|
TEST(testLine17),
|
|
|
|
TEST(testLine16),
|
|
|
|
TEST(testLine15),
|
|
|
|
TEST(testLine14),
|
|
|
|
TEST(testLine13),
|
|
|
|
TEST(testLine12),
|
|
|
|
TEST(testLine11),
|
|
|
|
TEST(testLine10a),
|
|
|
|
TEST(testLine10),
|
|
|
|
TEST(testLine9),
|
|
|
|
TEST(testLine8),
|
|
|
|
TEST(testLine7b),
|
|
|
|
TEST(testLine7a),
|
|
|
|
TEST(testLine7),
|
|
|
|
TEST(testLine6),
|
|
|
|
TEST(testLine5),
|
|
|
|
TEST(testLine4),
|
2012-08-02 20:08:21 +00:00
|
|
|
TEST(testLine3b),
|
|
|
|
TEST(testLine3a),
|
2012-07-23 12:14:49 +00:00
|
|
|
TEST(testLine3),
|
|
|
|
TEST(testLine2),
|
|
|
|
TEST(testLine1),
|
2012-05-22 21:12:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
static const size_t testCount = sizeof(tests) / sizeof(tests[0]);
|
|
|
|
|
2012-08-02 20:08:21 +00:00
|
|
|
static struct {
|
|
|
|
void (*fun)();
|
|
|
|
const char* str;
|
|
|
|
} subTests[] = {
|
|
|
|
TEST(testLine68h),
|
|
|
|
TEST(testLine68g),
|
|
|
|
TEST(testLine68f),
|
|
|
|
TEST(testLine68e),
|
|
|
|
TEST(testLine68d),
|
|
|
|
TEST(testLine68c),
|
|
|
|
TEST(testLine68b),
|
|
|
|
TEST(testLine68a),
|
|
|
|
};
|
|
|
|
|
|
|
|
static const size_t subTestCount = sizeof(subTests) / sizeof(subTests[0]);
|
|
|
|
|
2012-05-22 21:12:00 +00:00
|
|
|
static bool skipAll = false;
|
2012-08-02 20:08:21 +00:00
|
|
|
static bool runSubTests = false;
|
2012-05-22 21:12:00 +00:00
|
|
|
|
|
|
|
void SimplifyNew_Test() {
|
|
|
|
if (skipAll) {
|
|
|
|
return;
|
|
|
|
}
|
2012-07-23 12:14:49 +00:00
|
|
|
#ifdef SK_DEBUG
|
2012-07-27 18:26:38 +00:00
|
|
|
gDebugMaxWindSum = 4;
|
|
|
|
gDebugMaxWindValue = 4;
|
2012-08-02 20:08:21 +00:00
|
|
|
size_t index;
|
2012-07-23 12:14:49 +00:00
|
|
|
#endif
|
2012-08-02 20:08:21 +00:00
|
|
|
if (runSubTests) {
|
|
|
|
index = subTestCount - 1;
|
|
|
|
do {
|
|
|
|
SkDebugf(" %s [%s]\n", __FUNCTION__, subTests[index].str);
|
|
|
|
(*subTests[index].fun)();
|
|
|
|
} while (index--);
|
|
|
|
}
|
|
|
|
index = testCount - 1;
|
2012-05-22 21:12:00 +00:00
|
|
|
if (firstTest) {
|
2012-07-23 21:26:31 +00:00
|
|
|
while (index > 0 && tests[index].fun != firstTest) {
|
|
|
|
--index;
|
2012-05-22 21:12:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
bool firstTestComplete = false;
|
2012-07-23 21:26:31 +00:00
|
|
|
do {
|
|
|
|
SkDebugf(" %s [%s]\n", __FUNCTION__, tests[index].str);
|
2012-07-02 20:27:02 +00:00
|
|
|
(*tests[index].fun)();
|
2012-05-22 21:12:00 +00:00
|
|
|
firstTestComplete = true;
|
2012-07-23 21:26:31 +00:00
|
|
|
} while (index--);
|
2012-07-23 12:14:49 +00:00
|
|
|
#ifdef SK_DEBUG
|
|
|
|
gDebugMaxWindSum = SK_MaxS32;
|
|
|
|
gDebugMaxWindValue = SK_MaxS32;
|
|
|
|
#endif
|
2012-05-22 21:12:00 +00:00
|
|
|
}
|