aboutsummaryrefslogtreecommitdiff
path: root/src/proj_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/proj_internal.h')
-rw-r--r--src/proj_internal.h163
1 files changed, 157 insertions, 6 deletions
diff --git a/src/proj_internal.h b/src/proj_internal.h
index 203765a3..5a075088 100644
--- a/src/proj_internal.h
+++ b/src/proj_internal.h
@@ -66,10 +66,6 @@
#include "proj.h"
-#ifdef PROJ_API_H
-#error proj_internal.h must be included before proj_api.h
-#endif
-
#ifdef PROJ_RENAME_SYMBOLS
#include "proj_symbol_rename.h"
#endif
@@ -910,7 +906,162 @@ void pj_clear_vgridshift_knowngrids_cache();
PJ_LP pj_generic_inverse_2d(PJ_XY xy, PJ *P, PJ_LP lpInitial);
-/* classic public API */
-#include "proj_api.h"
+
+
+
+/*****************************************************************************/
+/* */
+/* proj_api.h */
+/* */
+/* The rest of this header file includes what used to be "proj_api.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
+
+#define RAD_TO_DEG 57.295779513082321
+#define DEG_TO_RAD .017453292519943296
+
+
+#if defined(PROJ_H)
+#define PROJ_API_H_NOT_INVOKED_AS_PRIMARY_API
+#endif
+
+
+
+extern char const PROJ_DLL pj_release[]; /* global release id string */
+PROJ_DLL extern int pj_errno; /* global error return code */
+
+#ifndef PROJ_INTERNAL_H
+/* replaced by enum proj_log_level in proj_internal.h */
+#define PJ_LOG_NONE 0
+#define PJ_LOG_ERROR 1
+#define PJ_LOG_DEBUG_MAJOR 2
+#define PJ_LOG_DEBUG_MINOR 3
+#endif
+
+#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 struct projCtx_t *projCtx; /* projCtx is a pointer to projCtx_t */
+# define projXY PJ_XY
+# define projLP PJ_LP
+# define projXYZ PJ_XYZ
+# define projLPZ PJ_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;
+ #define projXY projUV
+ #define projLP projUV
+ #define projXYZ projUVW
+ #define projLPZ projUVW
+ typedef void *projCtx;
+#endif
+
+
+/* If included *after* proj.h finishes, we have alternative names */
+/* file reading api, like stdio */
+typedef int *PAFile;
+typedef struct projFileAPI_t {
+ PAFile (*FOpen)(projCtx ctx, const char *filename, const char *access);
+ size_t (*FRead)(void *buffer, size_t size, size_t nmemb, PAFile file);
+ int (*FSeek)(PAFile file, long offset, int whence);
+ long (*FTell)(PAFile file);
+ void (*FClose)(PAFile);
+} projFileAPI;
+
+
+
+/* procedure prototypes */
+
+projCtx PROJ_DLL pj_get_default_ctx(void);
+projCtx PROJ_DLL pj_get_ctx( projPJ );
+
+projXY PROJ_DLL pj_fwd(projLP, projPJ);
+projLP PROJ_DLL pj_inv(projXY, projPJ);
+
+projXYZ PROJ_DLL pj_fwd3d(projLPZ, projPJ);
+projLPZ PROJ_DLL pj_inv3d(projXYZ, projPJ);
+
+
+int PROJ_DLL pj_transform( projPJ src, projPJ dst, long point_count, int point_offset,
+ double *x, double *y, double *z );
+int PROJ_DLL pj_datum_transform( projPJ src, projPJ dst, long point_count, int point_offset,
+ double *x, double *y, double *z );
+int PROJ_DLL pj_geocentric_to_geodetic( double a, double es,
+ long point_count, int point_offset,
+ double *x, double *y, double *z );
+int PROJ_DLL pj_geodetic_to_geocentric( double a, double es,
+ long point_count, int point_offset,
+ double *x, double *y, double *z );
+int PROJ_DLL pj_compare_datums( projPJ srcdefn, projPJ dstdefn );
+int PROJ_DLL pj_apply_gridshift( projCtx, const char *, int,
+ long point_count, int point_offset,
+ double *x, double *y, double *z );
+void PROJ_DLL pj_deallocate_grids(void);
+void PROJ_DLL pj_clear_initcache(void);
+int PROJ_DLL pj_is_latlong(projPJ);
+int PROJ_DLL pj_is_geocent(projPJ);
+void PROJ_DLL pj_get_spheroid_defn(projPJ defn, double *major_axis, double *eccentricity_squared);
+void PROJ_DLL pj_pr_list(projPJ);
+void PROJ_DLL pj_free(projPJ);
+void PROJ_DLL pj_set_finder( const char *(*)(const char *) );
+void PROJ_DLL pj_set_searchpath ( int count, const char **path );
+projPJ PROJ_DLL pj_init(int, char **);
+projPJ PROJ_DLL pj_init_plus(const char *);
+projPJ PROJ_DLL pj_init_ctx( projCtx, int, char ** );
+projPJ PROJ_DLL pj_init_plus_ctx( projCtx, const char * );
+char PROJ_DLL *pj_get_def(projPJ, int);
+projPJ PROJ_DLL pj_latlong_from_proj( projPJ );
+int PROJ_DLL pj_has_inverse(projPJ);
+
+
+void PROJ_DLL *pj_malloc(size_t);
+void PROJ_DLL pj_dalloc(void *);
+void PROJ_DLL *pj_calloc (size_t n, size_t size);
+void PROJ_DLL *pj_dealloc (void *ptr);
+char PROJ_DLL *pj_strdup(const char *str);
+char PROJ_DLL *pj_strerrno(int);
+int PROJ_DLL *pj_get_errno_ref(void);
+const char PROJ_DLL *pj_get_release(void);
+void PROJ_DLL pj_acquire_lock(void);
+void PROJ_DLL pj_release_lock(void);
+void PROJ_DLL pj_cleanup_lock(void);
+
+void PROJ_DLL pj_set_ctx( projPJ, projCtx );
+projCtx PROJ_DLL pj_ctx_alloc(void);
+void PROJ_DLL pj_ctx_free( projCtx );
+int PROJ_DLL pj_ctx_get_errno( projCtx );
+void PROJ_DLL pj_ctx_set_errno( projCtx, int );
+void PROJ_DLL pj_ctx_set_debug( projCtx, int );
+void PROJ_DLL pj_ctx_set_logger( projCtx, void (*)(void *, int, const char *) );
+void PROJ_DLL pj_ctx_set_app_data( projCtx, void * );
+void PROJ_DLL *pj_ctx_get_app_data( projCtx );
+void PROJ_DLL pj_ctx_set_fileapi( projCtx, projFileAPI *);
+projFileAPI PROJ_DLL *pj_ctx_get_fileapi( projCtx );
+
+void PROJ_DLL pj_log( projCtx ctx, int level, const char *fmt, ... );
+void PROJ_DLL pj_stderr_logger( void *, int, const char * );
+
+/* file api */
+projFileAPI PROJ_DLL *pj_get_default_fileapi(void);
+
+PAFile PROJ_DLL pj_ctx_fopen(projCtx ctx, const char *filename, const char *access);
+size_t PROJ_DLL pj_ctx_fread(projCtx ctx, void *buffer, size_t size, size_t nmemb, PAFile file);
+int PROJ_DLL pj_ctx_fseek(projCtx ctx, PAFile file, long offset, int whence);
+long PROJ_DLL pj_ctx_ftell(projCtx ctx, PAFile file);
+void PROJ_DLL pj_ctx_fclose(projCtx ctx, PAFile file);
+char PROJ_DLL *pj_ctx_fgets(projCtx ctx, char *line, int size, PAFile file);
+
+PAFile PROJ_DLL pj_open_lib(projCtx, const char *, const char *);
+int PROJ_DLL pj_find_file(projCtx ctx, const char *short_filename,
+ char* out_full_filename, size_t out_full_filename_size);
+
+
#endif /* ndef PROJ_INTERNAL_H */