]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/awt/vtkCameraAndSelectorAction.java
Scale tooltip font by display DPI.
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / awt / vtkCameraAndSelectorAction.java
index d1d4ac0c62a69289e6cb45ede3d5a36fabd2df22..eef4e2478fa545ed611fbb4e0bcdc2381fed2bcc 100644 (file)
@@ -17,6 +17,10 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import javax.vecmath.Point2d;
+import javax.vecmath.Point2i;
+import javax.vecmath.Point3d;
+
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.ISelectionProvider;
@@ -192,6 +196,10 @@ public class vtkCameraAndSelectorAction extends vtkAwtAction implements ISelecti
                                resetCameraClippingRange();
                        }
                }
+               if (hoverActor.size() > 0) {
+                       hoverActor.clear();
+                       fireHoverChanged();
+               }
                lastX = x;
                lastY = y;
                panel.Render();
@@ -207,6 +215,8 @@ public class vtkCameraAndSelectorAction extends vtkAwtAction implements ISelecti
                                return;
                        if (e.getButton() != MouseEvent.BUTTON1)
                                return;
+                       lastX = e.getX();
+                       lastY = e.getY();
                        vtkProp spick[] = panel.pick(e.getX(), e.getY());
                        if (spick != null && spick.length > 0) {
                                for (vtkProp selectActor : spick) {
@@ -289,6 +299,30 @@ public class vtkCameraAndSelectorAction extends vtkAwtAction implements ISelecti
                        }
                }
                
+               @Override
+               public void mouseExited(MouseEvent e) {
+                       if (hoverActor.size() > 0) {
+                               hoverActor.clear();
+                               fireHoverChanged();
+                       }
+               }
+               
+               /**
+                * Returns mouse position in AWT screen coordinates. 
+                * @return
+                */
+               public Point2i getMousePositionAWT() {
+                       return new Point2i(lastX, lastY);
+               }
+               
+               /**
+                * Returns mouse position in VTK screen coordinates. 
+                * @return
+                */
+               public Point2d getMousePosition() {
+                       return new Point2d(lastX, rw.GetSize()[1]-lastY);
+               }
+               
                public List<vtkProp> getSelectActor() {
                        return selectActors;
                }
@@ -380,16 +414,51 @@ public class vtkCameraAndSelectorAction extends vtkAwtAction implements ISelecti
                        });
                }
                
-               public void focus(double x, double y, double z) {
+               public vtkCamera getCamera() {
+                       return cam;
+               }
+               
+               public Point3d getPosition() {
+                       double pos[] = cam.GetPosition();
+                       return new Point3d(pos);
+               }
+               
+               public Point3d getFocus() {
+                       double pos[] = cam.GetFocalPoint();
+                       return new Point3d(pos);
+               }
+               
+               public void setFocus(Point3d focus) {
+                       setFocus(focus.x,focus.y,focus.z);
+               }
+               
+               public void setFocus(double x, double y, double z) {
                        Lock();
                        cam.SetFocalPoint(x, y, z);
                        if (doNotRotate)
                                cam.SetRoll(0);
                        cam.OrthogonalizeViewUp();
-                       resetCameraClippingRange();
+                       ren.ResetCameraClippingRange();
                        panel.UpdateLight();
                        UnLock();
                }
                
+               public void setPosition(Point3d position) {
+                       setPosition(position.x,position.y,position.z);
+               }
+               
+               public void setPosition(double x, double y, double z) {
+                       Lock();
+                       cam.SetPosition(x, y, z);
+                       if (doNotRotate)
+                               cam.SetRoll(0);
+                       cam.OrthogonalizeViewUp();
+                       ren.ResetCameraClippingRange();
+                       panel.UpdateLight();
+                       UnLock();
+               }
+               
+               
+               
                
 }