示例#1
0
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;
}
示例#2
0
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;
}