コード例 #1
0
ファイル: OMRasterObject.java プロジェクト: halset/openmap
  /**
   * Since the image doesn't necessarily need to be regenerated when it is merely moved, raster
   * objects have this function, called from generate() and when a placement attribute is changed.
   *
   * @return true if enough information is in the object for proper placement.
   * @param proj projection of window.
   */
  protected boolean position(Projection proj) {

    if (proj == null) {
      logger.fine("OMRasterObject: null projection in position!");
      return false;
    }

    projWidth = proj.getWidth();
    projHeight = proj.getHeight();

    switch (renderType) {
      case RENDERTYPE_LATLON:
        if (!proj.isPlotable(lat, lon)) {
          if (DEBUG) {
            logger.fine("OMRasterObject: point is not plotable!");
          }
          setNeedToReposition(true); // so we don't render it!
          return false;
        }
        point1 = (Point) proj.forward(lat, lon, new Point());
        break;
      case RENDERTYPE_XY:
        point1 = new Point(x, y);
        break;
      case RENDERTYPE_OFFSET:
        if (!proj.isPlotable(lat, lon)) {
          if (DEBUG) {
            logger.fine("OMRasterObject: point is not plotable!");
          }
          setNeedToReposition(true); // so we don't render it!
          return false;
        }
        point1 = (Point) proj.forward(lat, lon, new Point());
        point1.x += x;
        point1.y += y;
        break;
      case RENDERTYPE_UNKNOWN:
        if (DEBUG) {
          logger.fine("OMRasterObject.position(): ignoring unknown rendertype, wingin' it");
        }
        if (lat == 0 && lon == 0) {
          if (x == 0 && y == 0) {
            if (DEBUG) {
              logger.fine(
                  "OMRasterObject.position(): Not enough info in object to place it reasonably.");
            }
            point1 = new Point(-width, -height);
            point2 = new Point(0, 0);
            return false;
          } else {
            point1 = new Point(x, y);
          }

        } else {
          if (!proj.isPlotable(lat, lon)) {
            logger.fine("OMRasterObject: point is not plotable!");
            return false;
          }
          point1 = (Point) proj.forward(lat, lon, new Point());
        }
        break;
    }

    point2 = new Point(0, 0);
    point2.x = point1.x + width;
    point2.y = point1.y + height;
    setNeedToReposition(false);
    return true;
  }