void CTestView::PolygonFill(CDC* mdc)
{
HeadE=NULL;
for(CurrentB=HeadB;CurrentB!=NULL;CurrentB=CurrentB->next)
{
for(CurrentE=CurrentB->p;CurrentE!=NULL;CurrentE=CurrentE->next)
{
Edge *TEdge=new Edge;
TEdge->k=CurrentE->k;
TEdge->x=CurrentE->x;
TEdge->yMax=CurrentE->yMax;
TEdge->x1=CurrentE->x1;
TEdge->y1=CurrentE->y1;
TEdge->c1=CurrentE->c1;
TEdge->x2=CurrentE->x2;
TEdge->y2=CurrentE->y2;
TEdge->c2=CurrentE->c2;
TEdge->next=NULL;
AddAet(TEdge);
}
AetOrder();
T1=HeadE;
if(T1==NULL)
{
return;
}
while(CurrentB->ScanLine>=T1->yMax)
{
T1=T1->next;
HeadE=T1;
if(HeadE==NULL)
{
return;
}
}
if(T1->next!=NULL)
{
T2=T1;
T1=T2->next;
}
while(T1!=NULL)
{
if(CurrentB->ScanLine>=T1->yMax)
{
T2->next=T1->next;
T1->next=NULL;
T1=T2->next;
}
else
{
T2=T1;
T1=T2->next;
}
}
MyRGB Is,It,Ip;
if
{
HeadE=NULL;
for(CurrentB=HeadB;CurrentB!=NULL;CurrentB=CurrentB->next)
{
for(CurrentE=CurrentB->p;CurrentE!=NULL;CurrentE=CurrentE->next)
{
Edge *TEdge=new Edge;
TEdge->k=CurrentE->k;
TEdge->x=CurrentE->x;
TEdge->yMax=CurrentE->yMax;
TEdge->x1=CurrentE->x1;
TEdge->y1=CurrentE->y1;
TEdge->c1=CurrentE->c1;
TEdge->x2=CurrentE->x2;
TEdge->y2=CurrentE->y2;
TEdge->c2=CurrentE->c2;
TEdge->next=NULL;
AddAet(TEdge);
}
AetOrder();
T1=HeadE;
if(T1==NULL)
{
return;
}
while(CurrentB->ScanLine>=T1->yMax)
{
T1=T1->next;
HeadE=T1;
if(HeadE==NULL)
{
return;
}
}
if(T1->next!=NULL)
{
T2=T1;
T1=T2->next;
}
while(T1!=NULL)
{
if(CurrentB->ScanLine>=T1->yMax)
{
T2->next=T1->next;
T1->next=NULL;
T1=T2->next;
}
else
{
T2=T1;
T1=T2->next;
}
}
MyRGB Is,It,Ip;
if