Bresenham line drawing algorithm


#include<graphics.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>


//Bresenham line drawing algorithm
//ULTIMATE NAPSTR


int wid;
void setpixel(int cx, int cy, int cz)
{
//setcolor(8);
bar(cx,cy,cx+cz,cy+cz);
}





void linebres(int xa,int ya,int xb,int yb)
{
int dx,dy,x,y,xend,p;
dx=abs(xa-xb);
dy=abs(ya-yb);
p=2*dy-dx;
if (xa>xb)
{
x=xb;
y=yb;
xend=xa;
}
else
{
x=xa;
y=ya;
xend=xb;
}
setpixel(x,y,wid);
while (x < xend)
{
x++;
if (p < 0)
{
p = p + 2 * dy;
}
else
{
y++;
p = p + 2 * (dy - dx);
}
setpixel(x,y,wid);
}
}






void main()
{
clrscr();
int gdriver=DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "\\tc\\bgi");




/*if (errorcode != grOk)  // an error occurred
{
   printf("Graphics error: %s\n", grapherrormsg(errorcode));
   printf("Press any key to halt:");
   getch();
   exit(1);             // return with error code
}
*/
int x1,x2,y1,y2;


cout<<" BRESENHAM LINE DRAWING"<<endl;
cout<<"Input X1 < 639 ";
cin>>x1;
cout<<"Input Y1 < 479 ";
cin>>y1;
cout<<"Input X2 < 639 ";
cin>>x2;
cout<<"Input Y2 < 479 ";
cin>>y2;
cout<<"input line width";
cin>>wid;
clrscr();
linebres(x1,y1,x2,y2);


getch();
}