View Javadoc

1   /**********************************************
2    * Copyright (C) 2011 Lukas Laag
3    * This file is part of svgreal.
4    * 
5    * svgreal is free software: you can redistribute it and/or modify
6    * it under the terms of the GNU General Public License as published by
7    * the Free Software Foundation, either version 3 of the License, or
8    * (at your option) any later version.
9    * 
10   * svgreal is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   * 
15   * You should have received a copy of the GNU General Public License
16   * along with svgreal.  If not, see http://www.gnu.org/licenses/
17   **********************************************/
18  package org.vectomatic.svg.edit.client.command.path;
19  
20  import org.vectomatic.dom.svg.OMSVGPathSeg;
21  import org.vectomatic.dom.svg.OMSVGPathSegMovetoAbs;
22  import org.vectomatic.dom.svg.OMSVGPoint;
23  
24  import com.google.gwt.dom.client.Element;
25  
26  /**
27   * Class to represent a path moveto segment 
28   * @author laaglu
29   */
30  public class SVGMoveSegRep extends SVGSegRep {
31  	/**
32  	 * The moveto component of this path segment
33  	 */
34  	protected OMSVGPathSegMovetoAbs moveToSeg;
35  
36  	public SVGMoveSegRep(IPathRepOwner owner, OMSVGPathSegMovetoAbs moveToSeg) {
37  		super(owner);
38  		this.moveToSeg = moveToSeg;
39  	}
40  
41  	public OMSVGPathSeg getElement() {
42  		return moveToSeg;
43  	}
44  
45  	@Override
46  	public float getX() {
47  		return moveToSeg.getX();
48  	}
49  	@Override
50  	public void setX(float x) {
51  		moveToSeg.setX(x);
52  	}
53  	@Override
54  	public float getY() {
55  		return moveToSeg.getY();
56  	}
57  	@Override
58  	public void setY(float y) {
59  		moveToSeg.setY(y);
60  	}
61  
62  	@Override
63  	public void update(float hs) {
64  		float x = moveToSeg.getX();
65  		float y = moveToSeg.getY();
66  		vertex.getX().getBaseVal().setValue(x - hs);
67  		vertex.getY().getBaseVal().setValue(y - hs);
68  		vertex.getWidth().getBaseVal().setValue(hs * 2);
69  		vertex.getHeight().getBaseVal().setValue(hs * 2);
70  	}
71  
72  	@Override
73  	public void updateEnd(OMSVGPoint delta, float hs) {
74  		moveToSeg.setX(moveToSeg.getX() + delta.getX());
75  		moveToSeg.setY(moveToSeg.getY() + delta.getY());
76  		update(hs);
77  	}
78  
79  	@Override
80  	public void processMouseMove(OMSVGPoint delta, Element target, float hs, boolean isCtrlKeyDown) {
81  		if (target == null) {
82  			updateEnd(delta, hs);
83  			if (next != null) {
84  				next.updateStart(delta, hs);
85  			}
86  		}
87  	}
88  	
89  	@Override
90  	public String toString() {
91  		StringBuilder builder = new StringBuilder("M ");
92  		builder.append(moveToSeg.getX());
93  		builder.append(",");
94  		builder.append(moveToSeg.getY());
95  		return builder.toString();
96  	}
97  }