1
19 package org.apache.batik.css.engine.value.css2;
20
21 import org.apache.batik.css.engine.CSSEngine;
22 import org.apache.batik.css.engine.CSSStylableElement;
23 import org.apache.batik.css.engine.StyleMap;
24 import org.apache.batik.css.engine.value.IdentifierManager;
25 import org.apache.batik.css.engine.value.StringMap;
26 import org.apache.batik.css.engine.value.Value;
27 import org.apache.batik.css.engine.value.ValueConstants;
28 import org.apache.batik.css.engine.value.ValueManager;
29 import org.apache.batik.util.CSSConstants;
30 import org.apache.batik.util.SVGTypes;
31
32
38 public class FontStretchManager extends IdentifierManager {
39
40
43 protected static final StringMap values = new StringMap();
44 static {
45 values.put(CSSConstants.CSS_ALL_VALUE,
46 ValueConstants.ALL_VALUE);
47 values.put(CSSConstants.CSS_CONDENSED_VALUE,
48 ValueConstants.CONDENSED_VALUE);
49 values.put(CSSConstants.CSS_EXPANDED_VALUE,
50 ValueConstants.EXPANDED_VALUE);
51 values.put(CSSConstants.CSS_EXTRA_CONDENSED_VALUE,
52 ValueConstants.EXTRA_CONDENSED_VALUE);
53 values.put(CSSConstants.CSS_EXTRA_EXPANDED_VALUE,
54 ValueConstants.EXTRA_EXPANDED_VALUE);
55 values.put(CSSConstants.CSS_NARROWER_VALUE,
56 ValueConstants.NARROWER_VALUE);
57 values.put(CSSConstants.CSS_NORMAL_VALUE,
58 ValueConstants.NORMAL_VALUE);
59 values.put(CSSConstants.CSS_SEMI_CONDENSED_VALUE,
60 ValueConstants.SEMI_CONDENSED_VALUE);
61 values.put(CSSConstants.CSS_SEMI_EXPANDED_VALUE,
62 ValueConstants.SEMI_EXPANDED_VALUE);
63 values.put(CSSConstants.CSS_ULTRA_CONDENSED_VALUE,
64 ValueConstants.ULTRA_CONDENSED_VALUE);
65 values.put(CSSConstants.CSS_ULTRA_EXPANDED_VALUE,
66 ValueConstants.ULTRA_EXPANDED_VALUE);
67 values.put(CSSConstants.CSS_WIDER_VALUE,
68 ValueConstants.WIDER_VALUE);
69 }
70
71
75 public boolean isInheritedProperty() {
76 return true;
77 }
78
79
82 public boolean isAnimatableProperty() {
83 return true;
84 }
85
86
89 public boolean isAdditiveProperty() {
90 return false;
91 }
92
93
96 public int getPropertyType() {
97 return SVGTypes.TYPE_IDENT;
98 }
99
100
104 public String getPropertyName() {
105 return CSSConstants.CSS_FONT_STRETCH_PROPERTY;
106 }
107
108
112 public Value getDefaultValue() {
113 return ValueConstants.NORMAL_VALUE;
114 }
115
116
120 public Value computeValue(CSSStylableElement elt,
121 String pseudo,
122 CSSEngine engine,
123 int idx,
124 StyleMap sm,
125 Value value) {
126 if (value == ValueConstants.NARROWER_VALUE) {
127 sm.putParentRelative(idx, true);
128
129 CSSStylableElement p = CSSEngine.getParentCSSStylableElement(elt);
130 if (p == null) {
131 return ValueConstants.SEMI_CONDENSED_VALUE;
132 }
133 Value v = engine.getComputedStyle(p, pseudo, idx);
134 if (v == ValueConstants.NORMAL_VALUE) {
135 return ValueConstants.SEMI_CONDENSED_VALUE;
136 }
137 if (v == ValueConstants.CONDENSED_VALUE) {
138 return ValueConstants.EXTRA_CONDENSED_VALUE;
139 }
140 if (v == ValueConstants.EXPANDED_VALUE) {
141 return ValueConstants.SEMI_EXPANDED_VALUE;
142 }
143 if (v == ValueConstants.SEMI_EXPANDED_VALUE) {
144 return ValueConstants.NORMAL_VALUE;
145 }
146 if (v == ValueConstants.SEMI_CONDENSED_VALUE) {
147 return ValueConstants.CONDENSED_VALUE;
148 }
149 if (v == ValueConstants.EXTRA_CONDENSED_VALUE) {
150 return ValueConstants.ULTRA_CONDENSED_VALUE;
151 }
152 if (v == ValueConstants.EXTRA_EXPANDED_VALUE) {
153 return ValueConstants.EXPANDED_VALUE;
154 }
155 if (v == ValueConstants.ULTRA_CONDENSED_VALUE) {
156 return ValueConstants.ULTRA_CONDENSED_VALUE;
157 }
158 return ValueConstants.EXTRA_EXPANDED_VALUE;
159 } else if (value == ValueConstants.WIDER_VALUE) {
160 sm.putParentRelative(idx, true);
161
162 CSSStylableElement p = CSSEngine.getParentCSSStylableElement(elt);
163 if (p == null) {
164 return ValueConstants.SEMI_CONDENSED_VALUE;
165 }
166 Value v = engine.getComputedStyle(p, pseudo, idx);
167 if (v == ValueConstants.NORMAL_VALUE) {
168 return ValueConstants.SEMI_EXPANDED_VALUE;
169 }
170 if (v == ValueConstants.CONDENSED_VALUE) {
171 return ValueConstants.SEMI_CONDENSED_VALUE;
172 }
173 if (v == ValueConstants.EXPANDED_VALUE) {
174 return ValueConstants.EXTRA_EXPANDED_VALUE;
175 }
176 if (v == ValueConstants.SEMI_EXPANDED_VALUE) {
177 return ValueConstants.EXPANDED_VALUE;
178 }
179 if (v == ValueConstants.SEMI_CONDENSED_VALUE) {
180 return ValueConstants.NORMAL_VALUE;
181 }
182 if (v == ValueConstants.EXTRA_CONDENSED_VALUE) {
183 return ValueConstants.CONDENSED_VALUE;
184 }
185 if (v == ValueConstants.EXTRA_EXPANDED_VALUE) {
186 return ValueConstants.ULTRA_EXPANDED_VALUE;
187 }
188 if (v == ValueConstants.ULTRA_CONDENSED_VALUE) {
189 return ValueConstants.EXTRA_CONDENSED_VALUE;
190 }
191 return ValueConstants.ULTRA_EXPANDED_VALUE;
192 }
193 return value;
194 }
195
196
199 public StringMap getIdentifiers() {
200 return values;
201 }
202 }
203