home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume10 / lemming / part01 / lembox.c < prev    next >
Encoding:
C/C++ Source or Header  |  1987-08-05  |  2.0 KB  |  92 lines

  1. /*
  2.  * lembox.c - box primitives
  3.  *
  4.  * copyright (c) by Alan W. Paeth, 1987. All rights reserved.
  5.  */
  6.  
  7. #include "lem.h"
  8.  
  9. boxresize(i)
  10.     {
  11.     }
  12.  
  13. boxnearpt(i, x, y)
  14.     {
  15.     int dx, dy;
  16.     if (ptinrect(x, y, Oxl, Oyl, Oxh, Oyh, LINETOL))
  17.         {
  18.     dx = MIN(ABS(Ox-x), ABS(Oxh-x));    /* simplified for Iris C */
  19.     dx = MIN(ABS(Oxl-x), dx);
  20.     dy = MIN(ABS(Oy-y), ABS(Oyh-y));
  21.     dy = MIN(ABS(Oyl-y), dy);
  22.         if ((dx < ENDTOL) && (dy < 2*ENDTOL)) return(1);
  23.         if ((dx < 2*ENDTOL) && (dy < ENDTOL)) return(1);
  24.     }
  25.     return(0);
  26.     }
  27.  
  28. boxinrect(i, xl, yl, xh, yh)
  29.     {
  30.     return(objsupinrect(i, xl, yl, xh, yh));
  31.     }
  32.  
  33. boxcantug(i, x, y)
  34.     {
  35.     return(objsupcantug(i, x, y));
  36.     }
  37.  
  38. boxtug(i, xs, ys, xe, ye)
  39.     {
  40.     int lx, mx, hx, ly, my, hy;
  41.     lx = ABS(Oxl-xs);
  42.     mx = ABS(Ox-xs);
  43.     hx = ABS(Oxh-xs);
  44.     if (lx<mx && lx<hx) { if (Oxs<Oxe) Oxs = xe; else Oxe = xe; }
  45.     if (hx<lx && hx<mx) { if (Oxs>Oxe) Oxs = xe; else Oxe = xe; }
  46.     ly = ABS(Oyl-ys);
  47.     my = ABS(Oy-ys);
  48.     hy = ABS(Oyh-ys);
  49.     if (ly<my && ly<hy) { if (Oys<Oye) Oys = ye; else Oye = ye; }
  50.     if (hy<ly && hy<my) { if (Oys>Oye) Oys = ye; else Oye = ye; }
  51.     if (mx<=hx && mx<=lx && my<=hy && my<=ly) boxmove(i, xe-xs, ye-ys);
  52.     }
  53.  
  54. boxalign(i, x, y)
  55.     int *x, *y;
  56.     {
  57.     int l, m, h;
  58.     l = ABS(Oxl-*x);
  59.     m = ABS(Ox-*x);
  60.     h = ABS(Oxh-*x);
  61.     if (l<m && l<h) *x = Oxl;
  62.     if (m<h && m<l) *x = Ox;
  63.     if (h<=l && h<=m) *x = Oxh;
  64.     l = ABS(Oyl-*y);
  65.     m = ABS(Oy-*y);
  66.     h = ABS(Oyh-*y);
  67.     if (l<m && l<h) *y = Oyl;
  68.     if (m<h && m<l) *y = Oy;
  69.     if (h<=l && h<=m) *y = Oyh;
  70.     }
  71.  
  72. boxmove(i, x, y)
  73.     {
  74.     objsupmove(i, x, y);
  75.     }
  76.  
  77. boxaffine(i, m11, m12, m21, m22)
  78.     float m11, m12, m21, m22;
  79.     {
  80.     objsupaffine(i, m11, m12, m21, m22, 1);
  81.     }
  82.  
  83. boxdraw(i, col)
  84.     {
  85.     int wid;
  86.     wid = lemfont[Osizer].thick;
  87.     drawvec(Oxs, Oys, Oxe, Oys, col, wid, Oemph);
  88.     drawvec(Oxe, Oys, Oxe, Oye, col, wid, Oemph);
  89.     drawvec(Oxe, Oye, Oxs, Oye, col, wid, Oemph);
  90.     drawvec(Oxs, Oye, Oxs, Oys, col, wid, Oemph);
  91.     }
  92.