]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/awt/InteractiveVtkPanel.java
DPI scaling for vtkView
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / awt / InteractiveVtkPanel.java
index df91a5d4c7960d1735e311aadcaa7754b5b57583..761309e2697b18e0d9cdcbdfd68fada219ba9cc9 100644 (file)
@@ -16,9 +16,11 @@ import java.awt.event.MouseEvent;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.core.runtime.Platform;
 import org.simantics.g3d.scenegraph.RenderListener;
 import org.simantics.g3d.vtk.action.vtkAction;
 import org.simantics.g3d.vtk.common.VtkView;
+import org.simantics.scenegraph.utils.DPIUtil;
 import org.simantics.utils.threads.AWTThread;
 import org.simantics.utils.threads.IThreadWorkQueue;
 
@@ -29,6 +31,7 @@ import vtk.vtkAssemblyPath;
 import vtk.vtkCellPicker;
 import vtk.vtkGenericRenderWindowInteractor;
 import vtk.vtkInteractorStyleTrackballCamera;
+import vtk.vtkObject;
 import vtk.vtkObjectBase;
 import vtk.vtkPanel;
 import vtk.vtkPointPicker;
@@ -42,25 +45,31 @@ import vtk.vtkScenePicker;
 public class InteractiveVtkPanel extends vtkPanel implements VtkView {
        
        protected vtkGenericRenderWindowInteractor iren;
-    
+       
 
        public vtkGenericRenderWindowInteractor getRenderWindowInteractor() {
-        return this.iren;
-    }
+               return this.iren;
+       }
        private static final long serialVersionUID = 2815073937537950615L;
        
        
        public InteractiveVtkPanel() {
                super();
+               
+               if (!Platform.inDevelopmentMode()) {
+                       // This is actually a static method in C++
+                       new vtkObject().GlobalWarningDisplayOff();
+               }
+               
                iren = new vtkGenericRenderWindowInteractor();
                iren.SetRenderWindow(rw);
-        iren.TimerEventResetsTimerOff();
-        iren.SetSize(200, 200);
-        iren.ConfigureEvent();
-        vtkInteractorStyleTrackballCamera style = new vtkInteractorStyleTrackballCamera();
-        iren.SetInteractorStyle(style);
-        addDeletable(style);
-        addDeletable(iren);
+               iren.TimerEventResetsTimerOff();
+               iren.SetSize(200, 200);
+               iren.ConfigureEvent();
+               vtkInteractorStyleTrackballCamera style = new vtkInteractorStyleTrackballCamera();
+               iren.SetInteractorStyle(style);
+               addDeletable(style);
+               addDeletable(iren);
        }
        
        @Override
@@ -119,14 +128,29 @@ public class InteractiveVtkPanel extends vtkPanel implements VtkView {
        }
        
        public void setSize(int x, int y) {
-        if (windowset == 1) {
-            Lock();
-            rw.SetSize(x, y);
-            iren.SetSize(x, y);
-            iren.ConfigureEvent();
-            UnLock();
-        }
-    }
+               super.setSize(x, y);
+       }
+       
+       public void _setSize(int x, int y) {
+               System.out.println(this.getClass().getSimpleName() + " " + windowset + " setSize " +x + " " + y);
+               if (windowset == 1) {
+                       
+                       Lock();
+                       rw.SetSize(x, y);
+                       iren.SetSize(x, y);
+                       iren.ConfigureEvent();
+                       UnLock();
+               } else {
+                       if (x > 1000)
+                               System.out.println();
+               }
+       }
+       
+       @Override
+       public void setBounds(int x, int y, int width, int height) {
+               super.setBounds(x, y, width, height);
+               _setSize(width, height);
+       }
 
        private vtkScenePicker scenePicker;
        
@@ -432,6 +456,16 @@ public class InteractiveVtkPanel extends vtkPanel implements VtkView {
                repaint();
        }
        
+       @Override
+       public double upscale(double d) {
+               return DPIUtil.upscale(d);
+       }
+       
+       @Override
+       public int upscale(int i) {
+               return DPIUtil.upscale(i);
+       }
+       
        
        
 }