Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | /*********************************************************** |
2 | ||
3 | Copyright 1987, 1998 The Open Group | |
4 | ||
5 | Permission to use, copy, modify, distribute, and sell this software and its | |
6 | documentation for any purpose is hereby granted without fee, provided that | |
7 | the above copyright notice appear in all copies and that both that | |
8 | copyright notice and this permission notice appear in supporting | |
9 | documentation. | |
10 | ||
11 | The above copyright notice and this permission notice shall be included in | |
12 | all copies or substantial portions of the Software. | |
13 | ||
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
17 | OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN | |
18 | AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | |
19 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
20 | ||
21 | Except as contained in this notice, the name of The Open Group shall not be | |
22 | used in advertising or otherwise to promote the sale, use or other dealings | |
23 | in this Software without prior written authorization from The Open Group. | |
24 | ||
25 | Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. | |
26 | ||
27 | All Rights Reserved | |
28 | ||
29 | Permission to use, copy, modify, and distribute this software and its | |
30 | documentation for any purpose and without fee is hereby granted, | |
31 | provided that the above copyright notice appear in all copies and that | |
32 | both that copyright notice and this permission notice appear in | |
33 | supporting documentation, and that the name of Digital not be | |
34 | used in advertising or publicity pertaining to distribution of the | |
35 | software without specific, written prior permission. | |
36 | ||
37 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING | |
38 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL | |
39 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR | |
40 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | |
41 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |
42 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | |
43 | SOFTWARE. | |
44 | ||
45 | ******************************************************************/ | |
46 | ||
47 | #ifndef __MIFPOLY_H__ | |
48 | #define __MIFPOLY_H__ | |
49 | ||
50 | #include <X11/Xfuncproto.h> | |
51 | ||
52 | #define EPSILON 0.000001 | |
53 | #define ISEQUAL(a,b) (fabs((a) - (b)) <= EPSILON) | |
54 | #define UNEQUAL(a,b) (fabs((a) - (b)) > EPSILON) | |
55 | #define WITHINHALF(a, b) (((a) - (b) > 0.0) ? (a) - (b) < 0.5 : \ | |
56 | (b) - (a) <= 0.5) | |
57 | #define ROUNDTOINT(x) ((int) (((x) > 0.0) ? ((x) + 0.5) : ((x) - 0.5))) | |
58 | #define ISZERO(x) (fabs((x)) <= EPSILON) | |
59 | #define PTISEQUAL(a,b) (ISEQUAL(a.x,b.x) && ISEQUAL(a.y,b.y)) | |
60 | #define PTUNEQUAL(a,b) (UNEQUAL(a.x,b.x) || UNEQUAL(a.y,b.y)) | |
61 | #define PtEqual(a, b) (((a).x == (b).x) && ((a).y == (b).y)) | |
62 | ||
63 | #define NotEnd 0 | |
64 | #define FirstEnd 1 | |
65 | #define SecondEnd 2 | |
66 | ||
67 | #define SQSECANT 108.856472512142 /* 1/sin^2(11/2) - for 11o miter cutoff */ | |
68 | #define D2SECANT 5.21671526231167 /* 1/2*sin(11/2) - max extension per width */ | |
69 | ||
70 | static _X_INLINE int | |
71 | ICEIL(double x) | |
72 | { | |
73 | int _cTmp = x; | |
74 | ||
75 | return ((x == _cTmp) || (x < 0.0)) ? _cTmp : _cTmp + 1; | |
76 | } | |
77 | ||
78 | /* Point with sub-pixel positioning. In this case we use doubles, but | |
79 | * see mifpolycon.c for other suggestions | |
80 | */ | |
81 | typedef struct _SppPoint { | |
82 | double x, y; | |
83 | } SppPointRec, *SppPointPtr; | |
84 | ||
85 | typedef struct _SppArc { | |
86 | double x, y, width, height; | |
87 | double angle1, angle2; | |
88 | } SppArcRec, *SppArcPtr; | |
89 | ||
90 | /* mifpolycon.c */ | |
91 | ||
92 | extern _X_EXPORT void miFillSppPoly(DrawablePtr /*dst */ , | |
93 | GCPtr /*pgc */ , | |
94 | int /*count */ , | |
95 | SppPointPtr /*ptsIn */ , | |
96 | int /*xTrans */ , | |
97 | int /*yTrans */ , | |
98 | double /*xFtrans */ , | |
99 | double /*yFtrans */ | |
100 | ); | |
101 | ||
102 | #endif /* __MIFPOLY_H__ */ |