diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2015-10-27 10:32:46 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2015-10-27 10:32:46 +0100 |
| commit | caf4c9b1f2fd5be5b8924e4335f77c47f976348f (patch) | |
| tree | e620136f69e8432d06bccfaddbdfcc066d0aa7c5 /src/projects.h | |
| parent | f7ae30a3a9a9fa5ed36a4f937a8960a66b6b8141 (diff) | |
| parent | 757a2c8f946faccf9d094d76cb79e6ebe0006564 (diff) | |
| download | PROJ-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.h | 12 |
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 |
