... |
... |
@@ -317,6 +317,7 @@ |
317
|
317
|
#define Flow_Up 0x08U
|
318
|
318
|
#define Overshoot_Top 0x10U
|
319
|
319
|
#define Overshoot_Bottom 0x20U
|
|
320
|
+#define Dropout 0x40U
|
320
|
321
|
|
321
|
322
|
|
322
|
323
|
/* States of each line, arc, and profile */
|
... |
... |
@@ -2447,7 +2448,7 @@ |
2447
|
2448
|
Draw_Sweep( RAS_ARG )
|
2448
|
2449
|
{
|
2449
|
2450
|
Int min_Y, max_Y, dropouts;
|
2450
|
|
- Int y, y_change, y_height;
|
|
2451
|
+ Int y, y_turn;
|
2451
|
2452
|
|
2452
|
2453
|
PProfile *Q, P, P_Left, P_Right;
|
2453
|
2454
|
|
... |
... |
@@ -2465,12 +2466,9 @@ |
2465
|
2466
|
|
2466
|
2467
|
ras.Proc_Sweep_Init( RAS_VARS min_Y, max_Y );
|
2467
|
2468
|
|
2468
|
|
- /* let's go, iterating through y_turns */
|
|
2469
|
+ /* let's go */
|
2469
|
2470
|
|
2470
|
|
- y = min_Y;
|
2471
|
|
- y_height = min_Y;
|
2472
|
|
-
|
2473
|
|
- while ( ++ras.maxBuff < ras.sizeBuff )
|
|
2471
|
+ for ( y = min_Y; y <= max_Y; )
|
2474
|
2472
|
{
|
2475
|
2473
|
/* check waiting list for new profile activations */
|
2476
|
2474
|
|
... |
... |
@@ -2478,8 +2476,7 @@ |
2478
|
2476
|
while ( *Q )
|
2479
|
2477
|
{
|
2480
|
2478
|
P = *Q;
|
2481
|
|
- P->start -= y_height;
|
2482
|
|
- if ( P->start == 0 )
|
|
2479
|
+ if ( P->start == y )
|
2483
|
2480
|
{
|
2484
|
2481
|
*Q = P->link; /* remove */
|
2485
|
2482
|
|
... |
... |
@@ -2492,8 +2489,7 @@ |
2492
|
2489
|
Q = &P->link;
|
2493
|
2490
|
}
|
2494
|
2491
|
|
2495
|
|
- y_change = (Int)*ras.maxBuff;
|
2496
|
|
- y_height = y_change - y;
|
|
2492
|
+ y_turn = (Int)*++ras.maxBuff;
|
2497
|
2493
|
|
2498
|
2494
|
do
|
2499
|
2495
|
{
|
... |
... |
@@ -2530,7 +2526,7 @@ |
2530
|
2526
|
P_Right->X = x2;
|
2531
|
2527
|
|
2532
|
2528
|
/* mark profile for drop-out processing */
|
2533
|
|
- P_Left->start = -1;
|
|
2529
|
+ P_Left->flags |= Dropout;
|
2534
|
2530
|
dropouts++;
|
2535
|
2531
|
}
|
2536
|
2532
|
}
|
... |
... |
@@ -2554,7 +2550,7 @@ |
2554
|
2550
|
Increment( &draw_left );
|
2555
|
2551
|
Increment( &draw_right );
|
2556
|
2552
|
}
|
2557
|
|
- while ( ++y < y_change );
|
|
2553
|
+ while ( ++y < y_turn );
|
2558
|
2554
|
}
|
2559
|
2555
|
|
2560
|
2556
|
return SUCCESS;
|
... |
... |
@@ -2566,9 +2562,9 @@ |
2566
|
2562
|
|
2567
|
2563
|
while ( P_Left && P_Right )
|
2568
|
2564
|
{
|
2569
|
|
- if ( P_Left->start )
|
|
2565
|
+ if ( P_Left->flags & Dropout )
|
2570
|
2566
|
{
|
2571
|
|
- P_Left->start = 0;
|
|
2567
|
+ P_Left->flags &= ~Dropout;
|
2572
|
2568
|
#if 0
|
2573
|
2569
|
dropouts--; /* -- this is useful when debugging only */
|
2574
|
2570
|
#endif
|