diff options
Diffstat (limited to 'demos/MiscDemos/GLImageViewerCanvas.java')
-rwxr-xr-x | demos/MiscDemos/GLImageViewerCanvas.java | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/demos/MiscDemos/GLImageViewerCanvas.java b/demos/MiscDemos/GLImageViewerCanvas.java new file mode 100755 index 0000000..320242c --- /dev/null +++ b/demos/MiscDemos/GLImageViewerCanvas.java @@ -0,0 +1,126 @@ +import gl4java.*; +import gl4java.awt.*; +import gl4java.utils.textures.*; + +import java.awt.*; +import java.awt.event.*; +import java.net.*; + +public class GLImageViewerCanvas extends Frame + implements ActionListener, ItemListener +{ + GLImageCanvas glImageCanvas = null; + + private Choice fileTypeChoice = null; + private Button loadButton = null; + private Button saveButton = null; + private Button normalButton = null; + private Checkbox aspectCheck = null; + + public GLImageViewerCanvas(String title) + { + super(title); + setSize(500, 300); + Dimension d = getSize(); + setLayout(new BorderLayout()); + + addWindowListener( new WindowAdapter() + { + public void windowClosed(WindowEvent e) + { + System.exit(0); + } + public void windowClosing(WindowEvent e) + { + windowClosed(e); + } + } + ); + + Panel filePanel = new Panel(); + filePanel.setLayout(new FlowLayout(FlowLayout.CENTER)); + + fileTypeChoice = new Choice(); + fileTypeChoice.add("any"); + fileTypeChoice.add("tga"); + fileTypeChoice.add("png"); + fileTypeChoice.add("ppm"); + filePanel.add(fileTypeChoice); + + loadButton = new Button("load.."); + loadButton.addActionListener(this); + filePanel.add(loadButton); + + saveButton = new Button("save.."); + saveButton.addActionListener(this); + filePanel.add(saveButton); + + normalButton = new Button("normal"); + normalButton.addActionListener(this); + filePanel.add(normalButton); + + aspectCheck = new Checkbox("aspect", true); + aspectCheck.addItemListener(this); + filePanel.add(aspectCheck); + add("North", filePanel); + + glImageCanvas = new GLImageCanvas(d.width, d.height); + glImageCanvas.setName("GLImageCanvas"); + glImageCanvas.setKeepAspectRatio(aspectCheck.getState()); + add("Center", glImageCanvas); + + pack(); + setVisible(true); + } + + public void actionPerformed(ActionEvent e) + { + Object src = e.getSource(); + if(src.equals(loadButton)) + { + FileDialog fd = new FileDialog(this,"Bitmap Load Menu", + FileDialog.LOAD); + fd.show(); + String fname = fd.getDirectory() + fd.getFile() ; + fname = fname.replace('\\','/'); + fname = fname.trim(); + + setTitle(fname); + glImageCanvas.loadTexture(fname, + fileTypeChoice.getSelectedItem() ); + repaint(); + } else if(src.equals(saveButton)) + { + FileDialog fd = new FileDialog(this,"TGA-Image Save Menu", + FileDialog.SAVE); + fd.show(); + String fname = fd.getDirectory() + fd.getFile() ; + fname = fname.replace('\\','/'); + fname = fname.trim(); + + setTitle(fname); + glImageCanvas.snapshot( new TGATextureGrabber(glImageCanvas.gl), + fname); + repaint(); + } else if(src.equals(normalButton)) + { + glImageCanvas.setOriginalSize(); + } + } + + public void itemStateChanged(ItemEvent e) + { + if(aspectCheck.equals(e.getItemSelectable())) + { + glImageCanvas.setKeepAspectRatio(aspectCheck.getState()); + } + } + + public static void main( String args[] ) + { + GLContext.gljNativeDebug = true; + GLContext.gljClassDebug = true; + GLImageViewerCanvas applet = + new GLImageViewerCanvas("GLImageViewerCanvas"); + } +} |