/* * Project Info: http://jcae.sourceforge.net * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * (C) Copyright 2008, by EADS France */ package org.jcae.vtk.test; import java.awt.BorderLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import org.jcae.vtk.Canvas; import org.jcae.vtk.SelectionListener; import org.jcae.vtk.UNVToMesh; import org.jcae.vtk.View; import org.jcae.vtk.Viewable; import org.jcae.vtk.ViewableMesh; import vtk.vtkInteractorStyleTrackballCamera; import vtk.vtkRenderer; /** * * @author Julian Ibarz */ public class TestUNV implements SelectionListener, KeyListener { ViewableMesh viewable; public Canvas canvas; public TestUNV(ViewableMesh viewable) { this.viewable = viewable; } public void selectionChanged(Viewable viewable) { viewable.highlight(); } public void keyReleased(KeyEvent e) { // DO Nothing } public void keyTyped(KeyEvent e) { // DO Nothing } public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_G: viewable.setSelectionType(Viewable.SelectionType.NODE); break; case KeyEvent.VK_F: viewable.setSelectionType(Viewable.SelectionType.CELL); break; case KeyEvent.VK_A: viewable.setAppendSelection(!viewable.getAppendSelection()); break; case KeyEvent.VK_V: viewable.setSelectionType(Viewable.SelectionType.POINT); canvas.lock(); System.out.println("Capabilities : " + canvas.GetRenderWindow().ReportCapabilities()); canvas.unlock(); break; case KeyEvent.VK_O: viewable.setViewMode(ViewableMesh.ViewMode.FILLED); break; case KeyEvent.VK_I: viewable.setViewMode(ViewableMesh.ViewMode.WIRED); break; } } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); View canvas = new View(); frame.add(canvas, BorderLayout.CENTER); vtkRenderer renderer = canvas.GetRenderer(); ViewableMesh rbh = new ViewableMesh(new UNVToMesh(args[0], null).getMesh()); canvas.add(rbh); frame.setSize(800, 600); frame.setVisible(true); TestUNV test = new TestUNV(rbh); //rbh.setViewMode(ViewableMesh.ViewMode.WIRED); test.canvas = canvas; canvas.addKeyListener(test); rbh.addSelectionListener(test); vtkInteractorStyleTrackballCamera style = new vtkInteractorStyleTrackballCamera(); //canvas.getIren().SetPicker(new vtkAreaPicker()); style.AutoAdjustCameraClippingRangeOn(); canvas.getIren().SetInteractorStyle(style); renderer.ResetCamera(); // A label example /*vtkTextActor textActor = new vtkTextActor(); textActor.ScaledTextOff(); textActor.SetDisplayPosition(600, 40); textActor.SetInput("This is a label example"); canvas.GetRenderer().AddActor(textActor);*/ // A display orientation axes example /*vtkAxesActor axes = new vtkAxesActor(); axes.AxisLabelsOn(); vtkOrientationMarkerWidget marker = new vtkOrientationMarkerWidget(); marker.SetOrientationMarker(axes); marker.SetViewport(0., 0., .3, .3); // A bug occurs : //# An unexpected error has been detected by Java Runtime Environment: //# //# SIGSEGV (0xb) at pc=0xb2d5082b, pid=17249, tid=2971425680 //# //# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode, sharing) //# Problematic frame: //# C [libvtkRenderingJava.so.5.1.0+0x36d82b] _ZN11vtkRenderer15GetActiveCameraEv+0x9 //# //# An error report file with more information is saved as hs_err_pid17249.log //# //# If you would like to submit a bug report, please visit: //# http://java.sun.com/webapps/bugreport/crash.jsp //# // And sometines this error : //# //# An unexpected error has been detected by Java Runtime Environment: //# //# SIGSEGV (0xb) at pc=0xb1314362, pid=4223, tid=2970426256 //# //# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode, sharing) //# Problematic frame: //# C [libvtkWidgetsJava.so.5.1.0+0x1f1362] _ZN26vtkOrientationMarkerWidget24ExecuteCameraUpdateEventEP9vtkObjectmPv+0x28 //# //# An error report file with more information is saved as hs_err_pid4223.log //# //# If you would like to submit a bug report, please visit: //# http://java.sun.com/webapps/bugreport/crash.jsp //# // And sometimes a warning occurs : // Generic Warning: In /home/ibarz/lib/VTK/Common/vtkObject.cxx, line 532 // Passive observer should not call AddObserver or RemoveObserver in callback. // Sometimes, we can see the "repere" not moving juste before the crash. // TODO : make a bug report ? marker.SetInteractor(canvas.getIren()); marker.SetEnabled(1); marker.SetInteractive(0);*/ // Delete all the java wrapped VTK objects //vtkGlobalJavaHash.DeleteAll(); } }