]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/G2DRenderingHints.java
Introduced G2DRenderingHints.KEY_TRANSFORM_UNDER_SPATIAL_ROOT
[simantics/platform.git] / bundles / org.simantics.scenegraph / src / org / simantics / scenegraph / g2d / G2DRenderingHints.java
index 00c7a6d0c8c516ead3e619f6edc8b8bb0070c9db..992213c4595f8dfa5f375af72b00750e00ce71bf 100644 (file)
@@ -12,8 +12,9 @@
 package org.simantics.scenegraph.g2d;
 
 import java.awt.Component;
-import java.awt.RenderingHints.Key;
+import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
+import java.util.Map;
 
 /**
  * @author Tuukka Lehtonen
@@ -21,6 +22,32 @@ import java.awt.geom.Rectangle2D;
  */
 public final class G2DRenderingHints {
 
+    public static final Key KEY_BEGIN_ELEMENT = new G2DRenderingHints.Key(0);
+    public static final Key KEY_END_ELEMENT = new G2DRenderingHints.Key(1);
+    public static final Key KEY_ELEMENT_ID = new G2DRenderingHints.Key(2);
+
+    public static class Key extends java.awt.RenderingHints.Key {
+
+        public Key(int privateKey) {
+            super(privateKey);    
+        }
+    
+        @Override
+        public boolean isCompatibleValue(Object val) {
+            switch (intKey()) {
+                case 0:
+                    return val == null || val instanceof String 
+                            || val instanceof Map;
+                case 1:
+                    return val == null || val instanceof Object;
+                case 2:
+                    return val == null || val instanceof Object;
+                default:
+                    throw new RuntimeException("Not possible!");
+            }
+        }
+    }
+       
     /**
      * A rendering hint for storing the boundaries of the control area within a
      * Graphics2D instance.
@@ -43,4 +70,55 @@ public final class G2DRenderingHints {
         }
     };
 
+    /**
+     * If this hint is not specified, the default interpretation should be
+     * {@value #AS_PATHS}.
+     * 
+     * @since 1.31.0
+     */
+    public static enum TextRenderingMode {
+        AS_PATHS,
+        AS_TEXT
+    }
+
+    /**
+     * A rendering hint for telling text rendering Simantics G2D scene graph node
+     * implementations how to render the text: as text or paths.
+     * 
+     * @since 1.31.0
+     */
+    public static final Key KEY_TEXT_RENDERING_MODE = new Key(2004) {
+        @Override
+        public boolean isCompatibleValue(Object val) {
+            return val instanceof TextRenderingMode;
+        }
+    };
+
+    /**
+     * Instead of rendering SVGNode using SVG Salamander pass it to G2D as SVGPassthruShape in String format.
+     * 
+     * @since 1.31.0
+     */
+    public static final Key KEY_SVG_PASSTHRU = new Key(2005) {
+        @Override
+        public boolean isCompatibleValue(Object val) {
+            return val instanceof Boolean;
+        }
+    };
+
+    /**
+     * The current Graphics2D AffineTransform for all nodes under the special
+     * spatialRoot : RTreeNode.
+     * 
+     * This can be used to optimize the creation and of new AffineTransforms by
+     * not having to use Graphics2D.getTransform to retrieve the current
+     * transformation which always creates new instances.
+     */
+    public static final Key KEY_TRANSFORM_UNDER_SPATIAL_ROOT = new Key(2006) {
+        @Override
+        public boolean isCompatibleValue(Object val) {
+            return val instanceof AffineTransform || val == null;
+        }
+    };
+
 }
\ No newline at end of file