#include <SkOpSpan.h>
Definition at line 178 of file SkOpSpan.h.
◆ Collapsed
Enumerator |
---|
kNo | |
kYes | |
kError | |
Definition at line 180 of file SkOpSpan.h.
180 {
184 };
@ kYes
Do pre-clip the geometry before applying the (perspective) matrix.
@ kNo
Don't pre-clip the geometry before applying the (perspective) matrix.
◆ addOpp()
Definition at line 158 of file SkOpSpan.cpp.
158 {
160 if (!oppPrev) {
161 return true;
162 }
166 return true;
167}
SkOpPtT * oppPrev(const SkOpPtT *opp) const
void addOpp(SkOpPtT *opp, SkOpPtT *oppPrev)
bool mergeMatches(SkOpSpanBase *opp)
void checkForCollapsedCoincidence()
const SkOpPtT * ptT() const
◆ bumpSpanAdds()
void SkOpSpanBase::bumpSpanAdds |
( |
| ) |
|
|
inline |
◆ chased()
bool SkOpSpanBase::chased |
( |
| ) |
const |
|
inline |
◆ checkForCollapsedCoincidence()
void SkOpSpanBase::checkForCollapsedCoincidence |
( |
| ) |
|
Definition at line 288 of file SkOpSpan.cpp.
288 {
291 return;
292 }
293
294
295
298 do {
299 if (!
test->coincident()) {
300 continue;
301 }
305}
void markCollapsed(SkOpPtT *)
SkOpCoincidence * coincidence()
SkOpGlobalState * globalState() const
◆ coinEnd()
◆ collapsed()
Definition at line 169 of file SkOpSpan.cpp.
169 {
171 const SkOpPtT* startNext =
nullptr;
173 double min = walk->
fT;
176 int safetyNet = 100000;
178 if (!--safetyNet) {
180 }
181 if (walk == startNext) {
183 }
185 continue;
186 }
191 }
192 startNext =
start->next();
193 }
195}
bool between(double a, double b, double c)
const SkOpPtT * next() const
const SkOpSegment * segment() const
SkOpSegment * segment() const
static float max(float r, float g, float b)
static float min(float r, float g, float b)
◆ contains() [1/2]
Definition at line 210 of file SkOpSpan.cpp.
210 {
215 continue;
216 }
218 return walk;
219 }
220 }
221 return nullptr;
222}
const SkOpSpanBase * span() const
◆ contains() [2/2]
bool SkOpSpanBase::contains |
( |
const SkOpSpanBase * |
span | ) |
const |
Definition at line 197 of file SkOpSpan.cpp.
197 {
204 return true;
205 }
206 }
207 return false;
208}
#define check(reporter, ref, unref, make, kill)
◆ containsCoinEnd() [1/2]
bool SkOpSpanBase::containsCoinEnd |
( |
const SkOpSegment * |
segment | ) |
const |
Definition at line 224 of file SkOpSpan.cpp.
224 {
227 while ((
next =
next->fCoinEnd) !=
this) {
229 return true;
230 }
231 }
232 return false;
233}
static float next(float f)
◆ containsCoinEnd() [2/2]
bool SkOpSpanBase::containsCoinEnd |
( |
const SkOpSpanBase * |
coin | ) |
const |
|
inline |
Definition at line 206 of file SkOpSpan.h.
206 {
209 while ((
next =
next->fCoinEnd) !=
this) {
211 return true;
212 }
213 }
214 return false;
215 }
◆ contour()
Definition at line 235 of file SkOpSpan.cpp.
235 {
237}
SkOpContour * contour() const
◆ debugAlignedEnd()
bool SkOpSpanBase::debugAlignedEnd |
( |
double |
t, |
|
|
const SkPoint & |
pt |
|
) |
| const |
◆ debugAlignedInner()
bool SkOpSpanBase::debugAlignedInner |
( |
| ) |
const |
◆ debugAngle()
Definition at line 718 of file PathOpsDebug.cpp.
718 {
720}
const SkOpAngle * debugAngle(int id) const
◆ debugBumpCount()
int SkOpSpanBase::debugBumpCount |
( |
| ) |
|
|
inline |
Definition at line 220 of file SkOpSpan.h.
220 {
222 }
#define SkDEBUGRELEASE(a, b)
◆ debugCoincidence()
Definition at line 722 of file PathOpsDebug.cpp.
722 {
724}
const SkOpCoincidence * debugCoincidence() const
◆ debugCoinEndLoopCheck()
bool SkOpSpanBase::debugCoinEndLoopCheck |
( |
| ) |
const |
Definition at line 2413 of file SkPathOpsDebug.cpp.
2413 {
2414 int loop = 0;
2417 do {
2418 nextCoin =
next->fCoinEnd;
2423 for (
int inner =
check + 1; inner < loop; ++inner) {
2425 if (checkCoin == innerCoin) {
2426 SkDebugf(
"*** bad coincident end loop ***\n");
2427 return false;
2428 }
2429 }
2430 }
2431 ++loop;
2432 }
while ((
next = nextCoin) &&
next !=
this);
2433 return true;
2434}
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
◆ debugContour()
Definition at line 726 of file PathOpsDebug.cpp.
726 {
728}
SkOpContour * debugContour(int id) const
◆ debugID()
int SkOpSpanBase::debugID |
( |
| ) |
const |
|
inline |
◆ debugPtT()
const SkOpPtT * SkOpSpanBase::debugPtT |
( |
int |
id | ) |
const |
Definition at line 730 of file PathOpsDebug.cpp.
730 {
732}
const SkOpPtT * debugPtT(int id) const
◆ debugResetCoinT()
void SkOpSpanBase::debugResetCoinT |
( |
| ) |
const |
Definition at line 2522 of file SkPathOpsDebug.cpp.
2522 {
2523#if DEBUG_COINCIDENCE_ORDER
2525 do {
2529#endif
2530}
void debugResetCoinT() const
◆ debugSegment()
Definition at line 734 of file PathOpsDebug.cpp.
734 {
736}
const SkOpSegment * debugSegment(int id) const
◆ debugSetCoinT()
void SkOpSpanBase::debugSetCoinT |
( |
int |
index | ) |
const |
Definition at line 2532 of file SkPathOpsDebug.cpp.
2532 {
2533#if DEBUG_COINCIDENCE_ORDER
2535 do {
2538 }
2541#endif
2542}
void debugSetCoinT(int) const
◆ debugSpan()
Definition at line 738 of file PathOpsDebug.cpp.
738 {
740}
const SkOpSpanBase * debugSpan(int id) const
◆ debugStarter()
Definition at line 2544 of file SkPathOpsDebug.cpp.
2544 {
2548 if (
t() <
end->t()) {
2550 } else {
2552 *endPtr = this;
2553 }
2555}
◆ debugValidate()
void SkOpSpanBase::debugValidate |
( |
| ) |
const |
Definition at line 2557 of file SkPathOpsDebug.cpp.
2557 {
2558#if DEBUG_COINCIDENCE
2560 return;
2561 }
2562#endif
2563#if DEBUG_VALIDATE
2566 do {
2567
2572 if (!this->final()) {
2574 }
2577 }
2578 if (!this->
final() && this->
upCast()->toAngle()) {
2580 }
2581#endif
2582}
void debugValidate() const
void debugValidate() const
bool debugCoinEndLoopCheck() const
SkOpAngle * toAngle() const
◆ deleted()
bool SkOpSpanBase::deleted |
( |
| ) |
const |
|
inline |
◆ dump()
void SkOpSpanBase::dump |
( |
| ) |
const |
◆ dumpAll()
void SkOpSpanBase::dumpAll |
( |
| ) |
const |
◆ dumpBase()
void SkOpSpanBase::dumpBase |
( |
| ) |
const |
Definition at line 759 of file PathOpsDebug.cpp.
759 {
762 }
765 }
766#ifdef SK_DEBUG
767 if (this->fDebugDeleted) {
769 }
770#endif
771 if (!this->final()) {
773 }
775 if (this != coin) {
777 }
else if (this->
final() || !this->
upCast()->isCoincident()) {
780 }
782}
const SkOpSpanBase * coinEnd() const
◆ dumpCoin()
void SkOpSpanBase::dumpCoin |
( |
| ) |
const |
Definition at line 784 of file PathOpsDebug.cpp.
784 {
786 if (!span) {
787 return;
788 }
790 return;
791 }
793}
bool isCoincident() const
◆ dumpHead()
void SkOpSpanBase::dumpHead |
( |
| ) |
const |
◆ final()
bool SkOpSpanBase::final |
( |
| ) |
const |
|
inline |
◆ fromAngle()
SkOpAngle * SkOpSpanBase::fromAngle |
( |
| ) |
const |
|
inline |
◆ globalState()
Definition at line 239 of file SkOpSpan.cpp.
239 {
241}
SkOpGlobalState * globalState() const
◆ initBase()
Definition at line 243 of file SkOpSpan.cpp.
243 {
255}
void init(SkOpSpanBase *, double t, const SkPoint &, bool dup)
const SkPoint & pt() const
const SkOpSpan * prev() const
SkDEBUGCODE(int fCount;) SkDEBUGCODE(int fID
◆ insertCoinEnd()
Definition at line 282 of file SkOpSpan.h.
282 {
285 return;
286 }
293 }
void debugValidate() const
bool containsCoinEnd(const SkOpSpanBase *coin) const
◆ merge()
void SkOpSpanBase::merge |
( |
SkOpSpan * |
span | ) |
|
Definition at line 259 of file SkOpSpan.cpp.
259 {
266 return;
267 }
270 while (remainder != spanPtT) {
275 if (nextC->
span() == remainder->
span() && nextC->
fT == remainder->
fT) {
276 goto tryNextRemainder;
277 }
279 }
280 spanPtT->
insert(remainder);
281tryNextRemainder:
283 }
285}
bool zero_or_one(double x)
void insert(SkOpPtT *span)
bool contains(const SkOpSpanBase *) const
void release(const SkOpPtT *)
int compare(const void *untyped_lhs, const void *untyped_rhs)
◆ mergeMatches()
Definition at line 313 of file SkOpSpan.cpp.
313 {
317 int safetyHatch = 1000000;
318 do {
319 if (!--safetyHatch) {
320 return false;
321 }
322 testNext =
test->next();
323 if (
test->deleted()) {
324 continue;
325 }
330 continue;
331 }
333 const SkOpPtT* innerStop = inner;
334 do {
336 continue;
337 }
339 continue;
340 }
343
344
347 } else {
351 } else {
357 }
358 }
359#ifdef SK_DEBUG
360 const SkOpPtT* debugInner = inner;
361 while ((debugInner = debugInner->
next()) != innerStop) {
363 continue;
364 }
366 continue;
367 }
369 }
370#endif
371 break;
372 }
while ((inner = inner->
next()) != innerStop);
373 }
while ((
test = testNext) != stop);
375 return true;
376}
◆ prev() [1/2]
◆ prev() [2/2]
const SkOpSpan * SkOpSpanBase::prev |
( |
| ) |
const |
|
inline |
◆ pt()
const SkPoint & SkOpSpanBase::pt |
( |
| ) |
const |
|
inline |
◆ ptT() [1/2]
◆ ptT() [2/2]
const SkOpPtT * SkOpSpanBase::ptT |
( |
| ) |
const |
|
inline |
◆ segment()
◆ setAligned()
void SkOpSpanBase::setAligned |
( |
| ) |
|
|
inline |
◆ setChased()
void SkOpSpanBase::setChased |
( |
bool |
chased | ) |
|
|
inline |
◆ setFromAngle()
void SkOpSpanBase::setFromAngle |
( |
SkOpAngle * |
angle | ) |
|
|
inline |
◆ setPrev()
void SkOpSpanBase::setPrev |
( |
SkOpSpan * |
prev | ) |
|
|
inline |
◆ simple()
bool SkOpSpanBase::simple |
( |
| ) |
const |
|
inline |
◆ SkDEBUGCODE()
SkOpSpanBase::SkDEBUGCODE |
( |
int fCount; |
| ) |
|
|
protected |
◆ spanAddsCount()
int SkOpSpanBase::spanAddsCount |
( |
| ) |
const |
|
inline |
◆ starter() [1/3]
◆ starter() [2/3]
Definition at line 358 of file SkOpSpan.h.
358 {
362 if (
t() <
end->t()) {
364 } else {
366 *endPtr = this;
367 }
369 }
◆ starter() [3/3]
◆ step()
Definition at line 371 of file SkOpSpan.h.
371 {
372 return t() <
end->t() ? 1 : -1;
373 }
◆ t()
double SkOpSpanBase::t |
( |
| ) |
const |
|
inline |
◆ unaligned()
void SkOpSpanBase::unaligned |
( |
| ) |
|
|
inline |
◆ upCast() [1/2]
◆ upCast() [2/2]
const SkOpSpan * SkOpSpanBase::upCast |
( |
| ) |
const |
|
inline |
◆ upCastable() [1/2]
Definition at line 393 of file SkOpSpan.h.
393 {
394 return final() ?
nullptr :
upCast();
395 }
◆ upCastable() [2/2]
const SkOpSpan * SkOpSpanBase::upCastable |
( |
| ) |
const |
|
inline |
Definition at line 397 of file SkOpSpan.h.
397 {
398 return final() ?
nullptr :
upCast();
399 }
◆ fAligned
bool SkOpSpanBase::fAligned |
|
protected |
◆ fChased
bool SkOpSpanBase::fChased |
|
protected |
◆ fCoinEnd
◆ fFromAngle
◆ fPrev
◆ fPtT
◆ fSegment
◆ fSpanAdds
int SkOpSpanBase::fSpanAdds |
|
protected |
The documentation for this class was generated from the following files: