OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 2 * Copyright (C) 2004, 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> | 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> |
4 * Copyright (C) 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2007 Apple Inc. All rights reserved. |
5 * Copyright (C) Research In Motion Limited 2011. All rights reserved. | 5 * Copyright (C) Research In Motion Limited 2011. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
176 float SVGLengthContext::valueForLength(const Length& length, float zoom, float d imension) | 176 float SVGLengthContext::valueForLength(const Length& length, float zoom, float d imension) |
177 { | 177 { |
178 ASSERT(zoom != 0); | 178 ASSERT(zoom != 0); |
179 // isIntrinsic can occur for 'width' and 'height', but has no | 179 // isIntrinsic can occur for 'width' and 'height', but has no |
180 // real meaning for svg. | 180 // real meaning for svg. |
181 if (length.isIntrinsic()) | 181 if (length.isIntrinsic()) |
182 return 0; | 182 return 0; |
183 return floatValueForLength(length, dimension * zoom) / zoom; | 183 return floatValueForLength(length, dimension * zoom) / zoom; |
184 } | 184 } |
185 | 185 |
186 float SVGLengthContext::convertValueToUserUnits(float value, SVGLengthMode mode, SVGLengthType fromUnit) const | 186 float SVGLengthContext::convertValueToUserUnits(float value, SVGLengthMode mode, CSSPrimitiveValue::UnitType fromUnit) const |
187 { | 187 { |
188 float userUnits = value; | 188 float userUnits = value; |
189 switch (fromUnit) { | 189 switch (fromUnit) { |
190 case LengthTypeUnknown: | 190 case CSSPrimitiveValue::UnitType::Unknown: |
Timothy Loh
2015/11/04 00:33:44
this might be an ASSERT_NOT_REACHED case (i.e. let
Stephen Chennney
2015/11/04 18:04:47
Done.
| |
191 return 0; | 191 return 0; |
192 case LengthTypePX: | 192 case CSSPrimitiveValue::UnitType::Pixels: |
193 case LengthTypeNumber: | 193 case CSSPrimitiveValue::UnitType::Number: |
194 case CSSPrimitiveValue::UnitType::UserUnits: | |
194 userUnits = value; | 195 userUnits = value; |
195 break; | 196 break; |
196 case LengthTypePercentage: { | 197 case CSSPrimitiveValue::UnitType::Percentage: { |
197 FloatSize viewportSize; | 198 FloatSize viewportSize; |
198 if (!determineViewport(viewportSize)) | 199 if (!determineViewport(viewportSize)) |
199 return 0; | 200 return 0; |
200 userUnits = value * dimensionForLengthMode(mode, viewportSize) / 100; | 201 userUnits = value * dimensionForLengthMode(mode, viewportSize) / 100; |
201 break; | 202 break; |
202 } | 203 } |
203 case LengthTypeEMS: | 204 case CSSPrimitiveValue::UnitType::Ems: |
204 userUnits = convertValueFromEMSToUserUnits(computedStyleForLengthResolvi ng(m_context), value); | 205 userUnits = convertValueFromEMSToUserUnits(computedStyleForLengthResolvi ng(m_context), value); |
205 break; | 206 break; |
206 case LengthTypeEXS: | 207 case CSSPrimitiveValue::UnitType::Exs: |
207 userUnits = convertValueFromEXSToUserUnits(value); | 208 userUnits = convertValueFromEXSToUserUnits(value); |
208 break; | 209 break; |
209 case LengthTypeCM: | 210 case CSSPrimitiveValue::UnitType::Centimeters: |
210 userUnits = value * cssPixelsPerCentimeter; | 211 userUnits = value * cssPixelsPerCentimeter; |
211 break; | 212 break; |
212 case LengthTypeMM: | 213 case CSSPrimitiveValue::UnitType::Millimeters: |
213 userUnits = value * cssPixelsPerMillimeter; | 214 userUnits = value * cssPixelsPerMillimeter; |
214 break; | 215 break; |
215 case LengthTypeIN: | 216 case CSSPrimitiveValue::UnitType::Inches: |
216 userUnits = value * cssPixelsPerInch; | 217 userUnits = value * cssPixelsPerInch; |
217 break; | 218 break; |
218 case LengthTypePT: | 219 case CSSPrimitiveValue::UnitType::Points: |
219 userUnits = value * cssPixelsPerPoint; | 220 userUnits = value * cssPixelsPerPoint; |
220 break; | 221 break; |
221 case LengthTypePC: | 222 case CSSPrimitiveValue::UnitType::Picas: |
222 userUnits = value * cssPixelsPerPica; | 223 userUnits = value * cssPixelsPerPica; |
223 break; | 224 break; |
224 case LengthTypeREMS: | 225 case CSSPrimitiveValue::UnitType::Rems: |
225 userUnits = convertValueFromEMSToUserUnits(rootElementStyle(m_context), value); | 226 userUnits = convertValueFromEMSToUserUnits(rootElementStyle(m_context), value); |
226 break; | 227 break; |
227 case LengthTypeCHS: | 228 case CSSPrimitiveValue::UnitType::Chs: |
228 userUnits = convertValueFromCHSToUserUnits(value); | 229 userUnits = convertValueFromCHSToUserUnits(value); |
229 break; | 230 break; |
230 default: | 231 default: |
231 ASSERT_NOT_REACHED(); | 232 ASSERT_NOT_REACHED(); |
232 break; | 233 break; |
233 } | 234 } |
234 | 235 |
235 // Since we mix css <length> values with svg's length values we need to | 236 // Since we mix css <length> values with svg's length values we need to |
236 // clamp values to the narrowest range, otherwise it can result in | 237 // clamp values to the narrowest range, otherwise it can result in |
237 // rendering issues. | 238 // rendering issues. |
238 return CSSPrimitiveValue::clampToCSSLengthRange(userUnits); | 239 return CSSPrimitiveValue::clampToCSSLengthRange(userUnits); |
239 } | 240 } |
240 | 241 |
241 float SVGLengthContext::convertValueFromUserUnits(float value, SVGLengthMode mod e, SVGLengthType toUnit) const | 242 float SVGLengthContext::convertValueFromUserUnits(float value, SVGLengthMode mod e, CSSPrimitiveValue::UnitType toUnit) const |
242 { | 243 { |
243 switch (toUnit) { | 244 switch (toUnit) { |
244 case LengthTypeUnknown: | 245 case CSSPrimitiveValue::UnitType::Unknown: |
245 return 0; | 246 return 0; |
Timothy Loh
2015/11/04 00:33:44
this might be an ASSERT_NOT_REACHED case (i.e. let
Stephen Chennney
2015/11/04 18:04:47
Done.
| |
246 case LengthTypeNumber: | 247 case CSSPrimitiveValue::UnitType::Pixels: |
248 case CSSPrimitiveValue::UnitType::Number: | |
249 case CSSPrimitiveValue::UnitType::UserUnits: | |
247 return value; | 250 return value; |
248 case LengthTypePercentage: { | 251 case CSSPrimitiveValue::UnitType::Percentage: { |
249 FloatSize viewportSize; | 252 FloatSize viewportSize; |
250 if (!determineViewport(viewportSize)) | 253 if (!determineViewport(viewportSize)) |
251 return 0; | 254 return 0; |
252 float dimension = dimensionForLengthMode(mode, viewportSize); | 255 float dimension = dimensionForLengthMode(mode, viewportSize); |
253 if (!dimension) | 256 if (!dimension) |
254 return 0; | 257 return 0; |
255 // LengthTypePercentage is represented with 100% = 100.0. | 258 // LengthTypePercentage is represented with 100% = 100.0. |
256 // Good for accuracy but could eventually be changed. | 259 // Good for accuracy but could eventually be changed. |
257 return value * 100 / dimension; | 260 return value * 100 / dimension; |
258 } | 261 } |
259 case LengthTypeEMS: | 262 case CSSPrimitiveValue::UnitType::Ems: |
260 return convertValueFromUserUnitsToEMS(computedStyleForLengthResolving(m_ context), value); | 263 return convertValueFromUserUnitsToEMS(computedStyleForLengthResolving(m_ context), value); |
261 case LengthTypeEXS: | 264 case CSSPrimitiveValue::UnitType::Exs: |
262 return convertValueFromUserUnitsToEXS(value); | 265 return convertValueFromUserUnitsToEXS(value); |
263 case LengthTypeREMS: | 266 case CSSPrimitiveValue::UnitType::Rems: |
264 return convertValueFromUserUnitsToEMS(rootElementStyle(m_context), value ); | 267 return convertValueFromUserUnitsToEMS(rootElementStyle(m_context), value ); |
265 case LengthTypeCHS: | 268 case CSSPrimitiveValue::UnitType::Chs: |
266 return convertValueFromUserUnitsToCHS(value); | 269 return convertValueFromUserUnitsToCHS(value); |
267 case LengthTypePX: | 270 case CSSPrimitiveValue::UnitType::Centimeters: |
268 return value; | |
269 case LengthTypeCM: | |
270 return value / cssPixelsPerCentimeter; | 271 return value / cssPixelsPerCentimeter; |
271 case LengthTypeMM: | 272 case CSSPrimitiveValue::UnitType::Millimeters: |
272 return value / cssPixelsPerMillimeter; | 273 return value / cssPixelsPerMillimeter; |
273 case LengthTypeIN: | 274 case CSSPrimitiveValue::UnitType::Inches: |
274 return value / cssPixelsPerInch; | 275 return value / cssPixelsPerInch; |
275 case LengthTypePT: | 276 case CSSPrimitiveValue::UnitType::Points: |
276 return value / cssPixelsPerPoint; | 277 return value / cssPixelsPerPoint; |
277 case LengthTypePC: | 278 case CSSPrimitiveValue::UnitType::Picas: |
278 return value / cssPixelsPerPica; | 279 return value / cssPixelsPerPica; |
280 default: | |
281 break; | |
279 } | 282 } |
280 | 283 |
281 ASSERT_NOT_REACHED(); | 284 ASSERT_NOT_REACHED(); |
282 return 0; | 285 return 0; |
283 } | 286 } |
284 | 287 |
285 float SVGLengthContext::convertValueFromUserUnitsToCHS(float value) const | 288 float SVGLengthContext::convertValueFromUserUnitsToCHS(float value) const |
286 { | 289 { |
287 const ComputedStyle* style = computedStyleForLengthResolving(m_context); | 290 const ComputedStyle* style = computedStyleForLengthResolving(m_context); |
288 if (!style) | 291 if (!style) |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
348 | 351 |
349 const SVGSVGElement& svg = toSVGSVGElement(*viewportElement); | 352 const SVGSVGElement& svg = toSVGSVGElement(*viewportElement); |
350 viewportSize = svg.currentViewBoxRect().size(); | 353 viewportSize = svg.currentViewBoxRect().size(); |
351 if (viewportSize.isEmpty()) | 354 if (viewportSize.isEmpty()) |
352 viewportSize = svg.currentViewportSize(); | 355 viewportSize = svg.currentViewportSize(); |
353 | 356 |
354 return true; | 357 return true; |
355 } | 358 } |
356 | 359 |
357 } | 360 } |
OLD | NEW |