21{{{{0.00010360032320022583, 1.0172703415155411}, {0.00014114845544099808, 1.0200891587883234}}},
22 {{{0.00010259449481964111, 1.017270140349865}, {0.00018215179443359375, 1.022890567779541}}}},
26 {{{{365.848175,5081.15186}, {368,5103}}}, {{{367.967712,5102.61084}, {368.278717,5105.71045}}}},
28 {{{{30,20}, {30,50}}}, {{{24,30}, {36,30}}}},
29 {{{{323,193}, {-317,193}}}, {{{0,994}, {0,0}}}},
30 {{{{90,230}, {160,60}}}, {{{60,120}, {260,120}}}},
31 {{{{90,230}, {160,60}}}, {{{181.176468,120}, {135.294128,120}}}},
32 {{{{181.1764678955078125f, 120}, {186.3661956787109375f, 134.7042236328125f}}},
33 {{{175.8309783935546875f, 141.5211334228515625f}, {187.8782806396484375f, 133.7258148193359375f}}}},
35 {{{{158.000000, 926.000000}, {1108.00000, 926.000000}}},
36 {{{1108.00000, 926.000000}, {1108.00000, 925.999634}}}},
37 {{{{1108,926}, {1108,925.9996337890625}}}, {{{158,926}, {1108,926}}}},
39 {{{{192, 4}, {243, 4}}}, {{{246, 4}, {189, 4}}}},
40 {{{{246, 4}, {189, 4}}}, {{{192, 4}, {243, 4}}}},
41 {{{{5, 0}, {0, 5}}}, {{{5, 4}, {1, 4}}}},
42 {{{{0, 0}, {1, 0}}}, {{{1, 0}, {0, 0}}}},
43 {{{{0, 0}, {0, 0}}}, {{{0, 0}, {1, 0}}}},
44 {{{{0, 1}, {0, 1}}}, {{{0, 0}, {0, 2}}}},
45 {{{{0, 0}, {1, 0}}}, {{{0, 0}, {2, 0}}}},
46 {{{{1, 1}, {2, 2}}}, {{{0, 0}, {3, 3}}}},
47 {{{{166.86950047022856, 112.69654129527828}, {166.86948801592692, 112.69655741235339}}},
48 {{{166.86960700313026, 112.6965477747386}, {166.86925794355412, 112.69656471103423}}}}
54 {{{{(double) (2 - 1e-6f),2}, {(double) (2 - 1e-6f),4}}},
57 {{{{0, 0}, {1, 0}}}, {{{3, 0}, {2, 0}}}},
58 {{{{0, 0}, {0, 0}}}, {{{1, 0}, {2, 0}}}},
59 {{{{0, 1}, {0, 1}}}, {{{0, 3}, {0, 2}}}},
60 {{{{0, 0}, {1, 0}}}, {{{2, 0}, {3, 0}}}},
61 {{{{1, 1}, {2, 2}}}, {{{4, 4}, {3, 3}}}},
67 {{{ {-1.48383003e-006,-83}, {4.2268899e-014,-60} }},
68 {{ {9.5359502e-007,-60}, {5.08227985e-015,-83} }}},
70 {{{ { 10105, 2510 }, { 10123, 2509.98999f } }},
71 {{{10105, 2509.98999f}, { 10123, 2510 } }}},
73 {{ { { 0, 482.5 }, { -4.4408921e-016, 682.5 } } },
74 {{{0,683}, {0,482}}}},
76 {{{{1.77635684e-015,312}, {-1.24344979e-014,348}}},
77 {{{0,348}, {0,312}}}},
79 {{{{979.304871, 561}, {1036.69507, 291}}},
80 {{{985.681519, 531}, {982.159790, 547.568542}}}},
82 {{{{232.159805, 547.568542}, {235.681549, 531}}},
83 {{{286.695129,291}, {229.304855,561}}}},
85 {{{{186.3661956787109375f, 134.7042236328125f}, {187.8782806396484375f, 133.7258148193359375f}}},
86 {{{175.8309783935546875f, 141.5211334228515625f}, {187.8782806396484375f, 133.7258148193359375f}}}},
88 {{{{235.681549, 531.000000}, {280.318420, 321.000000}}},
89 {{{286.695129, 291.000000}, {229.304855, 561.000000}}}},
96 for (
int i = 0;
i < ts.
used(); ++
i) {
104 result2 = line2.
ptAtT(ts[1][
i ^ 1]);
119 i.allowNear(nearAllowed);
120 int pts =
i.intersect(line1, line2);
124 if (line1[0] == line1[1] || line2[0] == line2[1]) {
127 if (line1[0].fY == line1[1].fY) {
134 if (line2[0].fY == line2[1].fY) {
141 if (line1[0].fX == line1[1].fX) {
142 double top =
std::min(line1[0].fY, line1[1].fY);
143 double bottom =
std::max(line1[0].fY, line1[1].fY);
145 ts.
vertical(line2, top, bottom, line1[0].fX, line1[0].fY != top);
148 if (line2[0].fX == line2[1].fX) {
149 double top =
std::min(line2[0].fY, line2[1].fY);
150 double bottom =
std::max(line2[0].fY, line2[1].fY);
152 ts.
vertical(line1, top, bottom, line2[0].fX, line2[0].fY != top);
163 int pts =
i.intersect(line1, line2);
167 if (line1[0] == line1[1] || line2[0] == line2[1]) {
170 if (line1[0].fY == line1[1].fY) {
179 if (line2[0].fY == line2[1].fY) {
188 if (line1[0].fX == line1[1].fX) {
189 double top =
std::min(line1[0].fY, line1[1].fY);
190 double bottom =
std::max(line1[0].fY, line1[1].fY);
192 ts.
vertical(line2, top, bottom, line1[0].fX, line1[0].fY != top);
197 if (line2[0].fX == line2[1].fX) {
198 double top =
std::min(line2[0].fY, line2[1].fY);
199 double bottom =
std::max(line2[0].fY, line2[1].fY);
201 ts.
vertical(line1, top, bottom, line2[0].fX, line2[0].fY != top);
static void check_results(skiatest::Reporter *reporter, const SkDLine &line1, const SkDLine &line2, const SkIntersections &ts, bool nearAllowed)
DEF_TEST(PathOpsLineIntersection, reporter)
static const size_t noIntersect_count
static const size_t tests_count
static void testOne(skiatest::Reporter *reporter, const SkDLine &line1, const SkDLine &line2, bool nearAllowed)
static void testOneCoincident(skiatest::Reporter *reporter, const SkDLine &line1, const SkDLine &line2)
static const SkDLine coincidentTests[][2]
static const size_t coincidentTests_count
static const SkDLine noIntersect[][2]
static const SkDLine tests[][2]
bool ValidLine(const SkDLine &line)
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
static bool left(const SkPoint &p0, const SkPoint &p1)
static bool right(const SkPoint &p0, const SkPoint &p1)
#define REPORTER_ASSERT(r, cond,...)
bool nearlySame(int index) const
int intersect(const SkDLine &, const SkDLine &)
const SkDPoint & pt(int index) const
int vertical(const SkDLine &, double top, double bottom, double x, bool flipped)
int horizontal(const SkDLine &, double left, double right, double y, bool flipped)
static float max(float r, float g, float b)
static float min(float r, float g, float b)
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
SkDPoint ptAtT(double t) const
bool approximatelyEqual(const SkDPoint &a) const
SkPoint asSkPoint() const
bool roughlyEqual(const SkDPoint &a) const