Exemple #1
0
  private void calcViewPort(ViewPort viewPort) throws NoninvertibleTransformException {
    viewPortList = new ViewPort[numCols * numRows];

    /*
     * if(viewPort.getImageWidth() < width && viewPort.getImageHeight() <
     * height){ viewPortList[0] = viewPort; return; }
     */

    int vpCnt = 0;

    double imgPxX = viewPort.getImageWidth();
    double dWcX = viewPort.getAdjustedExtent().getWidth();
    double tileWcW = (getTile(vpCnt).getSize().getWidth() * dWcX) / imgPxX;

    double imgPxY = viewPort.getImageHeight();
    double dWcY = viewPort.getAdjustedExtent().getHeight();
    double tileWcH = (getTile(vpCnt).getSize().getHeight() * dWcY) / imgPxY;

    viewPortList[0] = viewPort.cloneViewPort();
    viewPortList[0].setImageSize(getTile(vpCnt).getSize());
    viewPortList[0].setExtent(
        new Rectangle2D.Double(
            viewPort.getAdjustedExtent().getMinX(),
            viewPort.getAdjustedExtent().getMaxY() - tileWcH,
            tileWcW,
            tileWcH));
    viewPortList[0].setAffineTransform(mat);

    double wt = tileWcW;
    double ht = tileWcH;
    double xt = viewPort.getAdjustedExtent().getMinX();
    double yt = viewPort.getAdjustedExtent().getMaxY() - tileWcH;

    for (int stepY = 0; stepY < numRows; stepY++) {
      wt = tileWcW;
      xt = viewPort.getAdjustedExtent().getMinX();
      for (int stepX = 0; stepX < numCols; stepX++) {
        vpCnt = stepY * numCols + stepX;
        if (vpCnt > 0) {
          if (stepX > 0) xt += wt;
          if ((xt + wt) > viewPort.getAdjustedExtent().getMaxX())
            wt = Math.abs(viewPort.getAdjustedExtent().getMaxX() - xt);

          viewPortList[vpCnt] = viewPort.cloneViewPort();
          viewPortList[vpCnt].setImageSize(getTile(vpCnt).getSize());
          viewPortList[vpCnt].setExtent(new Rectangle2D.Double(xt, yt, wt, ht));
          viewPortList[vpCnt].setAffineTransform(mat);
        }
        // System.out.println("ViewPort: "+vpCnt+" "+viewPortList[vpCnt].getAdjustedExtent()+"
        // "+getTile(vpCnt).getSize());
      }
      if ((yt - ht) < viewPort.getAdjustedExtent().getMinY()) {
        ht = Math.abs(yt - viewPort.getAdjustedExtent().getMinY());
        yt = viewPort.getAdjustedExtent().getMinY();
      } else yt -= ht;
    }
  }