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); }
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; }
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; }
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)); } }
public void setParentPanel(VisualizerPanelInterface parentPanel) { System.out.println("Setting parentPanel to " + parentPanel.getClass().getSimpleName()); this.parentPanel = parentPanel; }