/*
* 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
syntax highlighted by Code2HTML, v. 0.9.1