Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Side by Side Diff: Source/core/svg/SVGLength.cpp

Issue 23549032: Add toSVGLengthType() and toSVGLengthMode() fuctions, and use it. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« Source/core/svg/SVGLength.h ('K') | « Source/core/svg/SVGLength.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 24 matching lines...) Expand all
35 namespace WebCore { 35 namespace WebCore {
36 36
37 static inline unsigned int storeUnit(SVGLengthMode mode, SVGLengthType type) 37 static inline unsigned int storeUnit(SVGLengthMode mode, SVGLengthType type)
38 { 38 {
39 return (mode << 4) | type; 39 return (mode << 4) | type;
40 } 40 }
41 41
42 static inline SVGLengthMode extractMode(unsigned int unit) 42 static inline SVGLengthMode extractMode(unsigned int unit)
43 { 43 {
44 unsigned int mode = unit >> 4; 44 unsigned int mode = unit >> 4;
45 return static_cast<SVGLengthMode>(mode); 45 return toSVGLengthMode(mode);
46 } 46 }
47 47
48 static inline SVGLengthType extractType(unsigned int unit) 48 static inline SVGLengthType extractType(unsigned int unit)
49 { 49 {
50 unsigned int mode = unit >> 4; 50 unsigned int mode = unit >> 4;
51 unsigned int type = unit ^ (mode << 4); 51 unsigned int type = unit ^ (mode << 4);
52 return static_cast<SVGLengthType>(type); 52 return toSVGLengthType(type);
53 } 53 }
54 54
55 static inline String lengthTypeToString(SVGLengthType type) 55 static inline String lengthTypeToString(SVGLengthType type)
56 { 56 {
57 switch (type) { 57 switch (type) {
58 case LengthTypeUnknown: 58 case LengthTypeUnknown:
59 case LengthTypeNumber: 59 case LengthTypeNumber:
60 return ""; 60 return "";
61 case LengthTypePercentage: 61 case LengthTypePercentage:
62 return "%"; 62 return "%";
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 return String::number(m_valueInSpecifiedUnits) + lengthTypeToString(extractT ype(m_unit)); 259 return String::number(m_valueInSpecifiedUnits) + lengthTypeToString(extractT ype(m_unit));
260 } 260 }
261 261
262 void SVGLength::newValueSpecifiedUnits(unsigned short type, float value, Excepti onState& es) 262 void SVGLength::newValueSpecifiedUnits(unsigned short type, float value, Excepti onState& es)
263 { 263 {
264 if (type == LengthTypeUnknown || type > LengthTypePC) { 264 if (type == LengthTypeUnknown || type > LengthTypePC) {
265 es.throwDOMException(NotSupportedError); 265 es.throwDOMException(NotSupportedError);
266 return; 266 return;
267 } 267 }
268 268
269 m_unit = storeUnit(extractMode(m_unit), static_cast<SVGLengthType>(type)); 269 m_unit = storeUnit(extractMode(m_unit), toSVGLengthType(type));
270 m_valueInSpecifiedUnits = value; 270 m_valueInSpecifiedUnits = value;
271 } 271 }
272 272
273 void SVGLength::convertToSpecifiedUnits(unsigned short type, const SVGLengthCont ext& context, ExceptionState& es) 273 void SVGLength::convertToSpecifiedUnits(unsigned short type, const SVGLengthCont ext& context, ExceptionState& es)
274 { 274 {
275 if (type == LengthTypeUnknown || type > LengthTypePC) { 275 if (type == LengthTypeUnknown || type > LengthTypePC) {
276 es.throwDOMException(NotSupportedError); 276 es.throwDOMException(NotSupportedError);
277 return; 277 return;
278 } 278 }
279 279
280 float valueInUserUnits = value(context, es); 280 float valueInUserUnits = value(context, es);
281 if (es.hadException()) 281 if (es.hadException())
282 return; 282 return;
283 283
284 unsigned int originalUnitAndType = m_unit; 284 unsigned int originalUnitAndType = m_unit;
285 m_unit = storeUnit(extractMode(m_unit), static_cast<SVGLengthType>(type)); 285 m_unit = storeUnit(extractMode(m_unit), toSVGLengthType(type));
286 setValue(valueInUserUnits, context, es); 286 setValue(valueInUserUnits, context, es);
287 if (!es.hadException()) 287 if (!es.hadException())
288 return; 288 return;
289 289
290 // Eventually restore old unit and type 290 // Eventually restore old unit and type
291 m_unit = originalUnitAndType; 291 m_unit = originalUnitAndType;
292 } 292 }
293 293
294 SVGLength SVGLength::fromCSSPrimitiveValue(CSSPrimitiveValue* value) 294 SVGLength SVGLength::fromCSSPrimitiveValue(CSSPrimitiveValue* value)
295 { 295 {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 s_lengthModeMap.set(SVGNames::startOffsetAttr, LengthModeWidth); 415 s_lengthModeMap.set(SVGNames::startOffsetAttr, LengthModeWidth);
416 } 416 }
417 417
418 if (s_lengthModeMap.contains(attrName)) 418 if (s_lengthModeMap.contains(attrName))
419 return s_lengthModeMap.get(attrName); 419 return s_lengthModeMap.get(attrName);
420 420
421 return LengthModeOther; 421 return LengthModeOther;
422 } 422 }
423 423
424 } 424 }
OLDNEW
« Source/core/svg/SVGLength.h ('K') | « Source/core/svg/SVGLength.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698