aboutsummaryrefslogtreecommitdiff
path: root/src/projects.h
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2015-10-27 10:32:46 +0100
committerEven Rouault <even.rouault@spatialys.com>2015-10-27 10:32:46 +0100
commitcaf4c9b1f2fd5be5b8924e4335f77c47f976348f (patch)
treee620136f69e8432d06bccfaddbdfcc066d0aa7c5 /src/projects.h
parentf7ae30a3a9a9fa5ed36a4f937a8960a66b6b8141 (diff)
parent757a2c8f946faccf9d094d76cb79e6ebe0006564 (diff)
downloadPROJ-caf4c9b1f2fd5be5b8924e4335f77c47f976348f.tar.gz
PROJ-caf4c9b1f2fd5be5b8924e4335f77c47f976348f.zip
Merge branch 'master' of https://github.com/piyushrpt/proj.4
Conflicts: nad/tv_out.dist
Diffstat (limited to 'src/projects.h')
-rw-r--r--src/projects.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/projects.h b/src/projects.h
index 43287849..0b1d5b3e 100644
--- a/src/projects.h
+++ b/src/projects.h
@@ -147,13 +147,18 @@ typedef struct {
typedef struct { double u, v; } projUV;
typedef struct { double r, i; } COMPLEX;
+typedef struct { double u, v, w; } projUVW;
#ifndef PJ_LIB__
#define XY projUV
#define LP projUV
+#define XYZ projUVW
+#define LPZ projUVW
#else
typedef struct { double x, y; } XY;
typedef struct { double lam, phi; } LP;
+typedef struct { double x, y, z; } XYZ;
+typedef struct { double lam, phi, z; } LPZ;
#endif
typedef union { double f; int i; char *s; } PROJVALUE;
@@ -225,6 +230,8 @@ typedef struct PJconsts {
projCtx_t *ctx;
XY (*fwd)(LP, struct PJconsts *);
LP (*inv)(XY, struct PJconsts *);
+ XYZ (*fwd3d)(LPZ, struct PJconsts *);
+ LPZ (*inv3d)(XYZ, struct PJconsts *);
void (*spc)(LP, struct PJconsts *, struct FACTORS *);
void (*pfree)(struct PJconsts *);
const char *descr;
@@ -324,6 +331,7 @@ extern struct PJ_PRIME_MERIDIANS pj_prime_meridians[];
if( (P = (PJ*) pj_malloc(sizeof(PJ))) != NULL) { \
memset( P, 0, sizeof(PJ) ); \
P->pfree = freeup; P->fwd = 0; P->inv = 0; \
+ P->fwd3d = 0; P->inv3d = 0; \
P->spc = 0; P->descr = des_##name;
#define ENTRYX } return P; } else {
#define ENTRY0(name) ENTRYA(name) ENTRYX
@@ -333,9 +341,13 @@ extern struct PJ_PRIME_MERIDIANS pj_prime_meridians[];
#define E_ERROR(err) { pj_ctx_set_errno( P->ctx, err); freeup(P); return(0); }
#define E_ERROR_0 { freeup(P); return(0); }
#define F_ERROR { pj_ctx_set_errno( P->ctx, -20); return(xy); }
+#define F3_ERROR { pj_ctx_set_errno( P->ctx, -20); return(xyz); }
#define I_ERROR { pj_ctx_set_errno( P->ctx, -20); return(lp); }
+#define I3_ERROR { pj_ctx_set_errno( P->ctx, -20); return(lpz); }
#define FORWARD(name) static XY name(LP lp, PJ *P) { XY xy = {0.0,0.0}
#define INVERSE(name) static LP name(XY xy, PJ *P) { LP lp = {0.0,0.0}
+#define FORWARD3D(name) static XYZ name(LPZ lpz, PJ *P) {XYZ xyz = {0.0, 0.0, 0.0}
+#define INVERSE3D(name) static LPZ name(XYZ xyz, PJ *P) {LPZ lpz = {0.0, 0.0, 0.0}
#define FREEUP static void freeup(PJ *P) {
#define SPECIAL(name) static void name(LP lp, PJ *P, struct FACTORS *fac)
#endif