1 | /* $Id$ $Revision$ */ |
2 | /* vim:set shiftwidth=4 ts=8: */ |
3 | |
4 | /************************************************************************* |
5 | * Copyright (c) 2011 AT&T Intellectual Property |
6 | * All rights reserved. This program and the accompanying materials |
7 | * are made available under the terms of the Eclipse Public License v1.0 |
8 | * which accompanies this distribution, and is available at |
9 | * http://www.eclipse.org/legal/epl-v10.html |
10 | * |
11 | * Contributors: See CVS logs. Details at http://www.graphviz.org/ |
12 | *************************************************************************/ |
13 | |
14 | |
15 | #ifndef VISIBILITY_H |
16 | #define VISIBILITY_H |
17 | |
18 | #include <assert.h> |
19 | #include <math.h> |
20 | #include <stdlib.h> |
21 | #include <limits.h> |
22 | #include "vispath.h" |
23 | #include "pathutil.h" |
24 | |
25 | #ifdef __cplusplus |
26 | extern "C" { |
27 | #endif |
28 | |
29 | typedef COORD **array2; |
30 | |
31 | #define OBSCURED 0.0 |
32 | #define EQ(p,q) ((p.x == q.x) && (p.y == q.y)) |
33 | #define NEQ(p,q) (!EQ(p,q)) |
34 | #define NIL(p) ((p)0) |
35 | #define CW 0 |
36 | #define CCW 1 |
37 | |
38 | struct vconfig_s { |
39 | int Npoly; |
40 | int N; /* number of points in walk of barriers */ |
41 | Ppoint_t *P; /* barrier points */ |
42 | int *start; |
43 | int *next; |
44 | int *prev; |
45 | |
46 | /* this is computed from the above */ |
47 | array2 vis; |
48 | }; |
49 | #ifdef _WIN32 |
50 | #ifndef PATHPLAN_EXPORTS |
51 | #define extern __declspec(dllimport) |
52 | #endif |
53 | #endif |
54 | /*end visual studio*/ |
55 | |
56 | extern COORD *ptVis(vconfig_t *, int, Ppoint_t); |
57 | extern int directVis(Ppoint_t, int, Ppoint_t, int, vconfig_t *); |
58 | extern void visibility(vconfig_t *); |
59 | extern int *makePath(Ppoint_t p, int pp, COORD * pvis, |
60 | Ppoint_t q, int qp, COORD * qvis, |
61 | vconfig_t * conf); |
62 | |
63 | #undef extern |
64 | |
65 | #ifdef __cplusplus |
66 | } |
67 | #endif |
68 | #endif |
69 | |