| 909 | //------------------------------------------------------------------------------ |
| 910 | |
| 911 | TEdge* FindNextLocMin(TEdge* E) |
| 912 | { |
| 913 | for (;;) |
| 914 | { |
| 915 | while (E->Bot != E->Prev->Bot || E->Curr == E->Top) E = E->Next; |
| 916 | if (!IsHorizontal(*E) && !IsHorizontal(*E->Prev)) break; |
| 917 | while (IsHorizontal(*E->Prev)) E = E->Prev; |
| 918 | TEdge* E2 = E; |
| 919 | while (IsHorizontal(*E)) E = E->Next; |
| 920 | if (E->Top.Y == E->Prev->Bot.Y) continue; //ie just an intermediate horz. |
| 921 | if (E2->Prev->Bot.X < E->Bot.X) E = E2; |
| 922 | break; |
| 923 | } |
| 924 | return E; |
| 925 | } |
| 926 | //------------------------------------------------------------------------------ |
| 927 | |
| 928 | TEdge* ClipperBase::ProcessBound(TEdge* E, bool NextIsForward) |