1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.vectomatic.svg.edit.client.model;
19
20 import org.vectomatic.dom.svg.OMSVGLength;
21 import org.vectomatic.dom.svg.OMSVGPaint;
22 import org.vectomatic.dom.svg.OMSVGSVGElement;
23 import org.vectomatic.dom.svg.utils.OMSVGParser;
24 import org.vectomatic.svg.edit.client.model.svg.DashArray;
25 import org.vectomatic.svg.edit.client.model.svg.SVGLength;
26
27
28
29
30
31
32
33
34
35 public interface IConverter<S,D> {
36 public static final IConverter<String, String> NOP_CONVERTER = new IConverter<String, String> () {
37 @Override
38 public String sourceToDest(String source) {
39 return source;
40 }
41 @Override
42 public String destToSource(String dest) {
43 return dest;
44 }
45 };
46 public static final IConverter<String, Float> STRING_FLOAT_CONVERTER = new IConverter<String, Float> () {
47 @Override
48 public Float sourceToDest(String source) {
49 return (source != null && source.length() > 0) ? Float.parseFloat(source) : null;
50 }
51 @Override
52 public String destToSource(Float dest) {
53 return dest != null ? Float.toString(dest) : null;
54 }
55 };
56 public static final IConverter<String, Double> STRING_DOUBLE_CONVERTER = new IConverter<String, Double> () {
57 @Override
58 public Double sourceToDest(String source) {
59 return (source != null && source.length() > 0) ? Double.parseDouble(source) : null;
60 }
61 @Override
62 public String destToSource(Double dest) {
63 return dest != null ? Double.toString(dest) : null;
64 }
65 };
66 public static final IConverter<String, OMSVGPaint> STRING_SVGPAINT_CONVERTER = new IConverter<String, OMSVGPaint> () {
67 @Override
68 public OMSVGPaint sourceToDest(String source) {
69 return (source != null && source.length() > 0) ? OMSVGParser.parsePaint(source) : null;
70 }
71 @Override
72 public String destToSource(OMSVGPaint dest) {
73 return dest != null ? dest.getCssText() : null;
74 }
75 };
76 public static final IConverter<String, DashArray> STRING_DASHARRAY_CONVERTER = new IConverter<String, DashArray> () {
77 @Override
78 public DashArray sourceToDest(String source) {
79 return (source != null && source.length() > 0) ? DashArray.parse(source) : null;
80 }
81
82 @Override
83 public String destToSource(DashArray dest) {
84 return dest != null ? dest.toString() : null;
85 }
86
87 };
88 public static final IConverter<String, SVGLength> STRING_LENGTH_CONVERTER = new IConverter<String, SVGLength> () {
89 private OMSVGSVGElement svg = OMSVGParser.currentDocument().createSVGSVGElement();
90 @Override
91 public SVGLength sourceToDest(String source) {
92 if (source != null) {
93 OMSVGLength l = svg.createSVGLength();
94 l.setValueAsString(source);
95 return new SVGLength(l);
96 }
97 return null;
98 }
99
100 @Override
101 public String destToSource(SVGLength dest) {
102 return dest != null ? dest.toString() : null;
103 }
104
105 };
106 public D sourceToDest(S source);
107 public S destToSource(D dest);
108 }