X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2FSCLScenegraph.java;h=ef2fb5d66cbeff9faa4f5458dc91955be12fea98;hb=a8ee105b0825fcefc76b9aa967b275f418308df7;hp=55ed12656131c0629595cd7ded70c4f4bd064234;hpb=ec70c03d4ce3f68b71de5eeadce3d008620c5521;p=simantics%2Fplatform.git
diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java
index 55ed12656..ef2fb5d66 100644
--- a/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java
+++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java
@@ -821,7 +821,7 @@ public class SCLScenegraph {
parentBuilder.append(SELECTION_SECTION, "\n");
parentBuilder.append(MAIN_SECTION, "\n");
- } else if (node instanceof SelectionNode) {
+ } else if (isSelection0(node)) {
SelectionNode n = (SelectionNode)node;
SingleElementNode parentSEN = (SingleElementNode)NodeUtil.getNearestParentOfType(node, SingleElementNode.class);
@@ -849,9 +849,32 @@ public class SCLScenegraph {
parentBuilder2.append(SELECTION_MASK_SECTION,"\n");
}
+ } else if (node instanceof SelectionNode) {
+
+ Element doc = renderSVGNode(svgGenerator, (IG2DNode)node);
+ String svg = printSVGDocument(doc);
+ parentBuilder.append(MAIN_SECTION, "");
+ parentBuilder.append(MAIN_SECTION, svg);
+ parentBuilder.append(MAIN_SECTION, "\n");
+
} else if (node instanceof SVGNode) {
SVGNode svg = (SVGNode)node;
+ AffineTransform at = svg.getTransform();
+ if (!at.isIdentity()) {
+ if(at.getScaleX() == 1.0 && at.getScaleY() == 1.0 && at.getShearX() == 0.0 && at.getShearY() == 0.0) {
+ String m = "translate(" + at.getTranslateX() + " " + at.getTranslateY() + ")";
+ parentBuilder.append(MAIN_SECTION, "\n");
+ } else {
+ double[] ds = new double[6];
+ at.getMatrix(ds);
+ String m = "matrix(" + ds[0] + " " + ds[1] + " " + ds[2] + " " + ds[3] + " " + ds[4] + " " + ds[5] + ")";
+ parentBuilder.append(MAIN_SECTION, "\n");
+ }
+ }
parentBuilder.append(MAIN_SECTION, svg.getSVGText());
+ if (!at.isIdentity()) {
+ parentBuilder.append(MAIN_SECTION, "\n");
+ }
} else if (node instanceof G2DParentNode) {
AffineTransform at = node.getTransform();
if(node instanceof SingleElementNode) {
@@ -882,6 +905,17 @@ public class SCLScenegraph {
}
+ private boolean isSelection0(IG2DNode node) {
+
+ if(node instanceof SelectionNode) {
+ SelectionNode sn = (SelectionNode)node;
+ return sn.getSelectionId() == 0;
+ } else {
+ return false;
+ }
+
+ }
+
private RenderSVGContext getParentBuilder(IG2DNode node) {
INode parentSEN = NodeUtil.getNearestParentOfType(node, SingleElementNode.class);