/* * geoLines.h -- * * This header file declares structures and functions that * manage GeoLn's (arrays of GeoPts) and GeoLnArr's (arrays of * GeoLn's). See the GeoLn(3) and GeoLnArr(3) man pages for details. * * Copyright (c) 2004 Gordon D. Carrie. All rights reserved. * * Licensed under the Open Software License version 2.1 * * Please address questions and feedback to user0@tkgeomap.org * * @(#) $Id: geoLines.h,v 1.5 2004/09/22 21:57:51 tkgeomap Exp $ * ******************************************** * */ #ifndef _GEOLINES_H_ #define _GEOLINES_H_ #include "geography.h" /* * For C++ compilers, use extern "C" */ #ifdef __cplusplus extern "C" { #endif /* * Structure to store an array of geographic points */ struct GeoLn { unsigned nPts; /* Number of points */ unsigned nPtsMax; /* Max number of points in current allocation */ Angle latMax; /* Max longitude */ Angle lonMax; /* Max latitude */ Angle latMin; /* Min longitude */ Angle lonMin; /* Min latitude */ GeoPt *pts; /* Array of points in the line */ }; typedef struct GeoLn *GeoLn; /* * Global functions that manage GeoLn structures */ EXTERN GeoLn GeoLnCreate _ANSI_ARGS_((unsigned nptsMax)); EXTERN void GeoLnClear _ANSI_ARGS_((GeoLn geoLn)); EXTERN void GeoLnSetAlloc _ANSI_ARGS_((GeoLn geoLn, unsigned nptsMax)); EXTERN void GeoLnAddPt _ANSI_ARGS_((GeoPt geoPt, GeoLn geoLn)); EXTERN GeoPt GeoLnGetPt _ANSI_ARGS_((GeoLn geoLn, unsigned n)); EXTERN void GeoLnDestroy _ANSI_ARGS_((GeoLn geoLn)); EXTERN CartPt GeoLnCtr _ANSI_ARGS_((GeoLn ln)); EXTERN int GeoLnContainGeoPt _ANSI_ARGS_((GeoPt geoPt, GeoLn geoLn)); /* * Structure to store an array of GeoLn's */ struct GeoLnArr { char *descr; /* Descriptor */ unsigned nLines; /* Number of lines */ unsigned nLinesMax; /* Max number of lines in current allocation */ unsigned nPts; /* Number of points for all lines */ unsigned nMax; /* Number of points in longest line */ Angle latMax; /* Max longitude for all lines */ Angle lonMax; /* Max latitude for all lines */ Angle latMin; /* Min longitude for all lines */ Angle lonMin; /* Min latitude for all lines */ GeoLn *lines; /* Array of lines */ }; typedef struct GeoLnArr *GeoLnArr; /* * Global functions to manage GeoLnArr's */ EXTERN GeoLnArr GeoLnArrCreate _ANSI_ARGS_((unsigned nLinesMax)); EXTERN void GeoLnArrSetDescr _ANSI_ARGS_((GeoLnArr lnArr, CONST char *descr)); EXTERN void GeoLnArrSetAlloc _ANSI_ARGS_((GeoLnArr lnArr, unsigned nLinesMax)); EXTERN int GeoLnArrAddLine _ANSI_ARGS_((GeoLn geoLn, GeoLnArr lnArr)); EXTERN int GeoLnArrPutLine _ANSI_ARGS_((GeoLn geoLn, GeoLnArr lnArr)); EXTERN int GeoLnArrContainGeoPt _ANSI_ARGS_((GeoPt geoPt, GeoLnArr lnArr)); EXTERN char *GeoLnArrGetDescr _ANSI_ARGS_((GeoLnArr lnArr)); EXTERN GeoLn GeoLnArrGetLine _ANSI_ARGS_((GeoLnArr lnArr, unsigned n)); EXTERN void GeoLnArrFree _ANSI_ARGS_((GeoLnArr lnArr)); EXTERN void GeoLnArrDestroy _ANSI_ARGS_((GeoLnArr lnArr)); /* * end block for C++ */ #ifdef __cplusplus } #endif #endif