// ProLatDLL.h
//
// Copyright 2002, Effective Objects

#ifndef PROLATDLL_H
#define PROLATDLL_H

// Define functions as imported for projects that use ProLatUTM.dll
#ifdef PROLATDLL_EXPORTS
#define PROLATDLL_API __declspec(dllexport)
#else
#define PROLATDLL_API __declspec(dllimport)
#endif

/* Some useful constants */
#ifndef FOURTHPI
#define FOURTHPI		0.78539816339744833
#endif
#ifndef HALFPI
#define HALFPI		1.5707963267948966
#endif
#ifndef PI
#define PI		3.14159265358979323846
#endif
#ifndef TWOPI
#define TWOPI		6.2831853071795864769
#endif
#ifndef RAD_TO_DEG
#define RAD_TO_DEG	57.29577951308232
#endif
#ifndef DEG_TO_RAD
#define DEG_TO_RAD	.0174532925199432958
#endif

#ifdef __cplusplus
extern "C" {
#endif

PROLATDLL_API int __stdcall ProLatDefineLatLong(const char *sDatum);
PROLATDLL_API int __stdcall ProLatDefineUTM(const char *sDatum, int iZone, int iSouth);
PROLATDLL_API int __stdcall ProLatDefineSPCS(const char *sDatum, int iZone, const char *sUnits);
PROLATDLL_API int __stdcall ProLatTransform(
											int    iSrcHandle, int  iDestHandle,
											double *pdfX,   double *pdfY,  double *pdfZ,
											int    iNCount);
PROLATDLL_API int __stdcall ProLatGeodeticToGeocentric(	int iHandle,
											double *pdfX, double *pdfY, double *pdfZ, int iNCount);
PROLATDLL_API int __stdcall ProLatGeocentricToGeodetic(int iHandle,
											double *pdfX, double *pdfY, double *pdfZ, int iNCount);
PROLATDLL_API void __stdcall ProLatClose(int Handle);
PROLATDLL_API void __stdcall ProLatStrErr(int iErrNo, char *sMsg, int iMaxChars);
PROLATDLL_API int __stdcall ProLatGetErrNo();
PROLATDLL_API void __stdcall ProLatSetFilePath(const char *sDir);

#ifdef __cplusplus
}
#endif

#endif