39 return (blob ==
nullptr)
54 if (outline ==
nullptr || outline->
loop ==
nullptr)
57 StartPoint = outline->
loop;
58 EdgePoint = StartPoint;
60 NextPoint = EdgePoint->
next;
63 if (EdgePoint->
pos.
x != NextPoint->
pos.
x ||
64 EdgePoint->
pos.
y != NextPoint->
pos.
y) {
70 MFOutline =
push(MFOutline, NewPoint);
72 EdgePoint = NextPoint;
73 }
while (EdgePoint != StartPoint);
75 if (MFOutline !=
nullptr)
76 MakeOutlineCircular(MFOutline);
94 while (outline !=
nullptr) {
96 if (mf_outline !=
nullptr)
97 mf_outlines =
push(mf_outlines, mf_outline);
98 outline = outline->
next;
122 if (DegenerateOutline (Outline))
125 Last = PointAt (Outline);
126 Outline = NextPointAfter (Outline);
129 Current = PointAt (EdgePoint);
133 EdgePoint = NextPointAfter (EdgePoint);
135 while (EdgePoint != Outline);
148 auto Outline = static_cast<MFOUTLINE>(arg);
153 while (Start !=
nullptr) {
188 if (DegenerateOutline (Outline))
195 PointAt(Current)->MarkPoint();
198 while (Last != First);
206 return reinterpret_cast<MFEDGEPT *>(malloc(
sizeof(
MFEDGEPT)));
221 EdgePoint = NextPointAfter(EdgePoint);
222 while (!PointAt(EdgePoint)->ExtremityMark)
223 EdgePoint = NextPointAfter(EdgePoint);
249 MFEDGEPT *Current = PointAt(EdgePoint);
253 EdgePoint = NextPointAfter(EdgePoint);
254 }
while (EdgePoint != Outline);
283 ASSERT_HOST(!
"How did NormalizeOutlines get called in character mode?");
313 for (Current = Start; Current != End; Current = NextPointAfter (Current))
314 PointAt (Current)->Direction = Direction;
316 PointAt (End)->PreviousDirection = Direction;
337 CurrentPoint = PointAt(Current);
343 Current = NextPointAfter(Current);
345 while (Current != First);
374 Start->
Slope = -FLT_MAX;
377 Start->
Slope = FLT_MAX;
381 Start->
Slope = Delta.
y / Delta.
x;
384 if (Start->
Slope > MinSlope) {
385 if (Start->
Slope < MaxSlope) {
394 else if (Start->
Slope < -MinSlope) {
395 if (Start->
Slope > -MaxSlope) {
403 }
else if (Delta.
y > 0) {
404 if (Start->
Slope < -MinSlope) {
405 if (Start->
Slope > -MaxSlope) {
413 }
else if (Start->
Slope > MinSlope) {
414 if (Start->
Slope < MaxSlope) {
438 InitialDirection = PointAt (EdgePoint)->Direction;
442 EdgePoint = NextPointAfter(EdgePoint);
443 next_pt = NextPointAfter(EdgePoint);
444 }
while (PointAt(EdgePoint)->Direction == InitialDirection &&
445 !PointAt(EdgePoint)->Hidden &&
446 next_pt !=
nullptr && !PointAt(next_pt)->Hidden);