| 212 | |
| 213 | |
| 214 | PJ_COORD pj_inv4d (PJ_COORD coo, PJ *P) { |
| 215 | int last_errno = proj_errno_reset(P); |
| 216 | |
| 217 | if (!P->skip_inv_prepare) |
| 218 | coo = inv_prepare (P, coo); |
| 219 | if (HUGE_VAL==coo.v[0]) |
| 220 | return proj_coord_error (); |
| 221 | |
| 222 | /* Call the highest dimensional converter available */ |
| 223 | if (P->inv4d) |
| 224 | coo = P->inv4d (coo, P); |
| 225 | else if (P->inv3d) |
| 226 | coo.lpz = P->inv3d (coo.xyz, P); |
| 227 | else if (P->inv) |
| 228 | coo.lp = P->inv (coo.xy, P); |
| 229 | else { |
| 230 | proj_errno_set (P, PROJ_ERR_OTHER_NO_INVERSE_OP); |
| 231 | return proj_coord_error (); |
| 232 | } |
| 233 | if (HUGE_VAL==coo.v[0]) |
| 234 | return proj_coord_error (); |
| 235 | |
| 236 | if (!P->skip_inv_finalize) |
| 237 | coo = inv_finalize (P, coo); |
| 238 | |
| 239 | return error_or_coord(P, coo, last_errno); |
| 240 | } |
no test coverage detected