/*Program to implement scan-fill*/ #include #include #include #include union REGS i,o; struct pt { int x,y; }; float xl,xr,yt,yb; int bc=0,xc,yc; struct point { float x,y; }; float m; int n=0,k,dy,dx,x,y,temp,a[20][2],xi[20]; float slope[20]; initmouse() { i.x.ax=0; int86(0x33,&i,&o); return(o.x.ax); } showmouseptr() { i.x.ax=1; int86(0x33,&i,&o); return(0); } hidemouseptr() { i.x.ax=2; int86(0x33,&i,&o); return(0); } void getmousepos(int *button,int *x,int *y) { i.x.ax=3; int86(0x33,&i,&o); *button=o.x.bx; *x=o.x.cx; *y=o.x.dx; } void scanfill() { int ik,j; for(ik=0;iky))||((a[ik][1]>y)&&(a[ik+1][1]<=y))) { xi[k]=(int)(a[ik][0]+slope[ik]*(y-a[ik][1])); k++; } } for(j=0;jxi[ik+1]) { temp=xi[ik]; xi[ik]=xi[ik+1]; xi[ik+1]=temp; } } setcolor(15); for(ik=0;ik1) line(p[n-2].x,p[n-2].y,xc,yc); showmouseptr(); delay(200); } } p[n]=p[0]; hidemouseptr(); line(p[n-1].x,p[n-1].y,p[n].x,p[n].y); showmouseptr(); getmousepos(&bc,&xc,&yc); //flag=1; bc=0; hidemouseptr(); cleardevice(); for(i=0;i