static enum pj_io_units get_next_non_whatever_unit(void *pipeline_data, int step, PJ_DIRECTION dir) { PJ **pipeline = static_cast<struct pj_opaque*>(pipeline_data)->pipeline; int nsteps = static_cast<struct pj_opaque*>(pipeline_data)->steps; int i; if (dir == PJ_FWD) { for (i = step+1; i<=nsteps; i++) { if (pj_left(pipeline[i]) != pj_right(pipeline[i])) return pj_left(pipeline[i]); if (pj_left(pipeline[i]) != PJ_IO_UNITS_WHATEVER) return pj_left(pipeline[i]); if (pj_right(pipeline[i]) != PJ_IO_UNITS_WHATEVER) return pj_right(pipeline[i]); } } else { for (i=step; i>1; i--) { if (pj_right(pipeline[i]) != pj_left(pipeline[i])) return pj_right(pipeline[i]); if (pj_right(pipeline[i]) != PJ_IO_UNITS_WHATEVER) return pj_right(pipeline[i]); if (pj_left(pipeline[i]) != PJ_IO_UNITS_WHATEVER) return pj_left(pipeline[i]); } } return PJ_IO_UNITS_WHATEVER; }
int proj_angular_input (PJ *P, enum PJ_DIRECTION dir) { /****************************************************************************** Returns 1 if the operator P expects angular input coordinates when operating in direction dir, 0 otherwise. dir: {PJ_FWD, PJ_INV} ******************************************************************************/ if (PJ_FWD==dir) return pj_left (P)==PJ_IO_UNITS_ANGULAR; return pj_right (P)==PJ_IO_UNITS_ANGULAR; }