summaryrefslogtreecommitdiffstats
path: root/src/demos/misc/GLCapsTableDemo.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/demos/misc/GLCapsTableDemo.java')
-rwxr-xr-xsrc/demos/misc/GLCapsTableDemo.java322
1 files changed, 0 insertions, 322 deletions
diff --git a/src/demos/misc/GLCapsTableDemo.java b/src/demos/misc/GLCapsTableDemo.java
deleted file mode 100755
index 766c8a4..0000000
--- a/src/demos/misc/GLCapsTableDemo.java
+++ /dev/null
@@ -1,322 +0,0 @@
-package demos.misc;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import javax.media.opengl.*;
-import javax.media.opengl.glu.*;
-import javax.swing.*;
-import com.sun.opengl.util.FPSAnimator;
-import javax.swing.border.TitledBorder;
-import javax.swing.table.TableColumn;
-
-import demos.gears.Gears;
-
-/*******************************************************************************
- * @file GLCapsTableDemo.java
- * @desc Demonstrate use of GLCapabilitiesChooser and DefaultGLCapabilities.
- * Demo tabulates the available capabilities array and put the data into a
- * table. Pressing respawn button displays a canvas created with the
- * currently selected index corresponding to the available array. There
- * are two canvas to respawn: left or right.<br>
- * TODO: if the number of samples > 0, setSampleBuffer(true) and run an
- * antialiased renderer?;<br>
- * TODO: if pbuffer is available, enable Float, RTT, RTTRec and create a
- * pbuffer for eacH?<br>
- * TODO: spawn using a diff renderer option(such as ones from demo
- * package) <br>
- * @version Jan 22, 2006 - GLCapsTableDemo.java created at 7:17:31 PM
- * @platform ATI X600SE/XP Tablet SP2/JDK5/Eclipse
- * @author Kiet Le
- * @legal (c) 2006 Kiet Le. Released under BSD licence.
- ******************************************************************************/
-public class GLCapsTableDemo
- extends JFrame
- implements
- GLCapabilitiesChooser
-{
- private String[] colNames =
- {"Pfd", "H/W", "DblBfr", "Stereo", // index, hwaccel, double, stereo
- "CBits", "cR", "cG", "cB", "cA", // color bits
- "ABits", "aR", "aG", "aB", "aA", // accum bits
- "Z", "S", "AA|AAS", "PBuf(Float|RTT|RTTRec)"}; // depth, stencil, n
- // samples, pbuffer
- private ArrayList/*<GLCapabilities>*/ available = new ArrayList/*<GLCapabilities>*/();
- private ArrayList/*<Integer>*/ indices = new ArrayList/*<Integer>*/();
- private Object[][] data;
- private JTable capsTable;
- private int desiredCapIndex; // pfd index
- private int selected = desiredCapIndex;
- protected JPanel pane, pane2;
- private boolean updateLR;// leftright
- private DefaultGLCapabilitiesChooser choiceExaminer = //
- new DefaultGLCapabilitiesChooser()
- {
- public int chooseCapabilities(GLCapabilities desired,
- GLCapabilities[] available,
- int windowSystemRecommendedChoice)
- {
- if ( available != null )
- for (int i = 0; i < available.length; i++) {
- GLCapabilities c = available[i];
- if (c != null) {
- GLCapsTableDemo.this.available.add((GLCapabilities) c.clone());
- GLCapsTableDemo.this.indices.add(new Integer(i));
- }
- }
- desiredCapIndex = super.chooseCapabilities(desired, available,
- windowSystemRecommendedChoice);
- System.out.println("valid" + desiredCapIndex);
- capsTable = GLCapsTableDemo.this
- .tabulateTable(GLCapsTableDemo.this.available, GLCapsTableDemo.this.indices);
- JScrollPane scroller = //
- new JScrollPane(capsTable, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
- GLCapsTableDemo.this.getContentPane().add(scroller);
- pane.setBorder(BorderFactory
- .createTitledBorder(null, "" + desiredCapIndex, TitledBorder.TRAILING,
- TitledBorder.DEFAULT_POSITION));
- pane2.setBorder(BorderFactory
- .createTitledBorder(null, "" + desiredCapIndex, TitledBorder.LEADING,
- TitledBorder.DEFAULT_POSITION));
- GLCapsTableDemo.this.validate();// so table'll show up
- System.out.println("valid");
- return desiredCapIndex;
- }
- };
- private GraphicsDevice device = GraphicsEnvironment
- .getLocalGraphicsEnvironment().getDefaultScreenDevice();
- private JSplitPane canvasPane;
-
- private GLCanvas canvas;
- private GLCanvas canvas2;
- private Gears topRenderer = new Gears(), bottomRenderer = new Gears();
- private FPSAnimator animator;
- private Dimension defdim = new Dimension(512, 256);
- private String visTip = "If no gears are visible, it may be that the "
- + "current desktop color resolution doesn't match "
- + "the GLCapabilities chosen. Check CBits column.";
-
- /**
-
- */
- public GLCapsTableDemo()
- {
- super(GLCapsTableDemo.class.getName());
- initComponents();
- }
-
- /**
- * (non-Javadoc)
- *
- * @see javax.media.opengl.GLCapabilitiesChooser#chooseCapabilities(javax.media.opengl.GLCapabilities,
- * javax.media.opengl.GLCapabilities[], int)
- */
- public int chooseCapabilities(GLCapabilities desired,
- GLCapabilities[] available,
- int windowSystemRecommendedChoice)
- {
- int row = capsTable.getSelectedRow();
- int desiredCapIndex = ((Integer) indices.get(row)).intValue();
- if ( updateLR )
- {
- pane.setBorder(BorderFactory
- .createTitledBorder(null, "" + desiredCapIndex,
- TitledBorder.TRAILING,
- TitledBorder.DEFAULT_POSITION));
- }
- else
- {
- pane2.setBorder(BorderFactory
- .createTitledBorder(null, "" + desiredCapIndex, TitledBorder.LEADING,
- TitledBorder.DEFAULT_POSITION));
- }
- return desiredCapIndex;
- }
-
- public void run(final String[] args)
- {
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
- setSize(new Dimension((int) (d.width * 0.75), (int) (d.height * 0.75)));
- setLocationRelativeTo(null);
- setVisible(true);
- validate();
- animator.start();
- }//
-
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- GLCapsTableDemo demo = new GLCapsTableDemo();
- demo.run(args);
- }
-
- private void initComponents()
- {
- pane = new JPanel();
- pane2 = new JPanel();
- // Hack: use multisampled capabilities to pick up more detailed information on Windows
- GLCapabilities multisampledCaps = new GLCapabilities();
- multisampledCaps.setSampleBuffers(true);
- canvas = new GLCanvas(multisampledCaps, choiceExaminer, null, device);
-
- // initially start w/ 2 canvas of default caps
- // canvas = new GLCanvas(null, choiceExaminer, null, device);
- canvas.addGLEventListener(topRenderer);
- canvas.setSize(defdim);
- // canvas.setPreferredSize(defdim);
- // canvas.setMaximumSize(defdim);
- animator = new FPSAnimator(canvas, 30);
- canvas2 = new GLCanvas(null, null, null, device);
- canvas2.addGLEventListener(bottomRenderer);
- canvas2.setSize(defdim);
- // canvas2.setPreferredSize(defdim);
- // canvas2.setMaximumSize(defdim);
- animator.add(canvas2);
- pane.add(canvas);
- pane2.add(canvas2);
- canvasPane = new JSplitPane();
- canvasPane.setResizeWeight(0.5);// 50-50 division
- canvasPane.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
- canvasPane.setLeftComponent(pane);
- canvasPane.setRightComponent(pane2);
- getContentPane().add(canvasPane, BorderLayout.SOUTH);
- getContentPane().add(buildControls(), BorderLayout.NORTH);
- }
-
- private JTable tabulateTable(ArrayList/*<GLCapabilities>*/ capabilities,
- ArrayList/*<Integer>*/ indices)
- {
- capabilities.trimToSize();
- data = new Object[capabilities.size()][colNames.length];
- String t = "T", f = "F";
- for (int pfd = 0; pfd < capabilities.size(); pfd++)
- {
- data[ pfd ][ 0 ] = indices.get(pfd);
- GLCapabilities cap = (GLCapabilities) capabilities.get(pfd);
- data[ pfd ][ 1 ] = "" + (cap.getHardwareAccelerated() ? f : f);
- data[ pfd ][ 2 ] = "" + (cap.getDoubleBuffered() ? t : f);
- data[ pfd ][ 3 ] = "" + (cap.getStereo() ? t : f);
- int r = cap.getRedBits(), //
- g = cap.getGreenBits(), //
- b = cap.getBlueBits(), //
- a = cap.getAlphaBits();
- data[ pfd ][ 4 ] = "" + (r + g + b + a);
- data[ pfd ][ 5 ] = new Integer(r);
- data[ pfd ][ 6 ] = new Integer(g);
- data[ pfd ][ 7 ] = new Integer(b);
- data[ pfd ][ 8 ] = new Integer(a);
- r = cap.getAccumRedBits();
- g = cap.getAccumGreenBits();
- b = cap.getAccumBlueBits();
- a = cap.getAccumAlphaBits();
- data[ pfd ][ 9 ] = "" + (r + g + b + a);
- data[ pfd ][ 10 ] = new Integer(r);
- data[ pfd ][ 11 ] = new Integer(g);
- data[ pfd ][ 12 ] = new Integer(b);
- data[ pfd ][ 13 ] = new Integer(a);
- //
- data[ pfd ][ 14 ] = "" + cap.getDepthBits();
- data[ pfd ][ 15 ] = "" + cap.getStencilBits();
- data[ pfd ][ 16 ] = "" + (cap.getSampleBuffers() ? t : f) + " | "
- + cap.getNumSamples();
- // concat p buffer nfo
- String pbuf = (cap.getPbufferFloatingPointBuffers() ? "T |" : "F |");
- pbuf += (cap.getPbufferRenderToTexture() ? "T | " : "F | ");
- pbuf += (cap.getPbufferRenderToTextureRectangle() ? t : f);
- data[ pfd ][ 17 ] = pbuf;
- }
- JTable table = new JTable(data, colNames) {
- public boolean isCellEditable(int rowIndex, int colIndex) {
- return false;
- }
- };
- // table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
- TableColumn column = null;
- for (int i = 0; i < colNames.length; i++)
- {
- column = table.getColumnModel().getColumn(i);
- if ( i == (colNames.length - 1) )
- {
- column.setPreferredWidth(100); // pbuffer column is bigger
- }
- else column.setPreferredWidth(7);
- }
- table.setDoubleBuffered(true);
- return table;
- }
-
- private JPanel buildControls()
- {
- JPanel controls = new JPanel();
- final JButton spawn = new JButton("Respawn Left");
- final JButton spawn2 = new JButton("Respawn Right");
- ActionListener recap = new ActionListener()
- {
- public void actionPerformed(final ActionEvent act)
- {
- animator.stop();
- if ( act.getSource() == spawn )
- {
- updateLR = true;// left
- animator.remove(canvas);
- pane.remove(canvas);
- canvas = newCanvas(true, true);// get new canvas w/ selected index
- pane.add(canvas);
- animator.add(canvas);
- }
- else
- {
- updateLR = false;
- animator.remove(canvas2);
- pane2.remove(canvas2);
- canvas2 = newCanvas(true, false);
- pane2.add(canvas2);
- animator.add(canvas2);
- }
- new Thread()
- {
- public void run()
- {
- animator.start();
- }
- }.start();
- GLCapsTableDemo.this.validate();
- }
- };
- spawn.setToolTipText(visTip);
- spawn.addActionListener(recap);
- spawn2.addActionListener(recap);
- //
- controls.add(spawn);
- controls.add(spawn2);
- return controls;
- }
-
- private GLCanvas newCanvas(boolean mycap, boolean top)
- {
- GLCanvas surface = null;
- if ( !mycap ) surface = new GLCanvas(null, choiceExaminer, null, device);
- else surface = new GLCanvas(null, this, null, device);
- if ( top ) surface.addGLEventListener(topRenderer);
- else surface.addGLEventListener(bottomRenderer);
- surface.setSize(defdim);// otherwise, no show; mixin' light-heavy containers
- // surface.setMinimumSize(defdim);
- return surface;
- }
-
- private void exitRunner()
- {
- new Thread()
- {
- public void run()
- {
- animator.stop();
- }
- };
- }
-}//