public Shape inverseTransform(Shape shape){
  float[] coords=new float[6];
  GeneralPath path=new GeneralPath(GeneralPath.WIND_EVEN_ODD);
  PathIterator pi=shape.getPathIterator(getInverseRotationTransform());
  while (!pi.isDone()) {
    int type=pi.currentSegment(coords);
    if (type == PathIterator.SEG_MOVETO) {
      path.moveTo(coords[0],coords[1]);
    }
 else     if (type == PathIterator.SEG_LINETO) {
      path.lineTo(coords[0],coords[1]);
    }
 else     if (type == PathIterator.SEG_CLOSE) {
      path.closePath();
    }
 else {
      if (type == PathIterator.SEG_QUADTO) {
        path.quadTo(coords[0],coords[1],coords[2],coords[3]);
      }
 else       if (type == PathIterator.SEG_CUBICTO) {
        path.curveTo(coords[0],coords[1],coords[2],coords[3],coords[4],coords[5]);
      }
    }
    pi.next();
  }
  return path;
}

public Shape inverseTransform ( Shape shape ) { float [ ] coords = new float [ 6 ] ; GeneralPath path = new GeneralPath ( GeneralPath . WIND_EVEN_ODD ) ; PathIterator pi = shape . getPathIterator ( getInverseRotationTransform ( ) ) ; while ( ! pi . isDone ( ) ) { int type = pi . currentSegment ( coords ) ; if ( type == PathIterator . SEG_MOVETO ) { path . moveTo ( coords [ 0 ] , coords [ 1 ] ) ; } else if ( type == PathIterator . SEG_LINETO ) { path . lineTo ( coords [ 0 ] , coords [ 1 ] ) ; } else if ( type == PathIterator . SEG_CLOSE ) { path . closePath ( ) ; } else { if ( type == PathIterator . SEG_QUADTO ) { path . quadTo ( coords [ 0 ] , coords [ 1 ] , coords [ 2 ] , coords [ 3 ] ) ; } else if ( type == PathIterator . SEG_CUBICTO ) { path . curveTo ( coords [ 0 ] , coords [ 1 ] , coords [ 2 ] , coords [ 3 ] , coords [ 4 ] , coords [ 5 ] ) ; } } pi . next ( ) ; } return path ; }
returns a transformed version of the shape , unrotated into the projected pixel space of the layer omgraphics .
