summaryrefslogtreecommitdiffstats
path: root/src/demos/jrefract/JRefract.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/demos/jrefract/JRefract.java')
-rwxr-xr-xsrc/demos/jrefract/JRefract.java451
1 files changed, 0 insertions, 451 deletions
diff --git a/src/demos/jrefract/JRefract.java b/src/demos/jrefract/JRefract.java
deleted file mode 100755
index ee659da..0000000
--- a/src/demos/jrefract/JRefract.java
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Portions Copyright (C) 2005 Sun Microsystems, Inc.
- * All rights reserved.
- */
-
-/*
- *
- * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED.
- * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO:
- *
- * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS
- * IN AND TO THE SOFTWARE;
- *
- * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT
- * INCLUDING THIS NOTICE AND AGREEMENT;
- *
- * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY
- * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND
- * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES,
- * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
- * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY
- * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
- * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS
- * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
- * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS'
- * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE,
- * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- */
-
-package demos.jrefract;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import javax.swing.*;
-import javax.swing.event.*;
-
-import javax.media.opengl.*;
-import com.sun.opengl.util.*;
-import com.sun.opengl.util.*;
-import demos.common.*;
-import demos.hdr.HDR;
-import demos.hwShadowmapsSimple.HWShadowmapsSimple;
-import demos.infiniteShadowVolumes.InfiniteShadowVolumes;
-import demos.j2d.FlyingText;
-import demos.jgears.JGears;
-import demos.proceduralTexturePhysics.ProceduralTexturePhysics;
-import demos.util.*;
-import demos.vertexBufferObject.VertexBufferObject;
-import demos.vertexProgRefract.VertexProgRefract;
-import demos.vertexProgWarp.VertexProgWarp;
-
-import demos.xtrans.*;
-
-/**
- Wavelength-dependent refraction demo<br>
- It's a chromatic aberration!<br>
- [email protected] 4/2001<br><p>
-
- Currently 3 passes - could do it in 1 with 4 texture units<p>
-
- Cubemap courtesy of Paul Debevec<p>
-
- Ported to Java, Swing and ARB_fragment_program by Kenneth Russell
-*/
-
-public class JRefract {
- private boolean useRegisterCombiners;
-
- private Animator animator;
- private JDesktopPane desktop;
-
- public static void main(String[] args) {
- new JRefract().run(args);
- }
-
- private static final int GEARS = 1;
- private static final int HDR = 2;
- private static final int HWSHADOWS = 3;
- private static final int INFINITE = 4;
- private static final int REFRACT = 5;
- private static final int TEXT = 6;
- private static final int VBO = 7;
- private static final int WARP = 8;
- private static final int WATER = 9;
-
- private JInternalFrame addWindow(int which) {
- // FIXME: workaround for problem in 1.6 where ALL Components,
- // including Swing components, are Finalizable, requiring two full
- // GC cycles (and running of finalizers) to reclaim
- System.gc();
- // Try to get finalizers run
- try {
- Thread.sleep(1);
- } catch (InterruptedException e) {
- }
- System.gc();
-
- String str = "";
- switch (which) {
- case GEARS: str = "Gears Demo"; break;
- case HDR: str = "High Dynamic Range Rendering Demo"; break;
- case HWSHADOWS: str = "ARB_shadow Shadows"; break;
- case INFINITE: str = "Infinite Shadow Volumes"; break;
- case REFRACT: str = "Refraction Using Vertex Programs"; break;
- case TEXT: str = "Flying Text"; break;
- case VBO: str = "Very Simple vertex_buffer_object demo"; break;
- case WATER: str = "Procedural Texture Waves"; break;
- }
- final JInternalFrame inner = new JInternalFrame(str);
- inner.setResizable(true);
- inner.setClosable(true);
- inner.setVisible(true);
-
- GLCapabilities caps = new GLCapabilities();
- if (which == INFINITE) {
- caps.setStencilBits(16);
- }
- final GLJPanel canvas =
- (which == GEARS) ?
- new JGears() :
- new GLJPanel(caps);
- final DemoListener demoListener = new DemoListener() {
- public void shutdownDemo() {
- removeJPanel(canvas);
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- inner.doDefaultCloseAction();
- }
- });
- }
-
- public void repaint() {
- canvas.repaint();
- }
- };
-
- Demo demo = null;
- switch (which) {
- case GEARS: {
- // GLEventListener already added
- break;
- }
-
- case HDR: {
- demo = new HDR();
- ((HDR) demo).setup(null);
- inner.setSize(((HDR) demo).getPreferredWidth(), ((HDR) demo).getPreferredHeight());
- break;
- }
-
- case HWSHADOWS: {
- demo = new HWShadowmapsSimple();
- break;
- }
-
- case INFINITE: {
- demo = new InfiniteShadowVolumes();
- break;
- }
-
- case REFRACT: {
- demo = new VertexProgRefract();
- break;
- }
-
- case TEXT: {
- demo = new FlyingText();
- break;
- }
-
- case VBO: {
- demo = new VertexBufferObject();
- break;
- }
-
- case WARP: {
- demo = new VertexProgWarp();
- ((VertexProgWarp) demo).setTitleSetter(new VertexProgWarp.TitleSetter() {
- public void setTitle(final String title) {
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- inner.setTitle(title);
- }
- });
- }
- });
- break;
- }
-
- case WATER: {
- demo = new ProceduralTexturePhysics();
- break;
- }
- }
- if (which != GEARS) {
- demo.setDemoListener(demoListener);
- canvas.addGLEventListener(demo);
- }
- canvas.addMouseListener(new MouseAdapter() {
- public void mouseClicked(MouseEvent e) {
- canvas.requestFocus();
- }
- });
-
- addJPanel(canvas);
-
- final Demo fDemo = demo;
-
- inner.addInternalFrameListener(new InternalFrameAdapter() {
- public void internalFrameClosed(InternalFrameEvent e) {
- if (fDemo != null) {
- fDemo.shutdownDemo();
- }
- }
- });
-
- inner.getContentPane().setLayout(new BorderLayout());
- /* if (which == REFRACT) {
- // Testing scrolling
- canvas.setSize(512, 512);
- canvas.setPreferredSize(new Dimension(512, 512));
- JScrollPane scroller = new JScrollPane(canvas);
- inner.getContentPane().add(scroller);
- } else */ if (which == GEARS) {
- // Provide control over transparency of gears background
- canvas.setOpaque(false);
- JPanel gradientPanel = JGears.createGradientPanel();
- inner.getContentPane().add(gradientPanel, BorderLayout.CENTER);
- gradientPanel.add(canvas, BorderLayout.CENTER);
-
- final JCheckBox checkBox = new JCheckBox("Transparent", true);
- checkBox.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- canvas.setOpaque(!checkBox.isSelected());
- }
- });
- inner.getContentPane().add(checkBox, BorderLayout.SOUTH);
- } else if (which == TEXT) {
- FlyingText text = (FlyingText) demo;
- inner.getContentPane().add(text.buildGUI(), BorderLayout.NORTH);
- inner.getContentPane().add(canvas, BorderLayout.CENTER);
- } else {
- inner.getContentPane().add(canvas, BorderLayout.CENTER);
- }
-
- if (which != HDR) {
- inner.setSize(512, 512);
- }
- desktop.add(inner);
-
- return inner;
- }
-
- public void run(String[] args) {
- JFrame frame = new JFrame("JOGL and Swing Interoperability");
- if ((args.length > 0) && args[0].equals("-xt")) {
- desktop = new XTDesktopPane();
- // FIXME: this is a hack to get the repaint behavior to work correctly
- ((XTDesktopPane) desktop).setAlwaysRedraw(true);
- } else {
- desktop = new JDesktopPane();
- }
-
- desktop.setSize(1024, 768);
- frame.getContentPane().setLayout(new BorderLayout());
- frame.getContentPane().add(desktop, BorderLayout.CENTER);
-
- JInternalFrame inner2 = new JInternalFrame("Hello, World");
- JLabel label = new JLabel("Hello, World!");
- label.setFont(new Font("SansSerif", Font.PLAIN, 128));
- inner2.getContentPane().add(label);
- inner2.pack();
- inner2.setResizable(true);
- desktop.add(inner2);
- inner2.setVisible(true);
-
- JMenuBar menuBar = new JMenuBar();
-
- JMenu menu = new JMenu("Actions");
- JMenuItem item;
-
- item = new JMenuItem("Gears");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(GEARS);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("High Dynamic Range");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(HDR);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Hardware Shadow Maps");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(HWSHADOWS);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Infinite Shadow Volumes");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(INFINITE);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Refraction");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(REFRACT);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Text");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(TEXT);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Vertex Buffer Object");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(VBO);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Warp");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(WARP);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Water");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- addWindow(WATER);
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Loop Gears Demo");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- startAutoMode();
- }
- });
- menu.add(item);
-
- item = new JMenuItem("Quit");
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- runExit();
- }
- });
- item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));
- menu.add(item);
-
- menuBar.add(menu);
- frame.setJMenuBar(menuBar);
-
- frame.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- runExit();
- }
- });
- frame.setSize(desktop.getSize());
- frame.setVisible(true);
-
- animator = new FPSAnimator(60);
- animator.start();
- }
-
- private void runExit() {
- // Note: calling System.exit() synchronously inside the draw,
- // reshape or init callbacks can lead to deadlocks on certain
- // platforms (in particular, X11) because the JAWT's locking
- // routines cause a global AWT lock to be grabbed. Instead run
- // the exit routine in another thread.
- new Thread(new Runnable() {
- public void run() {
- animator.stop();
- System.exit(0);
- }
- }).start();
- }
-
- private synchronized void addJPanel(GLJPanel panel) {
- animator.add(panel);
- }
-
- private synchronized void removeJPanel(GLJPanel panel) {
- animator.remove(panel);
- }
-
- private JInternalFrame curFrame;
- private void startAutoMode() {
- new Thread(new Runnable() {
- public void run() {
- while (true) {
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- public void run() {
- curFrame = addWindow(GEARS);
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- }
-
- try {
- SwingUtilities.invokeAndWait(new Runnable() {
- public void run() {
- curFrame.doDefaultCloseAction();
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- }
- }
- }
- }).start();
- }
-}