Revision: 715
Author: heuermh
Date: Wed Oct 14 17:53:47 2009
Log: Issue 132 ; refactoring SWT examples from examples module to new  
swt-examples module, commit 4 of several
http://code.google.com/p/piccolo2d/source/detail?r=715

Added:
   
/piccolo2d.java/trunk/swt-examples/src/main/java/edu/umd/cs/piccolox/swt/examples/SWTBenchTest.java
Deleted:
   
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/swt/SWTBenchTest.java

=======================================
--- /dev/null
+++  
/piccolo2d.java/trunk/swt-examples/src/main/java/edu/umd/cs/piccolox/swt/examples/SWTBenchTest.java
      
Wed Oct 14 17:53:47 2009
@@ -0,0 +1,467 @@
+/*
+ * Copyright (c) 2008-2009, Piccolo2D project, http://piccolo2d.org
+ * Copyright (c) 1998-2008, University of Maryland
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without  
modification, are permitted provided
+ * that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,  
this list of conditions
+ * and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright  
notice, this list of conditions
+ * and the following disclaimer in the documentation and/or other  
materials provided with the
+ * distribution.
+ *
+ * None of the name of the University of Maryland, the name of the  
Piccolo2D project, or the names of its
+ * contributors may be used to endorse or promote products derived from  
this software without specific
+ * prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  
MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  
DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  
DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN  
CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  
USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package edu.umd.cs.piccolo.examples.swt;
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.GeneralPath;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.util.Random;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+import edu.umd.cs.piccolox.swt.SWTGraphics2D;
+
+/**
+ * Benchmarking test suite for SWT package
+ */
+public class SWTBenchTest extends Canvas {
+
+    // Paths
+    GeneralPath testShape = new GeneralPath();
+
+    // Images
+    Image testImageOpaque, testImageBitmask, testImageTranslucent,  
testImageARGB;
+
+    // Transforms
+    AffineTransform transform = new AffineTransform();
+    static final AffineTransform IDENTITY = new AffineTransform();
+
+    // Geometry
+    double pts[] = new double[20];
+
+    // Colors
+    static final Color colors[] = { Color.red, Color.green, Color.blue,  
Color.white, Color.yellow, };
+
+    // Flags
+    boolean offscreen;
+    boolean antialiased;
+
+    // Statistics
+    int results[][] = new int[NUM_CONTEXTS][NUM_TESTS];
+
+    // Constants
+
+    static final int CTX_NORMAL = 0;
+    // static final int CTX_CLIPPED = 1;
+    static final int CTX_TRANSFORMED = 1;
+    // static final int CTX_BLENDED = 3;
+    static final int NUM_CONTEXTS = 2;
+
+    // static String contextNames[] = {
+    // "normal",
+    // "clip",
+    // "transform",
+    // "alpha",
+    // };
+
+    static String contextNames[] = { "normal", "transform" };
+
+    //
+    // TEST METHODS
+    //
+
+    static final int DRAW_LINE = 0;
+    static final int DRAW_RECT = 1;
+    static final int FILL_RECT = 2;
+    static final int DRAW_OVAL = 3;
+    static final int FILL_OVAL = 4;
+    static final int DRAW_POLY = 5;
+    static final int FILL_POLY = 6;
+    static final int DRAW_TEXT = 7;
+    static final int DRAW_IMG1 = 8;
+    static final int DRAW_IMG2 = 9;
+    static final int DRAW_IMG3 = 10;
+    static final int DRAW_IMG4 = 11;
+    static final int DRAW_IMG5 = 12;
+    static final int NUM_TESTS = 13;
+
+    static String testNames[] = { "line", "rect", "fill  
rect", "oval", "fill oval", "poly", "fill poly", "text",
+            "image", "scaled image", "mask image", "alpha image", "argb  
image", };
+
+    void testDrawLine(final SWTGraphics2D g, final Random r) {
+        g.drawLine(rand(r), rand(r), rand(r), rand(r));
+    }
+
+    void testDrawRect(final SWTGraphics2D g, final Random r) {
+        g.drawRect(rand(r), rand(r), rand(r), rand(r));
+    }
+
+    void testFillRect(final SWTGraphics2D g, final Random r) {
+        g.fillRect(rand(r), rand(r), rand(r), rand(r));
+    }
+
+    void testDrawOval(final SWTGraphics2D g, final Random r) {
+        g.drawOval(rand(r), rand(r), rand(r), rand(r));
+    }
+
+    void testFillOval(final SWTGraphics2D g, final Random r) {
+        g.fillOval(rand(r), rand(r), rand(r), rand(r));
+    }
+
+    void genPoly(final Random r) {
+        for (int i = 0; i < pts.length / 2; i++) {
+            pts[2 * i] = rand(r);
+            pts[2 * i + 1] = rand(r);
+        }
+    }
+
+    void testDrawPoly(final SWTGraphics2D g, final Random r) {
+        genPoly(r);
+        g.drawPolyline(pts);
+    }
+
+    void testFillPoly(final SWTGraphics2D g, final Random r) {
+        genPoly(r);
+        g.fillPolygon(pts);
+    }
+
+    void testDrawText(final SWTGraphics2D g, final Random r) {
+        g.drawString("Abcdefghijklmnop", rand(r), rand(r));
+    }
+
+    // Basic image
+    void testDrawImg1(final SWTGraphics2D g, final Random r) {
+        g.drawImage(testImageOpaque, rand(r), rand(r));
+    }
+
+    // Scaled image
+    void testDrawImg2(final SWTGraphics2D g, final Random r) {
+        final Rectangle rect = testImageOpaque.getBounds();
+        g.drawImage(testImageOpaque, 0, 0, rect.width, rect.height,  
rand(r), rand(r), rand(r), rand(r));
+    }
+
+    // Bitmask image (unscaled)
+    void testDrawImg3(final SWTGraphics2D g, final Random r) {
+        g.drawImage(testImageBitmask, rand(r), rand(r));
+    }
+
+    // Translucent image (unscaled)
+    void testDrawImg4(final SWTGraphics2D g, final Random r) {
+        g.drawImage(testImageTranslucent, rand(r), rand(r));
+    }
+
+    // Buffered image (unscaled)
+    void testDrawImg5(final SWTGraphics2D g, final Random r) {
+        g.drawImage(testImageARGB, rand(r), rand(r));
+    }
+
+    Image loadImage(final Display display, final String name) {
+        InputStream stream = null;
+        try {
+            stream = SWTBenchTest.class.getResourceAsStream(name);
+            if (stream != null) {
+                final ImageData imageData = new ImageData(stream);
+                return new Image(display, imageData);
+                // if (imageData != null) {
+                // ImageData mask = imageData.getTransparencyMask();
+                // return new Image(display, imageData, mask);
+                // }
+
+            }
+        }
+        catch (final Exception e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+    SWTBenchTest(final Composite parent, final int style) {
+        super(parent, style);
+
+        testImageOpaque = loadImage(getDisplay(), "opaque.jpg");
+        testImageBitmask = loadImage(getDisplay(), "bitmask.gif");
+        testImageTranslucent = loadImage(getDisplay(), "translucent.png");
+        testImageARGB = new Image(getDisplay(), 128, 128);
+
+        final GC tmpGC = new GC(testImageARGB);
+        tmpGC.drawImage(testImageTranslucent, 0, 0);
+        tmpGC.dispose();
+
+        addPaintListener(new PaintListener() {
+            public void paintControl(final PaintEvent pe) {
+                runAll(new SWTGraphics2D(pe.gc, getDisplay()));
+            }
+        });
+    }
+
+    void setupTransform(final Graphics2D g, final Random r) {
+        transform.setToIdentity();
+
+        switch (abs(r.nextInt()) % 5) {
+            default:
+                // case 0: // UNIFORM SCALE
+                final double s = r.nextDouble();
+                transform.scale(5 * s + 0.1, 5 * s + 0.1);
+                break;
+            // case 1: // NON-UNIFORM SCALE
+            // transform.scale(5 * r.nextDouble() + 0.1, 5 *  
r.nextDouble() +
+            // 0.1);
+            // break;
+            // case 2: // ROTATION
+            // transform.rotate(r.nextDouble() * Math.PI * 2);
+            // break;
+            // case 3: // TRANSLATION
+            // transform.translate(r.nextDouble() * 500, r.nextDouble() *  
500);
+            // break;
+            // case 4: // TRANSLATE + ROTATE + SCALE
+            // s = r.nextDouble();
+            // transform.translate(r.nextDouble() * 500, r.nextDouble() *  
500);
+            // transform.rotate(r.nextDouble() * Math.PI * 2);
+            // transform.scale(5*s + 0.1, 5*s + 0.1);
+            // break;
+        }
+
+        g.setTransform(transform);
+    }
+
+    void setupClip(final Graphics2D g, final Random r) {
+        // g.setClip(rand(r), rand(r), rand(r), rand(r));
+    }
+
+    void setupBlend(final Graphics2D g, final Random r) {
+        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,  
r.nextFloat()));
+    }
+
+    void setup(final int ctx, final Graphics2D g, final Random r) {
+        switch (ctx) {
+            case CTX_NORMAL:
+                break;
+
+            case CTX_TRANSFORMED:
+                setupTransform(g, r);
+                break;
+
+            // case CTX_CLIPPED:
+            // setupClip(g, r);
+            // break;
+            //
+            // case CTX_BLENDED:
+            // setupBlend(g, r);
+            // break;
+        }
+    }
+
+    void test(final int testNum, final SWTGraphics2D g, final Random r) {
+
+        g.setColor(colors[abs(r.nextInt()) % colors.length]);
+        g.setBackground(colors[abs(r.nextInt()) % colors.length]);
+
+        switch (testNum) {
+            case DRAW_LINE:
+                testDrawLine(g, r);
+                break;
+            case DRAW_RECT:
+                testDrawRect(g, r);
+                break;
+            case FILL_RECT:
+                testFillRect(g, r);
+                break;
+            case DRAW_OVAL:
+                testDrawOval(g, r);
+                break;
+            case FILL_OVAL:
+                testFillOval(g, r);
+                break;
+            case DRAW_POLY:
+                testDrawPoly(g, r);
+                break;
+            case FILL_POLY:
+                testFillPoly(g, r);
+                break;
+            case DRAW_TEXT:
+                testDrawText(g, r);
+                break;
+            case DRAW_IMG1:
+                testDrawImg1(g, r);
+                break;
+            case DRAW_IMG2:
+                testDrawImg2(g, r);
+                break;
+            case DRAW_IMG3:
+                testDrawImg3(g, r);
+                break;
+            case DRAW_IMG4:
+                testDrawImg4(g, r);
+                break;
+            case DRAW_IMG5:
+                testDrawImg5(g, r);
+                break;
+        }
+    }
+
+    void runTest(final SWTGraphics2D g, final int ctx, final int testNum) {
+        final Random r1 = new Random(1);
+        final Random r2 = new Random(1);
+
+        System.out.println("Test: " + testNames[testNum]);
+        final long t1 = System.currentTimeMillis();
+        int i = 0;
+        while (true) {
+            if (i % 10 == 0) {
+                setup(ctx, g, r1);
+            }
+            test(testNum, g, r2);
+            i++;
+            final long t2 = System.currentTimeMillis();
+            if (t2 - t1 >= 5000) {
+                break;
+            }
+        }
+        results[ctx][testNum] += i / 5;
+        System.out.println("Shapes per second: " + results[ctx][testNum]);
+    }
+
+    void runAll(final SWTGraphics2D g) {
+        System.out.println("BENCHMARKING: " + g);
+
+        if (antialiased) {
+            System.out.println("ANTIALIASED");
+            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  
RenderingHints.VALUE_ANTIALIAS_ON);
+            g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,  
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
+        }
+
+        for (int ctx = 0; ctx < NUM_CONTEXTS; ctx++) {
+            System.out.println("Context: " + contextNames[ctx]);
+            for (int i = 0; i < NUM_TESTS; i++) {
+                g.setClip(null);
+                g.setTransform(IDENTITY);
+                runTest(g, ctx, i);
+            }
+        }
+
+        if (offscreen) {
+            g.dispose();
+        }
+
+        String fileName = g.getClass().getName().replace('.', '_');
+        if (offscreen) {
+            fileName += "-offscreen";
+        }
+        if (antialiased) {
+            fileName += "-antialiased";
+        }
+        dumpResults(fileName + ".txt");
+        System.exit(0);
+    }
+
+    void dumpResults(final String fileName) {
+        try {
+            final FileOutputStream fout = new FileOutputStream(fileName);
+            final PrintWriter out = new PrintWriter(fout);
+            out.print('\t');
+            for (int i = 0; i < NUM_TESTS; i++) {
+                out.print(testNames[i]);
+                out.print('\t');
+            }
+            out.println("");
+            for (int ctx = 0; ctx < NUM_CONTEXTS; ctx++) {
+                out.print(contextNames[ctx]);
+                for (int i = 0; i < NUM_TESTS; i++) {
+                    out.print('\t');
+                    out.print(results[ctx][i]);
+                }
+                out.println("");
+            }
+            out.close();
+            results = new int[NUM_CONTEXTS][NUM_TESTS];
+        }
+        catch (final IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public Point computeSize(final int wHint, final int hHint) {
+        return new Point(512, 512);
+    }
+
+    public Point computeSize(final int wHint, final int hHint, final  
boolean changed) {
+        return computeSize(wHint, hHint);
+    }
+
+    final static int abs(final int x) {
+        return x < 0 ? -x : x;
+    }
+
+    final static double rand(final Random r) {
+        return abs(r.nextInt()) % 500;
+    }
+
+    public static void main(final String args[]) {
+        // Create frame
+        final Display display = new Display();
+        final Shell shell = new Shell(display);
+        shell.setLayout(new FillLayout());
+
+        // Add bench test
+        final SWTBenchTest m = new SWTBenchTest(shell,  
SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND);
+        m.setSize(512, 512);
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].intern() == "-offscreen") {
+                m.offscreen = true;
+            }
+            else if (args[i].intern() == "-anti") {
+                m.antialiased = true;
+            }
+            else {
+                System.out.println("Usage: java BenchTest [-anti]  
[-offscreen]");
+                System.exit(1);
+            }
+        }
+
+        shell.pack();
+        shell.open();
+
+        while (!shell.isDisposed()) {
+            if (!display.readAndDispatch()) {
+                display.sleep();
+            }
+        }
+        display.dispose();
+    }
+
+}
=======================================
---  
/piccolo2d.java/trunk/examples/src/main/java/edu/umd/cs/piccolo/examples/swt/SWTBenchTest.java
   
