| Index: src/pathops/SkOpAngle.h
|
| ===================================================================
|
| --- src/pathops/SkOpAngle.h (revision 0)
|
| +++ src/pathops/SkOpAngle.h (revision 0)
|
| @@ -0,0 +1,91 @@
|
| +/*
|
| + * 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 SkOpAngle_DEFINED
|
| +#define SkOpAngle_DEFINED
|
| +
|
| +#include "SkLineParameters.h"
|
| +#include "SkPathOpsCubic.h"
|
| +#include "SkOpSpan.h"
|
| +#include "SkPath.h"
|
| +#include "SkTDArray.h"
|
| +
|
| +// sorting angles
|
| +// given angles of {dx dy ddx ddy dddx dddy} sort them
|
| +class SkOpAngle {
|
| +public:
|
| + bool operator<(const SkOpAngle& rh) const;
|
| + double dx() const {
|
| + return fTangent1.dx();
|
| + }
|
| +
|
| + double dy() const {
|
| + return fTangent1.dy();
|
| + }
|
| +
|
| + int end() const {
|
| + return fEnd;
|
| + }
|
| +
|
| + bool isHorizontal() const {
|
| + return dy() == 0 && fVerb == SkPath::kLine_Verb;
|
| + }
|
| +
|
| + bool lengthen();
|
| + bool reverseLengthen();
|
| + void set(const SkPoint* orig, SkPath::Verb verb, const SkOpSegment* segment,
|
| + int start, int end, const SkTDArray<SkOpSpan>& spans);
|
| +
|
| + void setSpans();
|
| + SkOpSegment* segment() const {
|
| + return const_cast<SkOpSegment*>(fSegment);
|
| + }
|
| +
|
| + int sign() const {
|
| + return SkSign32(fStart - fEnd);
|
| + }
|
| +
|
| + const SkTDArray<SkOpSpan>* spans() const {
|
| + return fSpans;
|
| + }
|
| +
|
| + int start() const {
|
| + return fStart;
|
| + }
|
| +
|
| + bool unsortable() const {
|
| + return fUnsortable;
|
| + }
|
| +
|
| +#if DEBUG_ANGLE
|
| + const SkPoint* pts() const {
|
| + return fPts;
|
| + }
|
| +
|
| + SkPath::Verb verb() const {
|
| + return fVerb;
|
| + }
|
| +
|
| + void debugShow(const SkPoint& a) const {
|
| + SkDebugf(" d=(%1.9g,%1.9g) side=%1.9g\n", dx(), dy(), fSide);
|
| + }
|
| +#endif
|
| +
|
| +private:
|
| + const SkPoint* fPts;
|
| + SkDCubic fCurvePart;
|
| + SkPath::Verb fVerb;
|
| + double fSide;
|
| + SkLineParameters fTangent1;
|
| + const SkTDArray<SkOpSpan>* fSpans;
|
| + const SkOpSegment* fSegment;
|
| + int fStart;
|
| + int fEnd;
|
| + bool fReversed;
|
| + mutable bool fUnsortable; // this alone is editable by the less than operator
|
| +};
|
| +
|
| +#endif
|
|
|