// University of California, Santa Cruz, USA and // CERN, Geneva, Switzerland, Copyright (c) 2000 package org.freehep.graphics2d.test; import java.awt.Color; import java.awt.Dimension; import java.awt.Insets; import javax.swing.JFrame; import org.freehep.graphics2d.BufferedPanel; import org.freehep.graphics2d.VectorGraphics; /** * @author Mark Donszelmann * @version $Id: TestPerformance.java 8584 2006-08-10 23:06:37Z duns $ */ public class TestPerformance extends BufferedPanel { private static final int n = 100; private static final int m = 50; private int[][] xip = new int[n][m]; private int[][] yip = new int[n][m]; private double[][] xdp = new double[n][m]; private double[][] ydp = new double[n][m]; private double[] xs = new double[n]; private double[] ys = new double[n]; public void paintComponent(VectorGraphics g) { Dimension dim = getSize(); Insets insets = getInsets(); int width = dim.width; int height = dim.height; for (int i = 0; i < xip.length; i++) { for (int j = 0; j < xip[0].length; j++) { xip[i][j] = (int) (Math.random() * width); yip[i][j] = (int) (Math.random() * height); } } for (int i = 0; i < xdp.length; i++) { for (int j = 0; j < xdp[0].length; j++) { xdp[i][j] = Math.random() * width; ydp[i][j] = Math.random() * height; } } for (int i = 0; i < xs.length; i++) { xs[i] = Math.random() * width; ys[i] = Math.random() * height; } System.out.print("Waiting 4 seconds... "); try { Thread.sleep(4000); } catch (InterruptedException e) { } System.out.println("done"); // g.setLineWidth(1.5); g.setColor(Color.black); g.fillRect(insets.left, insets.top, dim.width - insets.left - insets.right, dim.height - insets.top - insets.bottom); g.setColor(Color.orange); drawIntPolylines(g); g.setColor(Color.cyan); drawDoublePolylines(g); g.setColor(Color.red); // drawSymbols(g, VectorGraphicsConstants.SYMBOL_STAR, false); g.setColor(Color.blue); // drawSymbols(g, VectorGraphicsConstants.SYMBOL_CIRCLE, true); } public void drawIntPolylines(VectorGraphics g) { long start, end; start = System.currentTimeMillis(); for (int i = 0; i < xip.length; i++) { g.drawPolyline(xip[i], yip[i], xip[i].length); } end = System.currentTimeMillis(); System.out.println("VG2D:" + xip.length + " IntPolys[" + xip[0].length + "] " + (end - start) + " ms"); } public void drawDoublePolylines(VectorGraphics g) { long start, end; start = System.currentTimeMillis(); for (int i = 0; i < xdp.length; i++) { g.drawPolyline(xdp[i], ydp[i], xdp[i].length); } end = System.currentTimeMillis(); System.out.println("VG2D:" + xdp.length + " DoublePolys[" + xdp[0].length + "] " + (end - start) + " ms"); } public void drawSymbols(VectorGraphics g, int type, boolean fill) { long start = System.currentTimeMillis(); for (int i = 0; i < xs.length; i++) { if (fill) { g.fillSymbol(xs[i], ys[i], 6, type); } else { g.drawSymbol(xs[i], ys[i], 6, type); } } long end = System.currentTimeMillis(); System.out.println("VG2D:" + xs.length + " symbols[" + type + "] " + (end - start) + " ms"); } public static void main(String[] args) { // Create a new frame to hold everything. JFrame frame = new JFrame("Test PixelGraphics2D Performance"); // Create a new instance of this class and add it to the frame. frame.getContentPane().add(new TestPerformance()); // Give the frame a size and make it visible. frame.setSize(new Dimension(1024, 768)); frame.setVisible(true); } }