Thu Oct  8 14:40:54 2009
+++ /dev/null
@@ -1,467 +0,0 @@
-/*
- * Copyright (c) 2008-2009, Piccolo2D project, http://piccolo2d.org
- * Copyright (c) 1998-2008, University of Maryland
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without  
modification, are permitted provided
- * that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice,  
this list of conditions
- * and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright  
notice, this list of conditions
- * and the following disclaimer in the documentation and/or other  
materials provided with the
- * distribution.
- *
- * None of the name of the University of Maryland, the name of the  
Piccolo2D project, or the names of its
- * contributors may be used to endorse or promote products derived from  
this software without specific
- * prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS  
IS" AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  
MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  
DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  
DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN  
CONTRACT, STRICT LIABILITY, OR
- * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  
USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.umd.cs.piccolo.examples.swt;
-
-import java.awt.AlphaComposite;
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-import java.awt.geom.AffineTransform;
-import java.awt.geom.GeneralPath;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.util.Random;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.PaintEvent;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.ImageData;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-
-import edu.umd.cs.piccolox.swt.SWTGraphics2D;
-
-/**
- * Benchmarking test suite for SWT package
- */
-public class SWTBenchTest extends Canvas {
-
-    // Paths
-    GeneralPath testShape = new GeneralPath();
-
-    // Images
-    Image testImageOpaque, testImageBitmask, testImageTranslucent,  
testImageARGB;
-
-    // Transforms
-    AffineTransform transform = new AffineTransform();
-    static final AffineTransform IDENTITY = new AffineTransform();
-
-    // Geometry
-    double pts[] = new double[20];
-
-    // Colors
-    static final Color colors[] = { Color.red, Color.green, Color.blue,  
Color.white, Color.yellow, };
-
-    // Flags
-    boolean offscreen;
-    boolean antialiased;
-
-    // Statistics
-    int results[][] = new int[NUM_CONTEXTS][NUM_TESTS];
-
-    // Constants
-
-    static final int CTX_NORMAL = 0;
-    // static final int CTX_CLIPPED = 1;
-    static final int CTX_TRANSFORMED = 1;
-    // static final int CTX_BLENDED = 3;
-    static final int NUM_CONTEXTS = 2;
-
-    // static String contextNames[] = {
-    // "normal",
-    // "clip",
-    // "transform",
-    // "alpha",
-    // };
-
-    static String contextNames[] = { "normal", "transform" };
-
-    //
-    // TEST METHODS
-    //
-
-    static final int DRAW_LINE = 0;
-    static final int DRAW_RECT = 1;
-    static final int FILL_RECT = 2;
-    static final int DRAW_OVAL = 3;
-    static final int FILL_OVAL = 4;
-    static final int DRAW_POLY = 5;
-    static final int FILL_POLY = 6;
-    static final int DRAW_TEXT = 7;
-    static final int DRAW_IMG1 = 8;
-    static final int DRAW_IMG2 = 9;
-    static final int DRAW_IMG3 = 10;
-    static final int DRAW_IMG4 = 11;
-    static final int DRAW_IMG5 = 12;
-    static final int NUM_TESTS = 13;
-
-    static String testNames[] = { "line", "rect", "fill  
rect", "oval", "fill oval", "poly", "fill poly", "text",
-            "image", "scaled image", "mask image", "alpha image", "argb  
image", };
-
-    void testDrawLine(final SWTGraphics2D g, final Random r) {
-        g.drawLine(rand(r), rand(r), rand(r), rand(r));
-    }
-
-    void testDrawRect(final SWTGraphics2D g, final Random r) {
-        g.drawRect(rand(r), rand(r), rand(r), rand(r));
-    }
-
-    void testFillRect(final SWTGraphics2D g, final Random r) {
-        g.fillRect(rand(r), rand(r), rand(r), rand(r));
-    }
-
-    void testDrawOval(final SWTGraphics2D g, final Random r) {
-        g.drawOval(rand(r), rand(r), rand(r), rand(r));
-    }
-
-    void testFillOval(final SWTGraphics2D g, final Random r) {
-        g.fillOval(rand(r), rand(r), rand(r), rand(r));
-    }
-
-    void genPoly(final Random r) {
-        for (int i = 0; i < pts.length / 2; i++) {
-            pts[2 * i] = rand(r);
-            pts[2 * i + 1] = rand(r);
-        }
-    }
-
-    void testDrawPoly(final SWTGraphics2D g, final Random r) {
-        genPoly(r);
-        g.drawPolyline(pts);
-    }
-
-    void testFillPoly(final SWTGraphics2D g, final Random r) {
-        genPoly(r);
-        g.fillPolygon(pts);
-    }
-
-    void testDrawText(final SWTGraphics2D g, final Random r) {
-        g.drawString("Abcdefghijklmnop", rand(r), rand(r));
-    }
-
-    // Basic image
-    void testDrawImg1(final SWTGraphics2D g, final Random r) {
-        g.drawImage(testImageOpaque, rand(r), rand(r));
-    }
-
-    // Scaled image
-    void testDrawImg2(final SWTGraphics2D g, final Random r) {
-        final Rectangle rect = testImageOpaque.getBounds();
-        g.drawImage(testImageOpaque, 0, 0, rect.width, rect.height,  
rand(r), rand(r), rand(r), rand(r));
-    }
-
-    // Bitmask image (unscaled)
-    void testDrawImg3(final SWTGraphics2D g, final Random r) {
-        g.drawImage(testImageBitmask, rand(r), rand(r));
-    }
-
-    // Translucent image (unscaled)
-    void testDrawImg4(final SWTGraphics2D g, final Random r) {
-        g.drawImage(testImageTranslucent, rand(r), rand(r));
-    }
-
-    // Buffered image (unscaled)
-    void testDrawImg5(final SWTGraphics2D g, final Random r) {
-        g.drawImage(testImageARGB, rand(r), rand(r));
-    }
-
-    Image loadImage(final Display display, final String name) {
-        InputStream stream = null;
-        try {
-            stream = SWTBenchTest.class.getResourceAsStream(name);
-            if (stream != null) {
-                final ImageData imageData = new ImageData(stream);
-                return new Image(display, imageData);
-                // if (imageData != null) {
-                // ImageData mask = imageData.getTransparencyMask();
-                // return new Image(display, imageData, mask);
-                // }
-
-            }
-        }
-        catch (final Exception e) {
-            throw new RuntimeException(e);
-        }
-        return null;
-    }
-
-    SWTBenchTest(final Composite parent, final int style) {
-        super(parent, style);
-
-        testImageOpaque = loadImage(getDisplay(), "opaque.jpg");
-        testImageBitmask = loadImage(getDisplay(), "bitmask.gif");
-        testImageTranslucent = loadImage(getDisplay(), "translucent.png");
-        testImageARGB = new Image(getDisplay(), 128, 128);
-
-        final GC tmpGC = new GC(testImageARGB);
-        tmpGC.drawImage(testImageTranslucent, 0, 0);
-        tmpGC.dispose();
-
-        addPaintListener(new PaintListener() {
-            public void paintControl(final PaintEvent pe) {
-                runAll(new SWTGraphics2D(pe.gc, getDisplay()));
-            }
-        });
-    }
-
-    void setupTransform(final Graphics2D g, final Random r) {
-        transform.setToIdentity();
-
-        switch (abs(r.nextInt()) % 5) {
-            default:
-                // case 0: // UNIFORM SCALE
-                final double s = r.nextDouble();
-                transform.scale(5 * s + 0.1, 5 * s + 0.1);
-                break;
-            // case 1: // NON-UNIFORM SCALE
-            // transform.scale(5 * r.nextDouble() + 0.1, 5 *  
r.nextDouble() +
-            // 0.1);
-            // break;
-            // case 2: // ROTATION
-            // transform.rotate(r.nextDouble() * Math.PI * 2);
-            // break;
-            // case 3: // TRANSLATION
-            // transform.translate(r.nextDouble() * 500, r.nextDouble() *  
500);
-            // break;
-            // case 4: // TRANSLATE + ROTATE + SCALE
-            // s = r.nextDouble();
-            // transform.translate(r.nextDouble() * 500, r.nextDouble() *  
500);
-            // transform.rotate(r.nextDouble() * Math.PI * 2);
-            // transform.scale(5*s + 0.1, 5*s + 0.1);
-            // break;
-        }
-
-        g.setTransform(transform);
-    }
-
-    void setupClip(final Graphics2D g, final Random r) {
-        // g.setClip(rand(r), rand(r), rand(r), rand(r));
-    }
-
-    void setupBlend(final Graphics2D g, final Random r) {
-        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,  
r.nextFloat()));
-    }
-
-    void setup(final int ctx, final Graphics2D g, final Random r) {
-        switch (ctx) {
-            case CTX_NORMAL:
-                break;
-
-            case CTX_TRANSFORMED:
-                setupTransform(g, r);
-                break;
-
-            // case CTX_CLIPPED:
-            // setupClip(g, r);
-            // break;
-            //
-            // case CTX_BLENDED:
-            // setupBlend(g, r);
-            // break;
-        }
-    }
-
-    void test(final int testNum, final SWTGraphics2D g, final Random r) {
-
-        g.setColor(colors[abs(r.nextInt()) % colors.length]);
-        g.setBackground(colors[abs(r.nextInt()) % colors.length]);
-
-        switch (testNum) {
-            case DRAW_LINE:
-                testDrawLine(g, r);
-                break;
-            case DRAW_RECT:
-                testDrawRect(g, r);
-                break;
-            case FILL_RECT:
-                testFillRect(g, r);
-                break;
-            case DRAW_OVAL:
-                testDrawOval(g, r);
-                break;
-            case FILL_OVAL:
-                testFillOval(g, r);
-                break;
-            case DRAW_POLY:
-                testDrawPoly(g, r);
-                break;
-            case FILL_POLY:
-                testFillPoly(g, r);
-                break;
-            case DRAW_TEXT:
-                testDrawText(g, r);
-                break;
-            case DRAW_IMG1:
-                testDrawImg1(g, r);
-                break;
-            case DRAW_IMG2:
-                testDrawImg2(g, r);
-                break;
-            case DRAW_IMG3:
-                testDrawImg3(g, r);
-                break;
-            case DRAW_IMG4:
-                testDrawImg4(g, r);
-                break;
-            case DRAW_IMG5:
-                testDrawImg5(g, r);
-                break;
-        }
-    }
-
-    void runTest(final SWTGraphics2D g, final int ctx, final int testNum) {
-        final Random r1 = new Random(1);
-        final Random r2 = new Random(1);
-
-        System.out.println("Test: " + testNames[testNum]);
-        final long t1 = System.currentTimeMillis();
-        int i = 0;
-        while (true) {
-            if (i % 10 == 0) {
-                setup(ctx, g, r1);
-            }
-            test(testNum, g, r2);
-            i++;
-            final long t2 = System.currentTimeMillis();
-            if (t2 - t1 >= 5000) {
-                break;
-            }
-        }
-        results[ctx][testNum] += i / 5;
-        System.out.println("Shapes per second: " + results[ctx][testNum]);
-    }
-
-    void runAll(final SWTGraphics2D g) {
-        System.out.println("BENCHMARKING: " + g);
-
-        if (antialiased) {
-            System.out.println("ANTIALIASED");
-            g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  
RenderingHints.VALUE_ANTIALIAS_ON);
-            g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,  
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
-        }
-
-        for (int ctx = 0; ctx < NUM_CONTEXTS; ctx++) {
-            System.out.println("Context: " + contextNames[ctx]);
-            for (int i = 0; i < NUM_TESTS; i++) {
-                g.setClip(null);
-                g.setTransform(IDENTITY);
-                runTest(g, ctx, i);
-            }
-        }
-
-        if (offscreen) {
-            g.dispose();
-        }
-
-        String fileName = g.getClass().getName().replace('.', '_');
-        if (offscreen) {
-            fileName += "-offscreen";
-        }
-        if (antialiased) {
-            fileName += "-antialiased";
-        }
-        dumpResults(fileName + ".txt");
-        System.exit(0);
-    }
-
-    void dumpResults(final String fileName) {
-        try {
-            final FileOutputStream fout = new FileOutputStream(fileName);
-            final PrintWriter out = new PrintWriter(fout);
-            out.print('\t');
-            for (int i = 0; i < NUM_TESTS; i++) {
-                out.print(testNames[i]);
-                out.print('\t');
-            }
-            out.println("");
-            for (int ctx = 0; ctx < NUM_CONTEXTS; ctx++) {
-                out.print(contextNames[ctx]);
-                for (int i = 0; i < NUM_TESTS; i++) {
-                    out.print('\t');
-                    out.print(results[ctx][i]);
-                }
-                out.println("");
-            }
-            out.close();
-            results = new int[NUM_CONTEXTS][NUM_TESTS];
-        }
-        catch (final IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    public Point computeSize(final int wHint, final int hHint) {
-        return new Point(512, 512);
-    }
-
-    public Point computeSize(final int wHint, final int hHint, final  
boolean changed) {
-        return computeSize(wHint, hHint);
-    }
-
-    final static int abs(final int x) {
-        return x < 0 ? -x : x;
-    }
-
-    final static double rand(final Random r) {
-        return abs(r.nextInt()) % 500;
-    }
-
-    public static void main(final String args[]) {
-        // Create frame
-        final Display display = new Display();
-        final Shell shell = new Shell(display);
-        shell.setLayout(new FillLayout());
-
-        // Add bench test
-        final SWTBenchTest m = new SWTBenchTest(shell,  
SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND);
-        m.setSize(512, 512);
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].intern() == "-offscreen") {
-                m.offscreen = true;
-            }
-            else if (args[i].intern() == "-anti") {
-                m.antialiased = true;
-            }
-            else {
-                System.out.println("Usage: java BenchTest [-anti]  
[-offscreen]");
-                System.exit(1);
-            }
-        }
-
-        shell.pack();
-        shell.open();
-
-        while (!shell.isDisposed()) {
-            if (!display.readAndDispatch()) {
-                display.sleep();
-            }
-        }
-        display.dispose();
-    }
-
-}

--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to