Listing 2 /* clipLine() = draws the portion of a line that is within specified boundaries */ void clipLine(int x1,int y1,int x2,int y2,int color) { int xa,ya,xb,yb; if (x1 < x2) { xa = x1; ya = y1; xb = x2; yb = y2; } else { xa = x2; ya = y2; xb = x1; yb = y1; } if ((xa > xmax) || (xb < xmin)) return(0); if (xa < xmin) { ya = ya + (long)(xmin - xa)*(yb - ya)/(xb - xa); xa = xmin; } if (ya < ymin) { xa = xa + (long)(ymin - ya)*(xb - xa)/(yb - ya); ya = ymin; } if (ya > ymax) { xa = xa + (long)(ymax - ya)*(xb - xa)/(yb - ya); ya = ymax; } if (xb > xmax) { yb = ya + (long)(xmax - xa)*(yb - ya)/(xb - xa); xb = xmax; } if (yb < ymin) { xb = xa + (long)(ymin - ya)*(xb - xa)/(yb - ya); yb = ymin; } if (yb > ymax) { xb = xa + (long)(ymax - ya)*(xb - xa)/(yb - ya); yb = ymax; } drawLine(xa,ya,xb,yb,color); }