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 java.util.List;
21
22 import org.vectomatic.dom.svg.OMSVGDocument;
23 import org.vectomatic.dom.svg.OMSVGGElement;
24 import org.vectomatic.dom.svg.OMSVGPathSeg;
25 import org.vectomatic.dom.svg.OMSVGPoint;
26 import org.vectomatic.dom.svg.OMSVGRectElement;
27 import org.vectomatic.svg.edit.client.command.path.IPathRepOwner.VertexState;
28
29 import com.google.gwt.dom.client.Element;
30
31
32
33
34
35 public abstract class SVGSegRep {
36
37
38
39 protected IPathRepOwner owner;
40
41
42
43 protected SVGSegRep previous;
44
45
46
47 protected SVGSegRep next;
48
49
50
51
52 protected OMSVGGElement tangents;
53
54
55
56 protected OMSVGRectElement vertex;
57
58 public SVGSegRep(IPathRepOwner owner) {
59 this.owner = owner;
60 OMSVGDocument document = (OMSVGDocument) owner.getSvg().getOwnerDocument();
61 tangents = document.createSVGGElement();
62 vertex = document.createSVGRectElement();
63 }
64
65 public OMSVGGElement getTangents() {
66 return tangents;
67 }
68
69 public OMSVGRectElement getVertex() {
70 return vertex;
71 }
72
73 public abstract OMSVGPathSeg getElement();
74 public abstract float getX();
75 public abstract float getY();
76 public abstract void setX(float x);
77 public abstract void setY(float y);
78 public float getX1() {
79 return 0;
80 }
81 public float getY1() {
82 return 0;
83 }
84 public float getX2() {
85 return 0;
86 }
87 public float getY2() {
88 return 0;
89 }
90 public Element getCp1() {
91 return null;
92 }
93 public void setCp1(OMSVGPoint p, float hs) {
94 }
95 public Element getCp2() {
96 return null;
97 }
98 public void setCp2(OMSVGPoint p, float hs) {
99 }
100
101
102
103
104
105
106
107
108
109
110
111
112 public abstract void processMouseMove(OMSVGPoint delta, Element target, float hs, boolean isCtrlKeyDown);
113 public void updateStart(OMSVGPoint delta, float hs) {
114 }
115 public abstract void updateEnd(OMSVGPoint delta, float hs);
116 public abstract void update(float hs);
117
118 public VertexState getState() {
119 return VertexState.read(vertex);
120 }
121
122 public void setState(VertexState state) {
123 state.write(vertex);
124 }
125
126 public SVGSegRep getPreviousSplineSeg() {
127 SVGSegRep splineSeg = null;
128 List<SVGSegRep> segments = owner.getSegments();
129 splineSeg = previous;
130 return (splineSeg instanceof SVGCubicSegRep || splineSeg instanceof SVGQuadraticSegRep) ? splineSeg : null;
131 }
132
133 public SVGSegRep getNextSplineSeg() {
134 SVGSegRep splineSeg = null;
135 splineSeg = next;
136 return (splineSeg instanceof SVGCubicSegRep || splineSeg instanceof SVGQuadraticSegRep) ? splineSeg : null;
137 }
138
139 public void setNext(SVGSegRep seg) {
140 next = seg;
141 }
142 public void setPrevious(SVGSegRep seg) {
143 previous = seg;
144 }
145
146 }
147
148