#include #include #include #include #define TOP 8 #define BOTTOM 4 #define LEFT 2 #define RIGHT 1 #define ACC(c1,c2) ((c1 == 0) && (c2 == 0)) #define REJ(c1,c2) ((c1 & c2) != 0) int getcode (int x, int y) { int code; if (y > 479) code=BOTTOM; else if (y < 0) code=TOP; else code=0; if (x > 639) code |= RIGHT; else if (x < 0) code |= LEFT; return code; } void main() { int Driver; /* The Graphics device driver */ int Mode; /* The Graphics mode value */ struct point { int x,y; } p1,p2; int c2,c1; printf("give me the 1st line point--->"); scanf("%d %d",&p1.x,&p1.y); printf("give me the 2nd line point--->"); scanf("%d %d",&p2.x,&p2.y); getche(); c1=getcode(p1.x,p1.y); c2=getcode(p2.x,p2.y); if (REJ(c1,c2)) printf("line cannot draw !!!\n"); else { printf("(%d,%d) --> code=%d\n",p1.x,p1.y,c1); printf("(%d,%d) --> code=%d\n",p2.x,p2.y,c2); getche(); Driver = DETECT; initgraph( &Driver, &Mode, "" ); line(p1.x,p1.y,p2.x,p2.y); } getche(); closegraph(); /* Return the system to text mode */ }