]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/handler/PickRequest.java
Performance and resource consumption optimization for G2D picking
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / diagram / handler / PickRequest.java
index a43e8350a15b2aeff8c2f155558d4cd93b5aa72b..265caa805b604210e12612d49b22a2126ada9c35 100644 (file)
@@ -20,6 +20,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
+import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.connection.handler.ConnectionHandler;
 import org.simantics.g2d.element.IElement;
 import org.simantics.g2d.element.handler.BendsHandler;
@@ -50,6 +51,12 @@ public class PickRequest {
     public PickFilter pickFilter = null;
     public PickSorter pickSorter = null;
 
+    /**
+     * Used to optimize picking if provided via R-tree traversal to find
+     * intersecting elements, not everything.
+     */
+    public ICanvasContext pickContext;
+
     public PickRequest(double x, double y)
     {
         pickArea = new Rectangle2D.Double(x, y, 1, 1);
@@ -67,6 +74,11 @@ public class PickRequest {
         pickArea = GeometryUtils.transformShape(shape, transform);
     }
 
+    public PickRequest context(ICanvasContext ctx) {
+        this.pickContext = ctx;
+        return this;
+    }
+
     public static interface PickFilter {
         boolean accept(IElement e);