home *** CD-ROM | disk | FTP | other *** search
- /*
- * lembox.c - box primitives
- *
- * copyright (c) by Alan W. Paeth, 1987. All rights reserved.
- */
-
- #include "lem.h"
-
- boxresize(i)
- {
- }
-
- boxnearpt(i, x, y)
- {
- int dx, dy;
- if (ptinrect(x, y, Oxl, Oyl, Oxh, Oyh, LINETOL))
- {
- dx = MIN(ABS(Ox-x), ABS(Oxh-x)); /* simplified for Iris C */
- dx = MIN(ABS(Oxl-x), dx);
- dy = MIN(ABS(Oy-y), ABS(Oyh-y));
- dy = MIN(ABS(Oyl-y), dy);
- if ((dx < ENDTOL) && (dy < 2*ENDTOL)) return(1);
- if ((dx < 2*ENDTOL) && (dy < ENDTOL)) return(1);
- }
- return(0);
- }
-
- boxinrect(i, xl, yl, xh, yh)
- {
- return(objsupinrect(i, xl, yl, xh, yh));
- }
-
- boxcantug(i, x, y)
- {
- return(objsupcantug(i, x, y));
- }
-
- boxtug(i, xs, ys, xe, ye)
- {
- int lx, mx, hx, ly, my, hy;
- lx = ABS(Oxl-xs);
- mx = ABS(Ox-xs);
- hx = ABS(Oxh-xs);
- if (lx<mx && lx<hx) { if (Oxs<Oxe) Oxs = xe; else Oxe = xe; }
- if (hx<lx && hx<mx) { if (Oxs>Oxe) Oxs = xe; else Oxe = xe; }
- ly = ABS(Oyl-ys);
- my = ABS(Oy-ys);
- hy = ABS(Oyh-ys);
- if (ly<my && ly<hy) { if (Oys<Oye) Oys = ye; else Oye = ye; }
- if (hy<ly && hy<my) { if (Oys>Oye) Oys = ye; else Oye = ye; }
- if (mx<=hx && mx<=lx && my<=hy && my<=ly) boxmove(i, xe-xs, ye-ys);
- }
-
- boxalign(i, x, y)
- int *x, *y;
- {
- int l, m, h;
- l = ABS(Oxl-*x);
- m = ABS(Ox-*x);
- h = ABS(Oxh-*x);
- if (l<m && l<h) *x = Oxl;
- if (m<h && m<l) *x = Ox;
- if (h<=l && h<=m) *x = Oxh;
- l = ABS(Oyl-*y);
- m = ABS(Oy-*y);
- h = ABS(Oyh-*y);
- if (l<m && l<h) *y = Oyl;
- if (m<h && m<l) *y = Oy;
- if (h<=l && h<=m) *y = Oyh;
- }
-
- boxmove(i, x, y)
- {
- objsupmove(i, x, y);
- }
-
- boxaffine(i, m11, m12, m21, m22)
- float m11, m12, m21, m22;
- {
- objsupaffine(i, m11, m12, m21, m22, 1);
- }
-
- boxdraw(i, col)
- {
- int wid;
- wid = lemfont[Osizer].thick;
- drawvec(Oxs, Oys, Oxe, Oys, col, wid, Oemph);
- drawvec(Oxe, Oys, Oxe, Oye, col, wid, Oemph);
- drawvec(Oxe, Oye, Oxs, Oye, col, wid, Oemph);
- drawvec(Oxs, Oye, Oxs, Oys, col, wid, Oemph);
- }
-