#include "src/pathops/SkOpAngle.h"
#include "include/core/SkPoint.h"
#include "include/core/SkScalar.h"
#include "include/private/base/SkFloatingPoint.h"
#include "include/private/base/SkTemplates.h"
#include "src/base/SkTSort.h"
#include "src/pathops/SkIntersections.h"
#include "src/pathops/SkOpSegment.h"
#include "src/pathops/SkOpSpan.h"
#include "src/pathops/SkPathOpsCubic.h"
#include "src/pathops/SkPathOpsCurve.h"
#include "src/pathops/SkPathOpsLine.h"
#include "src/pathops/SkPathOpsPoint.h"
#include <algorithm>
#include <cmath>
#if DEBUG_ANGLE
static bool CompareResult(const char* func, SkString* bugOut, SkString* bugPart, int append,
bool compare) {
SkDebugf("%s %c %d\n", bugOut->c_str(), compare ? 'T' : 'F', append);
SkDebugf("%sPart %s\n", func, bugPart[0].c_str());
SkDebugf("%sPart %s\n", func, bugPart[1].c_str());
SkDebugf("%sPart %s\n", func, bugPart[2].c_str());
return compare;
}
#define COMPARE_RESULT …
#else
#define COMPARE_RESULT(append, compare) …
#endif
bool SkOpAngle::after(SkOpAngle* test) { … }
int SkOpAngle::lineOnOneSide(const SkDPoint& origin, const SkDVector& line, const SkOpAngle* test,
bool useOriginal) const { … }
int SkOpAngle::lineOnOneSide(const SkOpAngle* test, bool useOriginal) { … }
int SkOpAngle::linesOnOriginalSide(const SkOpAngle* test) { … }
void SkOpAngle::alignmentSameSide(const SkOpAngle* test, int* order) const { … }
bool SkOpAngle::checkCrossesZero() const { … }
bool SkOpAngle::checkParallel(SkOpAngle* rh) { … }
bool SkOpAngle::computeSector() { … }
int SkOpAngle::convexHullOverlaps(const SkOpAngle* rh) { … }
double SkOpAngle::distEndRatio(double dist) const { … }
bool SkOpAngle::endsIntersect(SkOpAngle* rh) { … }
bool SkOpAngle::endToSide(const SkOpAngle* rh, bool* inside) const { … }
int SkOpAngle::findSector(SkPath::Verb verb, double x, double y) const { … }
SkOpGlobalState* SkOpAngle::globalState() const { … }
bool SkOpAngle::insert(SkOpAngle* angle) { … }
SkOpSpanBase* SkOpAngle::lastMarked() const { … }
bool SkOpAngle::loopContains(const SkOpAngle* angle) const { … }
int SkOpAngle::loopCount() const { … }
bool SkOpAngle::merge(SkOpAngle* angle) { … }
double SkOpAngle::midT() const { … }
bool SkOpAngle::midToSide(const SkOpAngle* rh, bool* inside) const { … }
bool SkOpAngle::oppositePlanes(const SkOpAngle* rh) const { … }
int SkOpAngle::orderable(SkOpAngle* rh) { … }
SkOpAngle* SkOpAngle::previous() const { … }
SkOpSegment* SkOpAngle::segment() const { … }
void SkOpAngle::set(SkOpSpanBase* start, SkOpSpanBase* end) { … }
void SkOpAngle::setSpans() { … }
void SkOpAngle::setSector() { … }
SkOpSpan* SkOpAngle::starter() { … }
bool SkOpAngle::tangentsDiverge(const SkOpAngle* rh, double s0xt0) { … }