Example #1
0
  public synchronized void redrawCurrentImage() {
    if (verbose) {
      System.out.println("redrawCurrentImage called");
      System.out.flush();
    }
    synchronized (redrawLock) {
      scheduled = false;
      drawing = true;
    }
    if (verbose) {
      System.out.println("redraw lock taken");
      System.out.flush();
    }

    Graphics2D G = bufferEnvImage.createGraphics();
    Color myClearColor = new Color(0.0f, 0.0f, 0.0f, 0.0f);
    G.setColor(myClearColor);
    G.setBackground(myClearColor);
    G.clearRect(0, 0, bufferEnvImage.getWidth(), bufferEnvImage.getHeight());

    /*
     * Cycle through SelfUpdatingVizComponents (e.g., CarOnMountainComponent for mountain car) and
     * call getProductionImage(), which calls render()(?).
     */
    for (int i = 0; i < theRenderObjects.size(); i++) {
      RenderObject thisRunner = theRenderObjects.get(i);
      Dimension position = makeLocationForVizComponent(i);
      G.drawImage(thisRunner.getProductionImage(), position.width, position.height, null);
    }

    // Make generated image official as productionEnvImage
    BufferedImage tmpImage = productionEnvImage;
    productionEnvImage = bufferEnvImage;
    bufferEnvImage = tmpImage;

    synchronized (redrawLock) {
      lastDrawTime = System.currentTimeMillis();
      drawing = false;
    }

    if (verbose) {
      System.out.println("redraw finished. parentPanel: " + parentPanel.getClass().getSimpleName());
      System.out.flush();
    }
    parentPanel.receiveNotificationVizChanged();
    super.notifyObservers(productionEnvImage);
  }
Example #2
0
  private Dimension makeLocationForVizComponent(int i) {
    Dimension currentVisualizerPanelSize = parentPanel.getSize();

    double width = currentVisualizerPanelSize.getWidth() - 10;
    double height = currentVisualizerPanelSize.getHeight() - 20;

    double startX = 5 + width * positions.get(i).getX();
    double startY = 16 + height * positions.get(i).getY();

    Dimension d = new Dimension();
    d.setSize(startX, startY);

    return d;
  }
Example #3
0
  private Dimension makeSizeForVizComponent(int i) {
    Dimension currentVisualizerPanelSize = parentPanel.getSize();

    double width = currentVisualizerPanelSize.getWidth() - 10;
    double height = currentVisualizerPanelSize.getHeight() - 20;

    double scaledWidth = width * sizes.get(i).getX();
    double scaledHeight = height * sizes.get(i).getY();

    Dimension d = new Dimension();
    d.setSize(scaledWidth, scaledHeight);

    return d;
  }
Example #4
0
  private synchronized void resizeImages() {
    Dimension currentVisualizerPanelSize = parentPanel.getSize();

    // BK: create correctly sized images but don't redraw yet
    productionEnvImage =
        new BufferedImage(
            (int) currentVisualizerPanelSize.getWidth(),
            (int) currentVisualizerPanelSize.getHeight(),
            BufferedImage.TYPE_INT_ARGB);
    bufferEnvImage =
        new BufferedImage(
            (int) currentVisualizerPanelSize.getWidth(),
            (int) currentVisualizerPanelSize.getHeight(),
            BufferedImage.TYPE_INT_ARGB);

    for (int i = 0; i < theRenderObjects.size(); i++) {
      theRenderObjects.get(i).receiveSizeChange(makeSizeForVizComponent(i));
    }
  }
Example #5
0
 public void setParentPanel(VisualizerPanelInterface parentPanel) {
   System.out.println("Setting parentPanel to " + parentPanel.getClass().getSimpleName());
   this.parentPanel = parentPanel;
 }