|
|
1.1 root 1: /* $Header: mifpoly.h,v 1.1 87/09/11 07:20:47 toddb Exp $ */
2: /***********************************************************
3: Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
4: and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
5:
6: All Rights Reserved
7:
8: Permission to use, copy, modify, and distribute this software and its
9: documentation for any purpose and without fee is hereby granted,
10: provided that the above copyright notice appear in all copies and that
11: both that copyright notice and this permission notice appear in
12: supporting documentation, and that the names of Digital or MIT not be
13: used in advertising or publicity pertaining to distribution of the
14: software without specific, written prior permission.
15:
16: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
17: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
18: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
19: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
20: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
21: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
22: SOFTWARE.
23:
24: ******************************************************************/
25:
26: #define EPSILON 0.000001
27: #define ISEQUAL(a, b) (fabs((a) - (b)) <= EPSILON)
28: #define WITHINHALF(a, b) (((a) - (b) > 0.0) ? (a) - (b) < 0.5 : \
29: (b) - (a) <= 0.5)
30: #define ROUNDTOINT(x) ((int) (((x) > 0.0) ? ((x) + 0.5) : ((x) - 0.5)))
31: #define ISZERO(x) (fabs((x)) <= EPSILON)
32: #define PtEqual(a, b) (((a).x == (b).x) && ((a).y == (b).y))
33:
34: #define NotEnd 0
35: #define FirstEnd 1
36: #define SecondEnd 2
37:
38: /* Point with sub-pixel positioning. In this case we use doubles, but
39: * see mifpolycon.c for other suggestions
40: */
41: typedef struct _SppPoint {
42: double x, y;
43: } SppPointRec, *SppPointPtr;
44:
45: extern SppPointRec miExtendSegment();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.