7#ifndef SkOpCoincidence_DEFINED
8#define SkOpCoincidence_DEFINED
39 void debugCorrectEnds(SkPathOpsDebug::GlitchLog*
log)
const;
40 void debugCorrectOneEnd(SkPathOpsDebug::GlitchLog*
log,
43 bool debugExpand(SkPathOpsDebug::GlitchLog*
log)
const;
48 return fGlobalState->debugCoinDictEntry().fFunctionName;
63 bool flipped()
const {
return fOppPtTStart->
fT > fOppPtTEnd->
fT; }
145 , fSpanDeleted(
false)
146 , fPtAllocated(
false)
147 , fCoinExtended(
false)
148 , fSpanMerged(
false) {
163 void debugAddEndMovedSpans(SkPathOpsDebug::GlitchLog*
log)
const;
164 void debugAddExpanded(SkPathOpsDebug::GlitchLog* )
const;
165 void debugAddMissing(SkPathOpsDebug::GlitchLog* ,
bool* added)
const;
166 void debugAddOrOverlap(SkPathOpsDebug::GlitchLog*
log,
168 double coinTs,
double coinTe,
double oppTs,
double oppTe,
179 void debugCheckValid(SkPathOpsDebug::GlitchLog*
log)
const;
187 void debugCorrectEnds(SkPathOpsDebug::GlitchLog*
log)
const;
188 bool debugExpand(SkPathOpsDebug::GlitchLog* )
const;
189 void debugMark(SkPathOpsDebug::GlitchLog* )
const;
190 void debugMarkCollapsed(SkPathOpsDebug::GlitchLog* ,
192 void debugMarkCollapsed(SkPathOpsDebug::GlitchLog* ,
const SkOpPtT*
test)
const;
206 void debugRelease(SkPathOpsDebug::GlitchLog* ,
const SkOpSegment* )
const;
231 return !fHead && !fTop;
249 const_cast<SkOpPtT*
>(oppPtTStart),
const_cast<SkOpPtT*
>(oppPtTEnd));
260 double coinTs,
double coinTe,
double oppTs,
double oppTe,
bool* added);
266 double coinTs,
double coinTe,
double oppTs,
double oppTe,
272 void debugAddIfMissing(SkPathOpsDebug::GlitchLog* ,
275 void debugAddIfMissing(SkPathOpsDebug::GlitchLog* ,
277 double tStart,
double tEnd,
280 void debugAddEndMovedSpans(SkPathOpsDebug::GlitchLog* ,
282 void debugAddEndMovedSpans(SkPathOpsDebug::GlitchLog* ,
289 double* overS,
double* overE)
const;
sk_bzero(glyphs, sizeof(glyphs))
#define check(reporter, ref, unref, make, kill)
#define DEBUG_COIN_DECLARE_PARAMS()
#define DEBUG_COIN_DECLARE_ONLY_PARAMS()
#define SkDEBUGPARAMS(...)
#define SkDEBUGRELEASE(a, b)
const SkOpPtT * oppPtTEnd() const
void setOppPtTEnd(const SkOpPtT *ptT)
bool contains(const SkOpPtT *s, const SkOpPtT *e) const
SkCoincidentSpans * next()
SkOpPtT * oppPtTStartWritable() const
void setCoinPtTStart(const SkOpPtT *ptT)
SkOpPtT * coinPtTStartWritable() const
void setStarts(const SkOpPtT *coinPtTStart, const SkOpPtT *oppPtTStart)
void setEnds(const SkOpPtT *coinPtTEnd, const SkOpPtT *oppPtTEnd)
const SkOpPtT * coinPtTEnd() const
SkOpPtT * coinPtTEndWritable() const
void setNext(SkCoincidentSpans *next)
SkOpPtT * oppPtTEndWritable() const
SkDEBUGCODE(SkOpGlobalState *globalState() { return fGlobalState;}) void init(SkDEBUGCODE(SkOpGlobalState *globalState))
const SkOpPtT * coinPtTStart() const
void correctOneEnd(const SkOpPtT *(SkCoincidentSpans::*getEnd)() const, void(SkCoincidentSpans::*setEnd)(const SkOpPtT *ptT))
const char * debugID() const
const SkCoincidentSpans * next() const
SkCoincidentSpans ** nextPtr()
bool ordered(bool *result) const
void setCoinPtTEnd(const SkOpPtT *ptT)
void setOppPtTStart(const SkOpPtT *ptT)
bool collapsed(const SkOpPtT *) const
const SkOpPtT * oppPtTStart() const
bool extend(const SkOpPtT *coinPtTStart, const SkOpPtT *coinPtTEnd, const SkOpPtT *oppPtTStart, const SkOpPtT *oppPtTEnd)
void set(SkCoincidentSpans *next, const SkOpPtT *coinPtTStart, const SkOpPtT *coinPtTEnd, const SkOpPtT *oppPtTStart, const SkOpPtT *oppPtTEnd)
bool addExpanded(DEBUG_COIN_DECLARE_ONLY_PARAMS())
SkOpContour * debugContour(int id) const
const SkOpPtT * debugPtT(int id) const
void add(SkOpPtT *coinPtTStart, SkOpPtT *coinPtTEnd, SkOpPtT *oppPtTStart, SkOpPtT *oppPtTEnd)
bool addEndMovedSpans(DEBUG_COIN_DECLARE_ONLY_PARAMS())
bool apply(DEBUG_COIN_DECLARE_ONLY_PARAMS())
void debugShowCoincidence() const
void markCollapsed(SkOpPtT *)
bool contains(const SkOpPtT *coinPtTStart, const SkOpPtT *coinPtTEnd, const SkOpPtT *oppPtTStart, const SkOpPtT *oppPtTEnd) const
SkOpGlobalState * globalState()
bool extend(const SkOpPtT *coinPtTStart, const SkOpPtT *coinPtTEnd, const SkOpPtT *oppPtTStart, const SkOpPtT *oppPtTEnd)
const SkOpSpanBase * debugSpan(int id) const
const SkOpSegment * debugSegment(int id) const
void debugCheckBetween() const
void fixUp(SkOpPtT *deleted, const SkOpPtT *kept)
bool addMissing(bool *added DEBUG_COIN_DECLARE_PARAMS())
SkOpCoincidence(SkOpGlobalState *globalState)
static bool Ordered(const SkOpPtT *coinPtTStart, const SkOpPtT *oppPtTStart)
const SkOpGlobalState * globalState() const
void release(const SkOpSegment *)
void correctEnds(DEBUG_COIN_DECLARE_ONLY_PARAMS())
bool findOverlaps(SkOpCoincidence *DEBUG_COIN_DECLARE_PARAMS()) const
const SkOpAngle * debugAngle(int id) const
bool expand(DEBUG_COIN_DECLARE_ONLY_PARAMS())
bool mark(DEBUG_COIN_DECLARE_ONLY_PARAMS())
void debugValidate() const
void setCoincidence(SkOpCoincidence *coincidence)
const SkOpSpanBase * span() const
void setCoincident() const
const SkOpSegment * segment() const
const SkOpPtT * ptT() const