1 /* 2 * geoLines.h -- 3 * 4 * This header file declares structures and functions that 5 * manage GeoLn's (arrays of GeoPts) and GeoLnArr's (arrays of 6 * GeoLn's). See the GeoLn(3) and GeoLnArr(3) man pages for details. 7 * 8 * Copyright (c) 2004 Gordon D. Carrie. All rights reserved. 9 * 10 * Licensed under the Open Software License version 2.1 11 * 12 * Please address questions and feedback to user0@tkgeomap.org 13 * 14 * @(#) $Id: geoLines.h,v 1.5 2004/09/22 21:57:51 tkgeomap Exp $ 15 * 16 ******************************************** 17 * 18 */ 19 20 #ifndef _GEOLINES_H_ 21 #define _GEOLINES_H_ 22 23 #include "geography.h" 24 25 /* 26 * For C++ compilers, use extern "C" 27 */ 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 /* 34 * Structure to store an array of geographic points 35 */ 36 37 struct GeoLn { 38 unsigned nPts; /* Number of points */ 39 unsigned nPtsMax; /* Max number of points in current allocation */ 40 Angle latMax; /* Max longitude */ 41 Angle lonMax; /* Max latitude */ 42 Angle latMin; /* Min longitude */ 43 Angle lonMin; /* Min latitude */ 44 GeoPt *pts; /* Array of points in the line */ 45 }; 46 typedef struct GeoLn *GeoLn; 47 48 /* 49 * Global functions that manage GeoLn structures 50 */ 51 52 EXTERN GeoLn GeoLnCreate _ANSI_ARGS_((unsigned nptsMax)); 53 EXTERN void GeoLnClear _ANSI_ARGS_((GeoLn geoLn)); 54 EXTERN void GeoLnSetAlloc _ANSI_ARGS_((GeoLn geoLn, 55 unsigned nptsMax)); 56 EXTERN void GeoLnAddPt _ANSI_ARGS_((GeoPt geoPt, GeoLn geoLn)); 57 EXTERN GeoPt GeoLnGetPt _ANSI_ARGS_((GeoLn geoLn, unsigned n)); 58 EXTERN void GeoLnDestroy _ANSI_ARGS_((GeoLn geoLn)); 59 EXTERN CartPt GeoLnCtr _ANSI_ARGS_((GeoLn ln)); 60 EXTERN int GeoLnContainGeoPt _ANSI_ARGS_((GeoPt geoPt, 61 GeoLn geoLn)); 62 63 /* 64 * Structure to store an array of GeoLn's 65 */ 66 67 struct GeoLnArr { 68 char *descr; /* Descriptor */ 69 unsigned nLines; /* Number of lines */ 70 unsigned nLinesMax; /* Max number of lines in current allocation */ 71 unsigned nPts; /* Number of points for all lines */ 72 unsigned nMax; /* Number of points in longest line */ 73 Angle latMax; /* Max longitude for all lines */ 74 Angle lonMax; /* Max latitude for all lines */ 75 Angle latMin; /* Min longitude for all lines */ 76 Angle lonMin; /* Min latitude for all lines */ 77 GeoLn *lines; /* Array of lines */ 78 }; 79 typedef struct GeoLnArr *GeoLnArr; 80 81 /* 82 * Global functions to manage GeoLnArr's 83 */ 84 85 EXTERN GeoLnArr GeoLnArrCreate _ANSI_ARGS_((unsigned nLinesMax)); 86 EXTERN void GeoLnArrSetDescr _ANSI_ARGS_((GeoLnArr lnArr, 87 CONST char *descr)); 88 EXTERN void GeoLnArrSetAlloc _ANSI_ARGS_((GeoLnArr lnArr, 89 unsigned nLinesMax)); 90 EXTERN int GeoLnArrAddLine _ANSI_ARGS_((GeoLn geoLn, 91 GeoLnArr lnArr)); 92 EXTERN int GeoLnArrPutLine _ANSI_ARGS_((GeoLn geoLn, 93 GeoLnArr lnArr)); 94 EXTERN int GeoLnArrContainGeoPt _ANSI_ARGS_((GeoPt geoPt, 95 GeoLnArr lnArr)); 96 EXTERN char *GeoLnArrGetDescr _ANSI_ARGS_((GeoLnArr lnArr)); 97 EXTERN GeoLn GeoLnArrGetLine _ANSI_ARGS_((GeoLnArr lnArr, 98 unsigned n)); 99 EXTERN void GeoLnArrFree _ANSI_ARGS_((GeoLnArr lnArr)); 100 EXTERN void GeoLnArrDestroy _ANSI_ARGS_((GeoLnArr lnArr)); 101 102 /* 103 * end block for C++ 104 */ 105 106 #ifdef __cplusplus 107 } 108 #endif 109 110 #endif 111