1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
package vtk;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
/**
* vtkRenderWindowPanel is a vtkCanvas which allows additional vtkRenderers to
* be added. vtkPanel and vtkCanvas force you to add actors to the internal
* vtkRenderer. vtkRenderWindowPanel always renders, even if the internal
* renderer has no visible actors.
*
* @author Kitware
*/
public class vtkRenderWindowPanel extends vtkCanvas {
private static final long serialVersionUID = 1L;
public vtkRenderWindowPanel() {
cam = new vtkCamera();
lgt = new vtkLight();
}
public vtkRenderWindowPanel(vtkRenderWindow win) {
super(win);
cam = new vtkCamera();
lgt = new vtkLight();
}
public synchronized void Render() {
if (!rendering) {
rendering = true;
if (rw != null) {
if (windowset == 0) {
// set the window id and the active camera
RenderCreate(rw);
Lock();
rw.SetSize(getWidth(), getHeight());
UnLock();
windowset = 1;
// notify observers that we have a renderwindow created
// windowSetObservable.notifyObservers();
}
Lock();
rw.Render();
UnLock();
}
rendering = false;
}
}
public void mousePressed(MouseEvent e) {
Lock();
rw.SetDesiredUpdateRate(5.0);
lastX = e.getX();
lastY = e.getY();
ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
iren.SetEventInformationFlipY(e.getX(), e.getY(), ctrlPressed, shiftPressed, '0', 0, "0");
if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
iren.LeftButtonPressEvent();
}
else if ((e.getModifiers() & InputEvent.BUTTON2_MASK) == InputEvent.BUTTON2_MASK) {
iren.MiddleButtonPressEvent();
}
else if ((e.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) {
iren.RightButtonPressEvent();
}
UnLock();
}
public void mouseDragged(MouseEvent e) {
ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
iren.SetEventInformationFlipY(e.getX(), e.getY(), ctrlPressed, shiftPressed, '0', 0, "0");
Lock();
iren.MouseMoveEvent();
UnLock();
}
public void mouseWheelMoved(MouseWheelEvent e) {
ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
Lock();
if (e.getWheelRotation() > 0) {
iren.SetEventInformationFlipY(e.getX(), e.getY(), ctrlPressed, shiftPressed, '0', 0, "0");
iren.MouseWheelBackwardEvent();
}
else if (e.getWheelRotation() < 0) {
iren.SetEventInformationFlipY(e.getX(), e.getY(), ctrlPressed, shiftPressed, '0', 0, "0");
iren.MouseWheelForwardEvent();
}
UnLock();
}
public void keyPressed(KeyEvent e) {
char keyChar = e.getKeyChar();
ctrlPressed = (e.getModifiers() & InputEvent.CTRL_MASK) == InputEvent.CTRL_MASK ? 1 : 0;
shiftPressed = (e.getModifiers() & InputEvent.SHIFT_MASK) == InputEvent.SHIFT_MASK ? 1 : 0;
iren.SetEventInformationFlipY(lastX, lastY, ctrlPressed, shiftPressed, keyChar, 0, String.valueOf(keyChar));
Lock();
iren.KeyPressEvent();
iren.CharEvent();
UnLock();
}
}
|