X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Felementclass%2Fconnection%2FEdgeTransforms.java;h=ca7828faa208e33cbdec9dc02e8d72bf563bf785;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hp=74e9badc487d0fe7b3fb50c338814c4ebf96e3bf;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/elementclass/connection/EdgeTransforms.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/elementclass/connection/EdgeTransforms.java index 74e9badc4..ca7828faa 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/elementclass/connection/EdgeTransforms.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/elementclass/connection/EdgeTransforms.java @@ -1,139 +1,139 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 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: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -package org.simantics.g2d.elementclass.connection; - -import java.awt.geom.AffineTransform; -import java.awt.geom.Path2D; -import java.awt.geom.Point2D; -import java.awt.geom.Rectangle2D; - -import org.simantics.g2d.element.IElement; -import org.simantics.g2d.element.handler.InternalSize; -import org.simantics.g2d.element.handler.BendsHandler; -import org.simantics.g2d.element.handler.Move; -import org.simantics.g2d.element.handler.Resize; -import org.simantics.g2d.element.handler.Scale; -import org.simantics.g2d.element.handler.Transform; - -/** - * Implements Bounds, Scale, Move and Transform for edges. - * - * @See {@link InternalSize} - * @See {@link Scale} - * @See {@link Move} - * @See {@link Transform} - * @author Toni Kalajainen - */ -public class EdgeTransforms implements InternalSize, Resize, Scale, Move, Transform { - - private static final long serialVersionUID = -1675978959634691347L; - public static final EdgeTransforms INSTANCE = new EdgeTransforms(); - - @Override - public Rectangle2D getBounds(IElement e, Rectangle2D size) { - if (size==null) size = new Rectangle2D.Double(); - BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); - Path2D path = bends.getPath(e); - size.setFrame(path.getBounds2D()); - return size; - } - - @Override - public void resize(IElement e, Rectangle2D newSize) { - BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); - Path2D path = bends.getPath(e); - Rectangle2D oldSize = path.getBounds2D(); - double sx = newSize.getWidth() / oldSize.getWidth(); - double sy = newSize.getHeight() / oldSize.getHeight(); - double tx = newSize.getMinX() + oldSize.getMinX(); - double ty = newSize.getMinY() + oldSize.getMinY(); - AffineTransform at = new AffineTransform(); - at.translate(tx, ty); - at.scale(sx, sy); - Path2D newPath = new Path2D.Double(path, at); - bends.setPath(e, newPath); - } - - @Override - public Double getFixedAspectRatio(IElement e) { - return null; - } - - @Override - public Rectangle2D getMaximumSize(IElement e) { - return null; - } - - @Override - public Rectangle2D getMinimumSize(IElement e) { - return null; - } - - @Override - public Point2D getMaximumScale(IElement e) { - return null; - } - - @Override - public Point2D getMinimumScale(IElement e) { - return null; - } - - private final static Point2D SCALE = new Point2D.Double(1.0, 1.0); - private final static Point2D POSITION = new Point2D.Double(0.0, 0.0); - private final static AffineTransform TRANSLATE = new AffineTransform(); - @Override - public Point2D getScale(IElement e) { - return SCALE; - } - - @Override - public Point2D getPosition(IElement e) { - return POSITION; - } - - @Override - public AffineTransform getTransform(IElement e) { - return TRANSLATE; - } - - @Override - public void moveTo(IElement e, double x, double y) { - BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); - Path2D path = bends.getPath(e); - AffineTransform at = new AffineTransform(); - at.translate(x, y); - Path2D newPath = new Path2D.Double(path, at); - bends.setPath(e, newPath); - } - - @Override - public void setScale(IElement e, Point2D newScale) { - BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); - Path2D path = bends.getPath(e); - AffineTransform at = new AffineTransform(); - at.scale(newScale.getX(), newScale.getY()); - Path2D newPath = new Path2D.Double(path, at); - bends.setPath(e, newPath); - - } - - @Override - public void setTransform(IElement e, AffineTransform at) { - BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); - Path2D path = bends.getPath(e); - Path2D newPath = new Path2D.Double(path, at); - bends.setPath(e, newPath); - } - - -} +/******************************************************************************* + * Copyright (c) 2007, 2010 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: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.g2d.elementclass.connection; + +import java.awt.geom.AffineTransform; +import java.awt.geom.Path2D; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; + +import org.simantics.g2d.element.IElement; +import org.simantics.g2d.element.handler.InternalSize; +import org.simantics.g2d.element.handler.BendsHandler; +import org.simantics.g2d.element.handler.Move; +import org.simantics.g2d.element.handler.Resize; +import org.simantics.g2d.element.handler.Scale; +import org.simantics.g2d.element.handler.Transform; + +/** + * Implements Bounds, Scale, Move and Transform for edges. + * + * @See {@link InternalSize} + * @See {@link Scale} + * @See {@link Move} + * @See {@link Transform} + * @author Toni Kalajainen + */ +public class EdgeTransforms implements InternalSize, Resize, Scale, Move, Transform { + + private static final long serialVersionUID = -1675978959634691347L; + public static final EdgeTransforms INSTANCE = new EdgeTransforms(); + + @Override + public Rectangle2D getBounds(IElement e, Rectangle2D size) { + if (size==null) size = new Rectangle2D.Double(); + BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); + Path2D path = bends.getPath(e); + size.setFrame(path.getBounds2D()); + return size; + } + + @Override + public void resize(IElement e, Rectangle2D newSize) { + BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); + Path2D path = bends.getPath(e); + Rectangle2D oldSize = path.getBounds2D(); + double sx = newSize.getWidth() / oldSize.getWidth(); + double sy = newSize.getHeight() / oldSize.getHeight(); + double tx = newSize.getMinX() + oldSize.getMinX(); + double ty = newSize.getMinY() + oldSize.getMinY(); + AffineTransform at = new AffineTransform(); + at.translate(tx, ty); + at.scale(sx, sy); + Path2D newPath = new Path2D.Double(path, at); + bends.setPath(e, newPath); + } + + @Override + public Double getFixedAspectRatio(IElement e) { + return null; + } + + @Override + public Rectangle2D getMaximumSize(IElement e) { + return null; + } + + @Override + public Rectangle2D getMinimumSize(IElement e) { + return null; + } + + @Override + public Point2D getMaximumScale(IElement e) { + return null; + } + + @Override + public Point2D getMinimumScale(IElement e) { + return null; + } + + private final static Point2D SCALE = new Point2D.Double(1.0, 1.0); + private final static Point2D POSITION = new Point2D.Double(0.0, 0.0); + private final static AffineTransform TRANSLATE = new AffineTransform(); + @Override + public Point2D getScale(IElement e) { + return SCALE; + } + + @Override + public Point2D getPosition(IElement e) { + return POSITION; + } + + @Override + public AffineTransform getTransform(IElement e) { + return TRANSLATE; + } + + @Override + public void moveTo(IElement e, double x, double y) { + BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); + Path2D path = bends.getPath(e); + AffineTransform at = new AffineTransform(); + at.translate(x, y); + Path2D newPath = new Path2D.Double(path, at); + bends.setPath(e, newPath); + } + + @Override + public void setScale(IElement e, Point2D newScale) { + BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); + Path2D path = bends.getPath(e); + AffineTransform at = new AffineTransform(); + at.scale(newScale.getX(), newScale.getY()); + Path2D newPath = new Path2D.Double(path, at); + bends.setPath(e, newPath); + + } + + @Override + public void setTransform(IElement e, AffineTransform at) { + BendsHandler bends = e.getElementClass().getSingleItem(BendsHandler.class); + Path2D path = bends.getPath(e); + Path2D newPath = new Path2D.Double(path, at); + bends.setPath(e, newPath); + } + + +}