Due to the current gap in continued funding from the U.S. National Science Foundation (NSF), the NSF Unidata Program Center has temporarily paused most operations. See NSF Unidata Pause in Most Operations for details.
Hello Visaders,Those with mouse wheel and Java 1.4 or higher may find this piece of code useful, it implements the zoom. Its very simple and better than using the "shift + left button".
But the behavior is a little diferent from the "shift + left button" zoom, the center is the center of the box, not the center of the screen as the user might expect. I think this problem has already been solved in the list but I couldnt find it in the archive. Any other sugestions on funcionality and performance would also be apreciated:
//display is an instance of DisplayImpl that in this case must be declared final,
//but you can workaround this by calling a method outside the listenerdisplay.getComponent().addMouseWheelListener(new java.awt.event.MouseWheelListener() {
public void mouseWheelMoved(java.awt.event.MouseWheelEvent e) { int rot = e.getWheelRotation(); try{ ProjectionControl pControl = display.getProjectionControl(); double[] pControlMatrix = pControl.getMatrix(); // 3D if (pControlMatrix.length > 10){ // Zoom in if (rot < 0){ pControlMatrix[0] = pControlMatrix[0]*1.1f; pControlMatrix[5] = pControlMatrix[5]*1.1f; pControlMatrix[10] = pControlMatrix[10]*1.1f; } // Zoom out if (rot > 0){ pControlMatrix[0] = pControlMatrix[0]*0.9f; pControlMatrix[5] = pControlMatrix[5]*0.9f;pControlMatrix[10] = pControlMatrix[10]*0.9f; } // 2D } else {
// Zoom in if (rot < 0){ pControlMatrix[0] = pControlMatrix[0]*1.1f; pControlMatrix[3] = pControlMatrix[3]*1.1f; } // Zoom out if (rot > 0){ pControlMatrix[0] = pControlMatrix[0]*0.9f; pControlMatrix[3] = pControlMatrix[3]*0.9f; } } pControl.setMatrix(pControlMatrix); pControl.saveProjection(); } catch (RemoteException re) {} catch (VisADException ve) {} } }); Cicero Zandona
visad
archives: