SpatiaLite  4.0.0
 All Data Structures Files Functions Variables Typedefs Macros Pages
gg_const.h
Go to the documentation of this file.
1 /*
2  gg_const.h -- Gaia common support for geometries: constants
3 
4  version 4.0, 2012 August 6
5 
6  Author: Sandro Furieri a.furieri@lqt.it
7 
8  ------------------------------------------------------------------------------
9 
10  Version: MPL 1.1/GPL 2.0/LGPL 2.1
11 
12  The contents of this file are subject to the Mozilla Public License Version
13  1.1 (the "License"); you may not use this file except in compliance with
14  the License. You may obtain a copy of the License at
15  http://www.mozilla.org/MPL/
16 
17 Software distributed under the License is distributed on an "AS IS" basis,
18 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
19 for the specific language governing rights and limitations under the
20 License.
21 
22 The Original Code is the SpatiaLite library
23 
24 The Initial Developer of the Original Code is Alessandro Furieri
25 
26 Portions created by the Initial Developer are Copyright (C) 2008-2012
27 the Initial Developer. All Rights Reserved.
28 
29 Contributor(s):
30 Klaus Foerster klaus.foerster@svg.cc
31 
32 Alternatively, the contents of this file may be used under the terms of
33 either the GNU General Public License Version 2 or later (the "GPL"), or
34 the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
35 in which case the provisions of the GPL or the LGPL are applicable instead
36 of those above. If you wish to allow use of your version of this file only
37 under the terms of either the GPL or the LGPL, and not to allow others to
38 use your version of this file under the terms of the MPL, indicate your
39 decision by deleting the provisions above and replace them with the notice
40 and other provisions required by the GPL or the LGPL. If you do not delete
41 the provisions above, a recipient may use your version of this file under
42 the terms of any one of the MPL, the GPL or the LGPL.
43 
44 */
45 
46 
53 #ifndef _GG_CONST_H
54 #ifndef DOXYGEN_SHOULD_SKIP_THIS
55 #define _GG_CONST_H
56 #endif
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
63 /* constant values for getVectorLayersList modes */
64 
66 #define GAIA_VECTORS_LIST_FAST 0
67 
69 #define GAIA_VECTORS_LIST_OPTIMISTIC 1
70 
72 #define GAIA_VECTORS_LIST_PESSIMISTIC 2
73 
74 /* constant values for Vector Layer Types */
75 
77 #define GAIA_VECTOR_UNKNOWN -1
78 
79 #define GAIA_VECTOR_TABLE 1
80 
81 #define GAIA_VECTOR_VIEW 2
82 
83 #define GAIA_VECTOR_VIRTUAL 3
84 
85 /* constant values for Vector Layer Geometry Types */
86 
88 #define GAIA_VECTOR_GEOMETRY 0
89 
90 #define GAIA_VECTOR_POINT 1
91 
92 #define GAIA_VECTOR_LINESTRING 2
93 
94 #define GAIA_VECTOR_POLYGON 3
95 
96 #define GAIA_VECTOR_MULTIPOINT 4
97 
98 #define GAIA_VECTOR_MULTILINESTRING 5
99 
100 #define GAIA_VECTOR_MULTIPOLYGON 6
101 
102 #define GAIA_VECTOR_GEOMETRYCOLLECTION 7
103 
104 /* constant values for Spatial Index */
105 
107 #define GAIA_SPATIAL_INDEX_NONE 0
108 
109 #define GAIA_SPATIAL_INDEX_RTREE 1
110 
111 #define GAIA_SPATIAL_INDEX_MBRCACHE 2
112 
113 /* constant values for generic geometry classes */
114 
116 #define GAIA_TYPE_NONE 0
117 
118 #define GAIA_TYPE_POINT 1
119 
120 #define GAIA_TYPE_LINESTRING 2
121 
122 #define GAIA_TYPE_POLYGON 3
123 
124 /* constants that defines byte storage order */
126 #define GAIA_BIG_ENDIAN 0
127 
128 #define GAIA_LITTLE_ENDIAN 1
129 
130 /* constants that defines special markers used for encoding of SpatiaLite internal BLOB geometries */
132 #define GAIA_MARK_START 0x00
133 
134 #define GAIA_MARK_END 0xFE
135 
136 #define GAIA_MARK_MBR 0x7C
137 
138 #define GAIA_MARK_ENTITY 0x69
139 
140 /* constants that defines GEOMETRY CLASSes */
142 #define GAIA_UNKNOWN 0
143 
144 #define GAIA_POINT 1
145 
146 #define GAIA_LINESTRING 2
147 
148 #define GAIA_POLYGON 3
149 
150 #define GAIA_MULTIPOINT 4
151 
152 #define GAIA_MULTILINESTRING 5
153 
154 #define GAIA_MULTIPOLYGON 6
155 #define GAIA_MULTIPOLYGON 6
156 
157 #define GAIA_GEOMETRYCOLLECTION 7
158 
159 #define GAIA_POINTZ 1001
160 
161 #define GAIA_LINESTRINGZ 1002
162 
163 #define GAIA_POLYGONZ 1003
164 
165 #define GAIA_MULTIPOINTZ 1004
166 
167 #define GAIA_MULTILINESTRINGZ 1005
168 
169 #define GAIA_MULTIPOLYGONZ 1006
170 
171 #define GAIA_GEOMETRYCOLLECTIONZ 1007
172 
173 #define GAIA_POINTM 2001
174 
175 #define GAIA_LINESTRINGM 2002
176 
177 #define GAIA_POLYGONM 2003
178 
179 #define GAIA_MULTIPOINTM 2004
180 
181 #define GAIA_MULTILINESTRINGM 2005
182 
183 #define GAIA_MULTIPOLYGONM 2006
184 
185 #define GAIA_GEOMETRYCOLLECTIONM 2007
186 
187 #define GAIA_POINTZM 3001
188 
189 #define GAIA_LINESTRINGZM 3002
190 
191 #define GAIA_POLYGONZM 3003
192 
193 #define GAIA_MULTIPOINTZM 3004
194 
195 #define GAIA_MULTILINESTRINGZM 3005
196 
197 #define GAIA_MULTIPOLYGONZM 3006
198 
199 #define GAIA_GEOMETRYCOLLECTIONZM 3007
200 
201 /* constants that defines Compressed GEOMETRY CLASSes */
203 #define GAIA_COMPRESSED_LINESTRING 1000002
204 
205 #define GAIA_COMPRESSED_POLYGON 1000003
206 
207 #define GAIA_COMPRESSED_LINESTRINGZ 1001002
208 
209 #define GAIA_COMPRESSED_POLYGONZ 1001003
210 
211 #define GAIA_COMPRESSED_LINESTRINGM 1002002
212 
213 #define GAIA_COMPRESSED_POLYGONM 1002003
214 
215 #define GAIA_COMPRESSED_LINESTRINGZM 1003002
216 
217 #define GAIA_COMPRESSED_POLYGONZM 1003003
218 
219 /* constants that defines GEOS-WKB 3D CLASSes */
221 #define GAIA_GEOSWKB_POINTZ -2147483647
222 
223 #define GAIA_GEOSWKB_LINESTRINGZ -2147483646
224 
225 #define GAIA_GEOSWKB_POLYGONZ -2147483645
226 
227 #define GAIA_GEOSWKB_MULTIPOINTZ -2147483644
228 
229 #define GAIA_GEOSWKB_MULTILINESTRINGZ -2147483643
230 
231 #define GAIA_GEOSWKB_MULTIPOLYGONZ -2147483642
232 
233 #define GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ -2147483641
234 
235 /* constants that defines multitype values */
237 #define GAIA_NULL_VALUE 0
238 
239 #define GAIA_TEXT_VALUE 1
240 
241 #define GAIA_INT_VALUE 2
242 
243 #define GAIA_DOUBLE_VALUE 3
244 
245 /* constants that defines POINT index for LINESTRING */
247 #define GAIA_START_POINT 1
248 
249 #define GAIA_END_POINT 2
250 
251 #define GAIA_POINTN 3
252 
253 /* constants that defines MBRs spatial relationships */
255 #define GAIA_MBR_CONTAINS 1
256 
257 #define GAIA_MBR_DISJOINT 2
258 
259 #define GAIA_MBR_EQUAL 3
260 
261 #define GAIA_MBR_INTERSECTS 4
262 
263 #define GAIA_MBR_OVERLAPS 5
264 
265 #define GAIA_MBR_TOUCHES 6
266 
267 #define GAIA_MBR_WITHIN 7
268 
269 /* constants used for FilterMBR */
271 #define GAIA_FILTER_MBR_WITHIN 74
272 
273 #define GAIA_FILTER_MBR_CONTAINS 77
274 
275 #define GAIA_FILTER_MBR_INTERSECTS 79
276 
277 #define GAIA_FILTER_MBR_DECLARE 89
278 
279 /* constants defining SVG default values */
281 #define GAIA_SVG_DEFAULT_RELATIVE 0
282 
283 #define GAIA_SVG_DEFAULT_PRECISION 6
284 
285 #define GAIA_SVG_DEFAULT_MAX_PRECISION 15
286 
287 /* constants used for VirtualNetwork */
289 #define GAIA_NET_START 0x67
290 
291 #define GAIA_NET64_START 0x68
292 
293 #define GAIA_NET64_A_STAR_START 0x69
294 
295 #define GAIA_NET_END 0x87
296 
297 #define GAIA_NET_HEADER 0xc0
298 
299 #define GAIA_NET_CODE 0xa6
300 
301 #define GAIA_NET_ID 0xb5
302 
303 #define GAIA_NET_NODE 0xde
304 
305 #define GAIA_NET_ARC 0x54
306 
307 #define GAIA_NET_TABLE 0xa0
308 
309 #define GAIA_NET_FROM 0xa1
310 
311 #define GAIA_NET_TO 0xa2
312 
313 #define GAIA_NET_GEOM 0xa3
314 
315 #define GAIA_NET_NAME 0xa4
316 
317 #define GAIA_NET_A_STAR_COEFF 0xa5
318 
319 #define GAIA_NET_BLOCK 0xed
320 
321 /* constants used for Coordinate Dimensions */
323 #define GAIA_XY 0x00
324 
325 #define GAIA_XY_Z 0x01
326 
327 #define GAIA_XY_M 0x02
328 
329 #define GAIA_XY_Z_M 0x03
330 
331 /* constants used for length unit conversion */
333 #define GAIA_KM 0
334 
335 #define GAIA_M 1
336 
337 #define GAIA_DM 2
338 
339 #define GAIA_CM 3
340 
341 #define GAIA_MM 4
342 
343 #define GAIA_KMI 5
344 
345 #define GAIA_IN 6
346 
347 #define GAIA_FT 7
348 
349 #define GAIA_YD 8
350 
351 #define GAIA_MI 9
352 
353 #define GAIA_FATH 10
354 
355 #define GAIA_CH 11
356 
357 #define GAIA_LINK 12
358 
359 #define GAIA_US_IN 13
360 
361 #define GAIA_US_FT 14
362 
363 #define GAIA_US_YD 15
364 
365 #define GAIA_US_CH 16
366 
367 #define GAIA_US_MI 17
368 
369 #define GAIA_IND_YD 18
370 
371 #define GAIA_IND_FT 19
372 
373 #define GAIA_IND_CH 20
374 
375 #define GAIA_MIN_UNIT GAIA_KM
376 
377 #define GAIA_MAX_UNIT GAIA_IND_CH
378 
379 /* constants used for SHAPES */
381 #define GAIA_SHP_NULL 0
382 
383 #define GAIA_SHP_POINT 1
384 
385 #define GAIA_SHP_POLYLINE 3
386 
387 #define GAIA_SHP_POLYGON 5
388 
389 #define GAIA_SHP_MULTIPOINT 8
390 
391 #define GAIA_SHP_POINTZ 11
392 
393 #define GAIA_SHP_POLYLINEZ 13
394 
395 #define GAIA_SHP_POLYGONZ 15
396 
397 #define GAIA_SHP_MULTIPOINTZ 18
398 
399 #define GAIA_SHP_POINTM 21
400 
401 #define GAIA_SHP_POLYLINEM 23
402 
403 #define GAIA_SHP_POLYGONM 25
404 
405 #define GAIA_SHP_MULTIPOINTM 28
406 
407 /* constants used for Clone Special modes */
409 #define GAIA_SAME_ORDER 0
410 
411 #define GAIA_REVERSE_ORDER -1
412 
413 #define GAIA_LHR_ORDER -2
414 
415 /* macros */
429 #define gaiaGetPoint(xy,v,x,y) \
430  {*x = xy[(v) * 2]; \
431  *y = xy[(v) * 2 + 1];}
432 
446 #define gaiaSetPoint(xy,v,x,y) \
447  {xy[(v) * 2] = x; \
448  xy[(v) * 2 + 1] = y;}
449 
464 #define gaiaGetPointXYZ(xyz,v,x,y,z) \
465  {*x = xyz[(v) * 3]; \
466  *y = xyz[(v) * 3 + 1]; \
467  *z = xyz[(v) * 3 + 2];}
468 
483 #define gaiaSetPointXYZ(xyz,v,x,y,z) \
484  {xyz[(v) * 3] = x; \
485  xyz[(v) * 3 + 1] = y; \
486  xyz[(v) * 3 + 2] = z;}
487 
502 #define gaiaGetPointXYM(xym,v,x,y,m) \
503  {*x = xym[(v) * 3]; \
504  *y = xym[(v) * 3 + 1]; \
505  *m = xym[(v) * 3 + 2];}
506 
521 #define gaiaSetPointXYM(xym,v,x,y,m) \
522  {xym[(v) * 3] = x; \
523  xym[(v) * 3 + 1] = y; \
524  xym[(v) * 3 + 2] = m;}
525 
541 #define gaiaGetPointXYZM(xyzm,v,x,y,z,m) \
542  {*x = xyzm[(v) * 4]; \
543  *y = xyzm[(v) * 4 + 1]; \
544  *z = xyzm[(v) * 4 + 2]; \
545  *m = xyzm[(v) * 4 + 3];}
546 
562 #define gaiaSetPointXYZM(xyzm,v,x,y,z,m) \
563  {xyzm[(v) * 4] = x; \
564  xyzm[(v) * 4 + 1] = y; \
565  xyzm[(v) * 4 + 2] = z; \
566  xyzm[(v) * 4 + 3] = m;}
567 
568 
569 #ifdef __cplusplus
570 }
571 #endif
572 
573 #endif /* _GG_CONST_H */