File projection.diff of Package XyGrib

diff --git a/src/map/Projection_libproj.cpp b/src/map/Projection_libproj.cpp
index 1dcbd540..0299714e 100644
--- a/src/map/Projection_libproj.cpp
+++ b/src/map/Projection_libproj.cpp
@@ -93,9 +93,9 @@ void Projection_libproj::setProjection(int code)
     params[nbpar++] = "no_defs";
     params[nbpar++] = "over";	// allow longitude > 180°
     // XXX ouch pj_init
-    libProj = pj_init(nbpar, (char **)params);
+    libProj = proj_create_argv(PJ_DEFAULT_CTX, nbpar, (char **)params);
 	if (!libProj)
-		printf("proj error: %s\n", pj_strerrno(pj_errno));
+		printf("proj error: %s\n", proj_errno_string(proj_errno(libProj)));
 	assert(libProj);
 	currentProj = code;
 //	libProj->over = 1;		// allow longitude > 180°
@@ -106,23 +106,23 @@ void Projection_libproj::setProjection(int code)
 Projection_libproj::~Projection_libproj()
 {
     if (libProj != nullptr) {
-		pj_free(libProj);
+		proj_destroy(libProj);
 	}
 }
 
 //-------------------------------------------------------------------------------
 void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
 {
-	projUV data, res;
+	PJ_COORD data, res;
 	if (y <= -90.0)
 		y = -90.0+1e-5;
 	if (y >= 90.0)
 		y = 90.0-1e-5;
-	data.v =  y * DEG_TO_RAD;
-	data.u =  x * DEG_TO_RAD;
-	res = pj_fwd(data, libProj);
-	*i =  (int) (W/2.0 + scale * (res.u/111319.0-CX) + 0.5);
-	*j =  (int) (H/2.0 - scale * (res.v/111319.0-CY) + 0.5);
+	data.uv.v =  y;
+	data.uv.u =  x;
+	res = proj_trans(libProj, PJ_FWD, data);
+	*i =  (int) (W/2.0 + scale * (res.uv.u/111319.0-CX) + 0.5);
+	*j =  (int) (H/2.0 - scale * (res.uv.v/111319.0-CY) + 0.5);
 	//printf("PROJ   map2screen (%f %f) -> (%3d %3d)\n", x,y, *i,*j);
 }
 
@@ -130,12 +130,12 @@ void Projection_libproj::map2screen(double x, double y, int *i, int *j) const
 //-------------------------------------------------------------------------------
 void Projection_libproj::screen2map(int i, int j, double *x, double *y) const
 {
-	projUV data, res;
-	data.u =  ((i-W/2.0)/scale+ CX)*111319.0 ;
-	data.v =  ((H/2.0-j)/scale+ CY)*111319.0 ;
-	res = pj_inv(data, libProj);
-	*x = (double)(res.u*RAD_TO_DEG);
-	*y = (double)(res.v*RAD_TO_DEG);
+	PJ_COORD data, res;
+	data.uv.u =  ((i-W/2.0)/scale+ CX)*111319.0 ;
+	data.uv.v =  ((H/2.0-j)/scale+ CY)*111319.0 ;
+	res = proj_trans(libProj, PJ_INV, data);
+	*x = (double)(res.uv.u);
+	*y = (double)(res.uv.v);
 	//printf("PROJ   screen2map (%3d %3d) -> (%f %f)\n", i,j, *x,*y);
 }
 //--------------------------------------------------------------
 
openSUSE Build Service is sponsored by