/** * Initializes a new InteractiveBehavior. * * @param univ */ public InteractiveBehavior(final DefaultUniverse univ) { this.univ = univ; this.canvas = (ImageCanvas3D) univ.getCanvas(); this.contentTransformer = univ.getContentTransformer(); this.picker = univ.getPicker(); this.viewTransformer = univ.getViewPlatformTransformer(); mouseEvents = new WakeupOnAWTEvent[6]; lastToolID = univ.ui.getToolId(); }
public void close() { if (null == universe) return; universe.removeUniverseListener(this); // Must remove the listener so this instance can be garbage // collected and removed from the Canvas3D, overcomming the limit // of 32 total Canvas3D instances. try { final Method m = SimpleUniverse.class.getMethod("removeRenderingErrorListener", new Class[] { RenderingErrorListener.class }); if (null != m) m.invoke(universe, new Object[] { error_listener }); } catch (final Exception ex) { System.out.println("Could NOT remove the RenderingErrorListener!"); ex.printStackTrace(); } if (null != universe.getWindow()) universe.cleanup(); imp_updater.quit(); canvas3D.flush(); universe = null; dispose(); }
@Override public void componentResized(final ComponentEvent e) { fireCanvasResized(); } });
/** * Initialize this ViewPlatformTransformer. * * @param univ * @param callback */ public ViewPlatformTransformer(final DefaultUniverse univ, final BehaviorCallback callback) { this.univ = univ; this.canvas = (ImageCanvas3D) univ.getCanvas(); this.callback = callback; this.centerTG = univ.getCenterTG(); this.rotationTG = univ.getRotationTG(); this.zoomTG = univ.getZoomTG(); this.translateTG = univ.getTranslateTG(); ((Image3DUniverse) univ).getGlobalCenterPoint(rotCenter); }
getViewer().getView().setProjectionPolicy(UniverseSettings.projection); scene.setCapability(Group.ALLOW_CHILDREN_WRITE); final Background bg = ((ImageCanvas3D) getCanvas()).getBG(); bg.setApplicationBounds(bounds); scene.addChild(bg); lightBG.addChild(light); getZoomTG().addChild(lightBG); contentTransformer = new ContentTransformer(this, this); picker = new Picker(this); setInteractiveBehavior(new InteractiveBehavior(this)); addBranchGraph(scene); getCanvas().addMouseListener(new MouseAdapter() { getCanvas().addMouseMotionListener(new MouseMotionAdapter() { getCanvas().addComponentListener(new ComponentAdapter() { fireTransformationUpdated();
/** * Constructs a new Picker * * @param univ */ public Picker(final DefaultUniverse univ) { this.univ = univ; this.canvas = (ImageCanvas3D) univ.getCanvas(); }
public ImageWindow3D(final String title, final DefaultUniverse universe) { super(title); final String j3dNoOffScreen = System.getProperty("j3d.noOffScreen"); if (j3dNoOffScreen != null && j3dNoOffScreen.equals("true")) noOffScreen = true; imp = new ImagePlus(); imp.setTitle("ImageJ 3D Viewer"); this.universe = universe; this.canvas3D = (ImageCanvas3D) universe.getCanvas(); error_listener = new ErrorListener(); error_listener.addTo(universe); add(canvas3D, -1); addWindowListener(new WindowAdapter() { @Override public void windowClosing(final WindowEvent e) { close(); } }); universe.addUniverseListener(this); updateImagePlus(); universe.ui.setHandTool(); }
final GraphicsConfigTemplate3D templ = new GraphicsConfigTemplate3D(); templ.setDoubleBuffer(GraphicsConfigTemplate.UNNECESSARY); final Canvas3D onCanvas = getCanvas(); if (offCanvas == null) { final GraphicsConfiguration gc = sOff.setPhysicalScreenWidth(sOn.getPhysicalScreenWidth()); sOff.setPhysicalScreenHeight(sOn.getPhysicalScreenHeight()); getViewer().getView().addCanvas3D(offCanvas); bImage = offCanvas.getOffScreenBuffer().getImage(); getViewer().getView().removeCanvas3D(offCanvas); return new ImagePlus("Snapshot", bImage);
final Content c = univ.getSelected(); if (id == MouseEvent.MOUSE_PRESSED) { if (c != null && !c.isLocked()) contentTransformer.init(c, e.getX(), e Content sel = c; if (sel == null && ((Image3DUniverse) univ).getContents().size() == 1) sel = (Content) univ.contents().next(); if (sel != null) { sel.showPointList(true); else if (units < 0) og.decrease(axis); univ.fireContentChanged(c);
final Point3d p = univ.getPicker().getPickPointGeometry(c, x, y); float r = 0, dD = 0; if (p != null) { univ.getViewPlatformTransformer().getYDir(axisPerDx, ipToVWorld); univ.getViewPlatformTransformer().getXDir(axisPerDy, ipToVWorld);
if (mouseEventID != MouseEvent.MOUSE_CLICKED) return; final Picker picker = univ.getPicker(); final Content c = picker.getPickedContent(me.getX(), me.getY()); if (null == c)
final Content c = univ.getSelected(); int axis = -1; if (canvas.isKeyDown(KeyEvent.VK_X)) axis = AxisConstants.X_AXIS; if (changed) univ.fireContentChanged(c);
@Override public void mouseReleased(final MouseEvent e) { if (ui.isHandTool() || ui.isMagnifierTool()) { if (transformed) fireTransformationFinished(); transformed = false; } } });
@Override public void mouseDragged(final MouseEvent e) { if (ui.isHandTool() || ui.isMagnifierTool()) { if (!transformed) fireTransformationStarted(); transformed = true; } } });
/** * Constructs a new ContentTransformer. * * @param univ * @param callback */ public ContentTransformer(final DefaultUniverse univ, final BehaviorCallback callback) { this.univ = univ; this.canvas = (ImageCanvas3D) univ.getCanvas(); this.callback = callback; this.initializer = new Initializer(); }
/** * Invokes the transformationStarted() method of all registered * UniverseListeners. */ public void fireTransformationStarted() { for (int i = 0; i < listeners.size(); i++) { final UniverseListener l = (UniverseListener) listeners.get(i); l.transformationStarted(getCanvas().getView()); } }
/** * Invokes the transformationUpdated() method of all registered * UniverseListeners. */ public void fireTransformationUpdated() { for (int i = 0; i < listeners.size(); i++) { final UniverseListener l = (UniverseListener) listeners.get(i); l.transformationUpdated(getCanvas().getView()); } }
/** * Invokes the transformationFinished() method of all registered * UniverseListeners. */ public void fireTransformationFinished() { for (int i = 0; i < listeners.size(); i++) { final UniverseListener l = (UniverseListener) listeners.get(i); l.transformationFinished(getCanvas().getView()); } }
public int[] getPickedVertexIndices(final BranchGroup bg, final int x, final int y) { final PickCanvas pickCanvas = new PickCanvas(univ.getCanvas(), bg); pickCanvas.setTolerance(3f); pickCanvas.setMode(PickInfo.PICK_GEOMETRY); pickCanvas.setFlags(PickInfo.CLOSEST_GEOM_INFO); pickCanvas.setShapeLocation(x, y); try { final PickInfo result = pickCanvas.pickClosest(); if (result == null) return null; final PickInfo.IntersectionInfo info = result.getIntersectionInfos()[0]; return info.getVertexIndices(); } catch (final Exception ex) { ex.printStackTrace(); return null; } }