aboutsummaryrefslogtreecommitdiff
path: root/src/proj_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/proj_api.h')
-rw-r--r--src/proj_api.h102
1 files changed, 66 insertions, 36 deletions
diff --git a/src/proj_api.h b/src/proj_api.h
index 24a6f053..706e35ab 100644
--- a/src/proj_api.h
+++ b/src/proj_api.h
@@ -25,45 +25,77 @@
* DEALINGS IN THE SOFTWARE.
*****************************************************************************/
+
+
+ /*
+ * This version number should be updated with every release! The format of
+ * PJ_VERSION is
+ *
+ * * Before version 4.10.0: PJ_VERSION=MNP where M, N, and P are the major,
+ * minor, and patch numbers; e.g., PJ_VERSION=493 for version 4.9.3.
+ *
+ * * Version 4.10.0 and later: PJ_VERSION=MMMNNNPP later where MMM, NNN, PP
+ * are the major, minor, and patch numbers (the minor and patch numbers
+ * are padded with leading zeros if necessary); e.g., PJ_VERSION=401000
+ * for version 4.10.0.
+ */
+ #ifndef PJ_VERSION
+ #define PJ_VERSION 493
+ #endif
+
+
+/* If we're not asked for PJ_VERSION only, give them everything */
+#ifndef PROJ_API_INCLUDED_FOR_PJ_VERSION_ONLY
/* General projections header file */
#ifndef PROJ_API_H
#define PROJ_API_H
-/* standard inclusions */
-#include <math.h>
-#include <stdlib.h>
-
#ifdef __cplusplus
extern "C" {
#endif
-/*
- * This version number should be updated with every release! The format of
- * PJ_VERSION is
- *
- * * Before version 4.10.0: PJ_VERSION=MNP where M, N, and P are the major,
- * minor, and patch numbers; e.g., PJ_VERSION=493 for version 4.9.3.
- *
- * * Version 4.10.0 and later: PJ_VERSION=MMMNNNPP later where MMM, NNN, PP
- * are the major, minor, and patch numbers (the minor and patch numbers
- * are padded with leading zeros if necessary); e.g., PJ_VERSION=401000
- * for version 4.10.0.
- */
-#define PJ_VERSION 493
+
+/* standard inclusions */
+#include <math.h>
+#include <stdlib.h>
+
/* pj_init() and similar functions can be used with a non-C locale */
/* Can be detected too at runtime if the symbol pj_atof exists */
#define PJ_LOCALE_SAFE 1
extern char const pj_release[]; /* global release id string */
+extern int pj_errno; /* global error return code */
#define RAD_TO_DEG 57.295779513082321
#define DEG_TO_RAD .017453292519943296
-extern int pj_errno; /* global error return code */
+#if defined(PROJECTS_H) || defined(PROJ_H)
+#define PROJ_API_H_NOT_INVOKED_AS_PRIMARY_API
+#endif
+
+
+
+#ifndef PROJ_H
+/* In proj.h these macros are replaced by the enumeration pj_debug_level */
+#define PJ_LOG_NONE 0
+#define PJ_LOG_ERROR 1
+#define PJ_LOG_DEBUG_MAJOR 2
+#define PJ_LOG_DEBUG_MINOR 3
+#endif
+
-#if !defined(PROJECTS_H)
+#ifdef PROJ_API_H_NOT_INVOKED_AS_PRIMARY_API
+ /* These make the function declarations below conform with classic proj */
+ typedef PJ *projPJ; /* projPJ is a pointer to PJ */
+ typedef projCtx_t *projCtx; /* projCtx is a pointer to projCtx_t */
+# define projXY XY
+# define projLP LP
+# define projXYZ XYZ
+# define projLPZ LPZ
+#else
+ /* i.e. proj_api invoked as primary API */
typedef struct { double u, v; } projUV;
typedef struct { double u, v, w; } projUVW;
typedef void *projPJ;
@@ -72,15 +104,12 @@ extern int pj_errno; /* global error return code */
#define projXYZ projUVW
#define projLPZ projUVW
typedef void *projCtx;
-#else
- typedef PJ *projPJ;
- typedef projCtx_t *projCtx;
-# define projXY XY
-# define projLP LP
-# define projXYZ XYZ
-# define projLPZ LPZ
#endif
+
+
+
+/* If included *after* proj.h finishes, we have alternative names */
/* file reading api, like stdio */
typedef int *PAFile;
typedef struct projFileAPI_t {
@@ -91,14 +120,20 @@ typedef struct projFileAPI_t {
void (*FClose)(PAFile);
} projFileAPI;
+
+
/* procedure prototypes */
+projCtx pj_get_default_ctx(void);
+projCtx pj_get_ctx( projPJ );
+
projXY pj_fwd(projLP, projPJ);
projLP pj_inv(projXY, projPJ);
projXYZ pj_fwd3d(projLPZ, projPJ);
projLPZ pj_inv3d(projXYZ, projPJ);
+
int pj_transform( projPJ src, projPJ dst, long point_count, int point_offset,
double *x, double *y, double *z );
int pj_datum_transform( projPJ src, projPJ dst, long point_count, int point_offset,
@@ -128,6 +163,8 @@ projPJ pj_init_ctx( projCtx, int, char ** );
projPJ pj_init_plus_ctx( projCtx, const char * );
char *pj_get_def(projPJ, int);
projPJ pj_latlong_from_proj( projPJ );
+
+
void *pj_malloc(size_t);
void pj_dalloc(void *);
void *pj_calloc (size_t n, size_t size);
@@ -139,8 +176,8 @@ void pj_acquire_lock(void);
void pj_release_lock(void);
void pj_cleanup_lock(void);
-projCtx pj_get_default_ctx(void);
-projCtx pj_get_ctx( projPJ );
+int pj_run_selftests (int verbosity);
+
void pj_set_ctx( projPJ, projCtx );
projCtx pj_ctx_alloc(void);
void pj_ctx_free( projCtx );
@@ -168,17 +205,10 @@ char *pj_ctx_fgets(projCtx ctx, char *line, int size, PAFile file);
PAFile pj_open_lib(projCtx, const char *, const char *);
-int pj_run_selftests (int verbosity);
-
-
-#define PJ_LOG_NONE 0
-#define PJ_LOG_ERROR 1
-#define PJ_LOG_DEBUG_MAJOR 2
-#define PJ_LOG_DEBUG_MINOR 3
#ifdef __cplusplus
}
#endif
#endif /* ndef PROJ_API_H */
-
+#endif /* ndef PROJ_API_INCLUDED_FOR_PJ_VERSION_ONLY */