home *** CD-ROM | disk | FTP | other *** search
- /*
- * lemselect.c - object selection and proximity testing
- *
- * copyright (c) by Alan W. Paeth, 1987. All rights reserved.
- */
-
- #include "lem.h"
-
- elliresize(i)
- {
- }
-
- ellinearpt(i, x, y)
- {
- if (ptinrect(x, y, Oxl, Oyl, Oxh, Oyh, LINETOL))
- {
- if (dist(Ox, Oyh, x, y) < ENDTOL) return(1);
- if (dist(Ox, Oyl, x, y) < ENDTOL) return(1);
- if (dist(Oxl, Oy, x, y) < ENDTOL) return(1);
- if (dist(Oxh, Oy, x, y) < ENDTOL) return(1);
- if (dist(Ox, Oy, x, y) < ENDTOL) return(1);
- }
- return(0);
- }
-
- elliinrect(i, xl, yl, xh, yh)
- {
- return(objsupinrect(i, xl, yl, xh, yh));
- }
-
- ellicantug(i, x, y)
- {
- return(objsupcantug(i, x, y));
- }
-
- ellitug(i, xs, ys, xe, ye)
- {
- int n, s, e, w, c;
- n = dist(Ox, Oyh, xs, ys);
- s = dist(Ox, Oyl, xs, ys);
- w = dist(Oxl, Oy, xs, ys);
- e = dist(Oxh, Oy, xs, ys);
- c = dist(Ox, Oy, xs, ys);
- if (n<s && n<e && n<w && n<c) { if (Oys>Oye) Oys = ye; else Oye = ye; }
- if (s<n && s<e && s<w && s<c) { if (Oys<Oye) Oys = ye; else Oye = ye; }
- if (e<w && e<n && e<s && e<c) { if (Oxs>Oxe) Oxs = xe; else Oxe = xe; }
- if (w<e && w<n && w<s && w<c) { if (Oxs<Oxe) Oxs = xe; else Oxe = xe; }
- if (c<=n && c<=s && c<=e && c<=w) ellimove(i, xe-xs, ye-ys);
- }
-
- ellialign(i, x, y)
- int *x, *y;
- {
- int n, s, e, w, c;
- n = dist(Ox, Oyh, *x, *y);
- s = dist(Ox, Oyl, *x, *y);
- w = dist(Oxl, Oy, *x, *y);
- e = dist(Oxh, Oy, *x, *y);
- c = dist(Ox, Oy, *x, *y);
- *x = Ox;
- *y = Oy;
- if (n<s && n<e && n<w && n<c) *y = Oyh;
- if (s<n && s<e && s<w && s<c) *y = Oyl;
- if (e<w && e<n && e<s && e<c) *x = Oxh;
- if (w<=e && w<=n && w<=s && w<=c) *x = Oxl;
- }
-
- ellimove(i, x, y)
- {
- objsupmove(i, x, y);
- }
-
- elliaffine(i, m11, m12, m21, m22)
- float m11, m12, m21, m22;
- {
- objsupaffine(i, m11, m12, m21, m22, 1);
- }
-
- ellidraw(i, col)
- {
- int wid, hw2, hh2, hw7, hh7;
- wid = lemfont[Osizer].thick;
- hw2 = ABS(Ow)/4;
- hh2 = ABS(Oh)/4;
- hw7 = ABS(Ow)*7/16;
- hh7 = ABS(Oh)*7/16;
- drawvec(Oxl, Oy, Ox-hw7, Oy+hh2, col, wid, Oemph);
- drawvec(Ox-hw7, Oy+hh2, Ox-hw2, Oy+hh7, col, wid, Oemph);
- drawvec(Ox-hw2, Oy+hh7, Ox, Oyh, col, wid, Oemph);
- drawvec(Ox, Oyh, Ox+hw2, Oy+hh7, col, wid, Oemph);
- drawvec(Ox+hw2, Oy+hh7, Ox+hw7, Oy+hh2, col, wid, Oemph);
- drawvec(Ox+hw7, Oy+hh2, Oxh, Oy, col, wid, Oemph);
- drawvec(Oxh, Oy, Ox+hw7, Oy-hh2, col, wid, Oemph);
- drawvec(Ox+hw7, Oy-hh2, Ox+hw2, Oy-hh7, col, wid, Oemph);
- drawvec(Ox+hw2, Oy-hh7, Ox, Oyl, col, wid, Oemph);
- drawvec(Ox, Oyl, Ox-hw2, Oy-hh7, col, wid, Oemph);
- drawvec(Ox-hw2, Oy-hh7, Ox-hw7, Oy-hh2, col, wid, Oemph);
- drawvec(Ox-hw7, Oy-hh2, Oxl, Oy, col, wid, Oemph);
- }
-