home *** CD-ROM | disk | FTP | other *** search
-
-
- 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);
- }
-
-