X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fnodes%2Fconnection%2FActionShapes.java;h=4a1ed453af9018bb044e0011c1049b5c8d69d37a;hp=cc44d372aa3021d3602001622385f9f37fe3ca7a;hb=refs%2Fchanges%2F38%2F238%2F2;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/connection/ActionShapes.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/connection/ActionShapes.java index cc44d372a..4a1ed453a 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/connection/ActionShapes.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/connection/ActionShapes.java @@ -1,65 +1,65 @@ -/******************************************************************************* - * Copyright (c) 2016 Association for Decentralized Information Management in - * Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Semantum Oy - initial API and implementation - *******************************************************************************/ -package org.simantics.scenegraph.g2d.nodes.connection; - -import java.awt.Shape; -import java.awt.geom.AffineTransform; -import java.awt.geom.PathIterator; -import java.awt.geom.Rectangle2D; -import java.io.IOException; -import java.io.StringReader; - -import org.apache.batik.parser.AWTPathProducer; -import org.apache.batik.parser.ParseException; - -/** - * @author Tuukka Lehtonen - * @since 1.22.2, 1.25.0 - */ -class ActionShapes { - - private static final String SCISSOR_PATH = "M 1.0204323,-0.337727 C 0.92746851,-0.449273 0.76034565,-0.444851 0.6356318,-0.396443 l -0.78340687,0.296247 c -0.22844697,-0.124111 -0.45371804,-0.08771 -0.45389716,-0.148477 -1.3989e-4,-0.0475 0.0435015,-0.03722 0.0366086,-0.160853 -0.006619,-0.118717 -0.1308295,-0.206188 -0.24796642,-0.198065 -0.11720479,-3.56e-4 -0.23843025,0.08983 -0.23910595,0.213676 -0.00836,0.124786 0.096897,0.240343 0.221027,0.248145 0.14544563,0.02121 0.40264226,-0.06761 0.5240569,0.148471 -0.0894972,0.166266 -0.24914468,0.167198 -0.39351418,0.159315 -0.11985922,-0.0065 -0.26369532,0.02823 -0.32050912,0.146186 -0.0549,0.113051 -2.567e-4,0.27357 0.12665686,0.307747 0.12812523,0.04659 0.30371326,-0.01328 0.33371488,-0.160538 0.0231253,-0.113504 -0.0573489,-0.166568 -0.0266378,-0.207838 0.0231733,-0.03113 0.17097889,-0.01358 0.4338543,-0.13258 l 0.85013888,0.296862 c 0.10739722,0.02964 0.23851917,0.02826 0.33326488,-0.07755 L 0.14842838,0.004094 1.0204312,-0.337731 Z m -1.7489069,-0.176336 c 0.12383244,0.06866 0.11428878,0.255942 -0.0140755,0.292584 -0.11605716,0.0408 -0.2648432,-0.0717 -0.2281757,-0.197724 0.021388,-0.103377 0.15747907,-0.141864 0.24225133,-0.09486 z m 0.007633,0.765633 c 0.12914301,0.04727 0.1078809,0.265594 -0.0232155,0.295316 -0.0869168,0.03046 -0.2114303,-0.01258 -0.2205326,-0.115113 -0.017329,-0.124578 0.12880443,-0.237615 0.24374818,-0.180208 z"; - - private static final String CROSS_PATH = "M 0.82205219,-1.16919 0.00195748,-0.3491 -0.81813723,-1.16919 -1.1707871,-0.81654 -0.35069244,0.00355 -1.1707871,0.82364 -0.81813723,1.17629 0.00195748,0.3562 0.82205219,1.17629 1.1747021,0.82364 0.35460739,0.00355 l 0,0 0.82009471,-0.82009 z"; - - static Shape parsePath(String path, AffineTransform xform) { - try { - Shape s = AWTPathProducer.createShape(new StringReader(path), PathIterator.WIND_EVEN_ODD); - return xform != null ? xform.createTransformedShape(s) : s; - } catch (ParseException | IOException e) { - // Should not happen - throw new Error(e); - } - } - - static Shape transformShape(Shape shape, double scaleX, double scaleY, double offsetX, double offsetY, double rotate) { - AffineTransform tr = new AffineTransform(); - tr.translate(offsetX, offsetY); - tr.scale(scaleX, scaleY); - if (rotate != 0) - tr.rotate(rotate); - return tr.createTransformedShape(shape); - } - - public static final Shape SCISSOR_SHAPE = parsePath(SCISSOR_PATH, null); - public static final Shape CROSS_SHAPE = parsePath(CROSS_PATH, null); - - private static final Rectangle2D SCISSOR_BOUNDS = SCISSOR_SHAPE.getBounds2D(); - private static final Rectangle2D CROSS_BOUNDS = CROSS_SHAPE.getBounds2D(); - - public static final double SCISSOR_WIDTH = SCISSOR_BOUNDS.getWidth(); - public static final double SCISSOR_HEIGHT = SCISSOR_BOUNDS.getHeight(); - - public static final double CROSS_WIDTH = CROSS_BOUNDS.getWidth(); - public static final double CROSS_HEIGHT = CROSS_BOUNDS.getHeight(); - -} +/******************************************************************************* + * Copyright (c) 2016 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Semantum Oy - initial API and implementation + *******************************************************************************/ +package org.simantics.scenegraph.g2d.nodes.connection; + +import java.awt.Shape; +import java.awt.geom.AffineTransform; +import java.awt.geom.PathIterator; +import java.awt.geom.Rectangle2D; +import java.io.IOException; +import java.io.StringReader; + +import org.apache.batik.parser.AWTPathProducer; +import org.apache.batik.parser.ParseException; + +/** + * @author Tuukka Lehtonen + * @since 1.22.2, 1.25.0 + */ +class ActionShapes { + + private static final String SCISSOR_PATH = "M 1.0204323,-0.337727 C 0.92746851,-0.449273 0.76034565,-0.444851 0.6356318,-0.396443 l -0.78340687,0.296247 c -0.22844697,-0.124111 -0.45371804,-0.08771 -0.45389716,-0.148477 -1.3989e-4,-0.0475 0.0435015,-0.03722 0.0366086,-0.160853 -0.006619,-0.118717 -0.1308295,-0.206188 -0.24796642,-0.198065 -0.11720479,-3.56e-4 -0.23843025,0.08983 -0.23910595,0.213676 -0.00836,0.124786 0.096897,0.240343 0.221027,0.248145 0.14544563,0.02121 0.40264226,-0.06761 0.5240569,0.148471 -0.0894972,0.166266 -0.24914468,0.167198 -0.39351418,0.159315 -0.11985922,-0.0065 -0.26369532,0.02823 -0.32050912,0.146186 -0.0549,0.113051 -2.567e-4,0.27357 0.12665686,0.307747 0.12812523,0.04659 0.30371326,-0.01328 0.33371488,-0.160538 0.0231253,-0.113504 -0.0573489,-0.166568 -0.0266378,-0.207838 0.0231733,-0.03113 0.17097889,-0.01358 0.4338543,-0.13258 l 0.85013888,0.296862 c 0.10739722,0.02964 0.23851917,0.02826 0.33326488,-0.07755 L 0.14842838,0.004094 1.0204312,-0.337731 Z m -1.7489069,-0.176336 c 0.12383244,0.06866 0.11428878,0.255942 -0.0140755,0.292584 -0.11605716,0.0408 -0.2648432,-0.0717 -0.2281757,-0.197724 0.021388,-0.103377 0.15747907,-0.141864 0.24225133,-0.09486 z m 0.007633,0.765633 c 0.12914301,0.04727 0.1078809,0.265594 -0.0232155,0.295316 -0.0869168,0.03046 -0.2114303,-0.01258 -0.2205326,-0.115113 -0.017329,-0.124578 0.12880443,-0.237615 0.24374818,-0.180208 z"; + + private static final String CROSS_PATH = "M 0.82205219,-1.16919 0.00195748,-0.3491 -0.81813723,-1.16919 -1.1707871,-0.81654 -0.35069244,0.00355 -1.1707871,0.82364 -0.81813723,1.17629 0.00195748,0.3562 0.82205219,1.17629 1.1747021,0.82364 0.35460739,0.00355 l 0,0 0.82009471,-0.82009 z"; + + static Shape parsePath(String path, AffineTransform xform) { + try { + Shape s = AWTPathProducer.createShape(new StringReader(path), PathIterator.WIND_EVEN_ODD); + return xform != null ? xform.createTransformedShape(s) : s; + } catch (ParseException | IOException e) { + // Should not happen + throw new Error(e); + } + } + + static Shape transformShape(Shape shape, double scaleX, double scaleY, double offsetX, double offsetY, double rotate) { + AffineTransform tr = new AffineTransform(); + tr.translate(offsetX, offsetY); + tr.scale(scaleX, scaleY); + if (rotate != 0) + tr.rotate(rotate); + return tr.createTransformedShape(shape); + } + + public static final Shape SCISSOR_SHAPE = parsePath(SCISSOR_PATH, null); + public static final Shape CROSS_SHAPE = parsePath(CROSS_PATH, null); + + private static final Rectangle2D SCISSOR_BOUNDS = SCISSOR_SHAPE.getBounds2D(); + private static final Rectangle2D CROSS_BOUNDS = CROSS_SHAPE.getBounds2D(); + + public static final double SCISSOR_WIDTH = SCISSOR_BOUNDS.getWidth(); + public static final double SCISSOR_HEIGHT = SCISSOR_BOUNDS.getHeight(); + + public static final double CROSS_WIDTH = CROSS_BOUNDS.getWidth(); + public static final double CROSS_HEIGHT = CROSS_BOUNDS.getHeight(); + +}