1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.svg.edit.client.command.path;
19
20 import org.vectomatic.dom.svg.OMSVGPathSeg;
21 import org.vectomatic.dom.svg.OMSVGPathSegLinetoAbs;
22 import org.vectomatic.dom.svg.OMSVGPoint;
23
24 import com.google.gwt.dom.client.Element;
25
26
27
28
29
30 public class SVGLineSegRep extends SVGSegRep {
31 protected OMSVGPathSegLinetoAbs lineToSeg;
32
33 public SVGLineSegRep(IPathRepOwner owner, OMSVGPathSegLinetoAbs lineToSeg) {
34 super(owner);
35 this.lineToSeg = lineToSeg;
36 }
37
38 public OMSVGPathSeg getElement() {
39 return lineToSeg;
40 }
41
42 @Override
43 public float getX() {
44 return lineToSeg.getX();
45 }
46 @Override
47 public void setX(float x) {
48 lineToSeg.setX(x);
49 }
50 @Override
51 public float getY() {
52 return lineToSeg.getY();
53 }
54 @Override
55 public void setY(float y) {
56 lineToSeg.setY(y);
57 }
58
59 @Override
60 public void update(float hs) {
61 float x = lineToSeg.getX();
62 float y = lineToSeg.getY();
63 vertex.getX().getBaseVal().setValue(x - hs);
64 vertex.getY().getBaseVal().setValue(y - hs);
65 vertex.getWidth().getBaseVal().setValue(hs * 2);
66 vertex.getHeight().getBaseVal().setValue(hs * 2);
67 }
68
69 @Override
70 public void updateEnd(OMSVGPoint delta, float hs) {
71 lineToSeg.setX(lineToSeg.getX() + delta.getX());
72 lineToSeg.setY(lineToSeg.getY() + delta.getY());
73 update(hs);
74 }
75
76 @Override
77 public void processMouseMove(OMSVGPoint delta, Element target, float hs, boolean isCtrlKeyDown) {
78 if (target == null) {
79 updateEnd(delta, hs);
80 if (next != null) {
81 next.updateStart(delta, hs);
82 }
83 }
84 }
85
86 @Override
87 public String toString() {
88 StringBuilder builder = new StringBuilder("L ");
89 builder.append(lineToSeg.getX());
90 builder.append(",");
91 builder.append(lineToSeg.getY());
92 return builder.toString();
93 }
94
95 }