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

Side by Side Diff: Source/core/css/CSSPrimitiveValue.h

Issue 64293008: Wrap CSS length conversion arguments in an object (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: don't make it noncopyable ; clang doesn't do the RVO stuffs? Created 7 years 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
« no previous file with comments | « Source/core/css/CSSMatrix.cpp ('k') | Source/core/css/CSSPrimitiveValue.cpp » ('j') | 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 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
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 16 matching lines...) Expand all
27 #include "core/css/CSSValue.h" 27 #include "core/css/CSSValue.h"
28 #include "platform/graphics/Color.h" 28 #include "platform/graphics/Color.h"
29 #include "wtf/Forward.h" 29 #include "wtf/Forward.h"
30 #include "wtf/MathExtras.h" 30 #include "wtf/MathExtras.h"
31 #include "wtf/PassRefPtr.h" 31 #include "wtf/PassRefPtr.h"
32 32
33 namespace WebCore { 33 namespace WebCore {
34 34
35 class CSSBasicShape; 35 class CSSBasicShape;
36 class CSSCalcValue; 36 class CSSCalcValue;
37 class CSSToLengthConversionData;
37 class Counter; 38 class Counter;
38 class ExceptionState; 39 class ExceptionState;
39 class Length; 40 class Length;
40 class Pair; 41 class Pair;
41 class Quad; 42 class Quad;
42 class RGBColor; 43 class RGBColor;
43 class Rect; 44 class Rect;
44 class RenderStyle; 45 class RenderStyle;
45 46
46 // Dimension calculations are imprecise, often resulting in values of e.g. 47 // Dimension calculations are imprecise, often resulting in values of e.g.
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 return getValue<T>() / 1000; 239 return getValue<T>() / 1000;
239 if (timeUnit == Milliseconds && m_primitiveUnitType == CSS_MS) 240 if (timeUnit == Milliseconds && m_primitiveUnitType == CSS_MS)
240 return getValue<T>(); 241 return getValue<T>();
241 if (timeUnit == Milliseconds && m_primitiveUnitType == CSS_S) 242 if (timeUnit == Milliseconds && m_primitiveUnitType == CSS_S)
242 return getValue<T>() * 1000; 243 return getValue<T>() * 1000;
243 ASSERT_NOT_REACHED(); 244 ASSERT_NOT_REACHED();
244 return 0; 245 return 0;
245 } 246 }
246 247
247 /* 248 /*
248 * computes a length in pixels out of the given CSSValue. Need the RenderSty le to get 249 * Computes a length in pixels out of the given CSSValue
249 * the fontinfo in case val is defined in em or ex.
250 * 250 *
251 * The metrics have to be a bit different for screen and printer output. 251 * The metrics have to be a bit different for screen and printer output.
252 * For screen output we assume 1 inch == 72 px, for printer we assume 300 dp i 252 * For screen output we assume 1 inch == 72 px, for printer we assume 300 dp i
253 * 253 *
254 * this is screen/printer dependent, so we probably need a config option for this, 254 * this is screen/printer dependent, so we probably need a config option for this,
255 * and some tool to calibrate. 255 * and some tool to calibrate.
256 */ 256 */
257 template<typename T> T computeLength(const RenderStyle* currStyle, const Ren derStyle* rootStyle, float multiplier = 1.0f, bool computingFontSize = false); 257 template<typename T> T computeLength(const CSSToLengthConversionData&);
258 258
259 // Converts to a Length, mapping various unit types appropriately. 259 // Converts to a Length, mapping various unit types appropriately.
260 template<int> Length convertToLength(const RenderStyle* currStyle, const Ren derStyle* rootStyle, double multiplier = 1.0, bool computingFontSize = false); 260 template<int> Length convertToLength(const CSSToLengthConversionData&);
261 261
262 // use with care!!! 262 // use with care!!!
263 void setPrimitiveType(unsigned short type) { m_primitiveUnitType = type; } 263 void setPrimitiveType(unsigned short type) { m_primitiveUnitType = type; }
264 264
265 double getDoubleValue(unsigned short unitType, ExceptionState&) const; 265 double getDoubleValue(unsigned short unitType, ExceptionState&) const;
266 double getDoubleValue(unsigned short unitType) const; 266 double getDoubleValue(unsigned short unitType) const;
267 double getDoubleValue() const; 267 double getDoubleValue() const;
268 268
269 void setFloatValue(unsigned short unitType, double floatValue, ExceptionStat e&); 269 void setFloatValue(unsigned short unitType, double floatValue, ExceptionStat e&);
270 float getFloatValue(unsigned short unitType, ExceptionState& exceptionState) const { return getValue<float>(unitType, exceptionState); } 270 float getFloatValue(unsigned short unitType, ExceptionState& exceptionState) const { return getValue<float>(unitType, exceptionState); }
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 359
360 void init(const Length&); 360 void init(const Length&);
361 void init(PassRefPtr<Counter>); 361 void init(PassRefPtr<Counter>);
362 void init(PassRefPtr<Rect>); 362 void init(PassRefPtr<Rect>);
363 void init(PassRefPtr<Pair>); 363 void init(PassRefPtr<Pair>);
364 void init(PassRefPtr<Quad>); 364 void init(PassRefPtr<Quad>);
365 void init(PassRefPtr<CSSBasicShape>); 365 void init(PassRefPtr<CSSBasicShape>);
366 void init(PassRefPtr<CSSCalcValue>); 366 void init(PassRefPtr<CSSCalcValue>);
367 bool getDoubleValueInternal(UnitTypes targetUnitType, double* result) const; 367 bool getDoubleValueInternal(UnitTypes targetUnitType, double* result) const;
368 368
369 double computeLengthDouble(const RenderStyle* currentStyle, const RenderStyl e* rootStyle, float multiplier, bool computingFontSize); 369 double computeLengthDouble(const CSSToLengthConversionData&);
370 370
371 union { 371 union {
372 CSSPropertyID propertyID; 372 CSSPropertyID propertyID;
373 CSSValueID valueID; 373 CSSValueID valueID;
374 int parserOperator; 374 int parserOperator;
375 double num; 375 double num;
376 StringImpl* string; 376 StringImpl* string;
377 Counter* counter; 377 Counter* counter;
378 Rect* rect; 378 Rect* rect;
379 Quad* quad; 379 Quad* quad;
380 unsigned rgbcolor; 380 unsigned rgbcolor;
381 Pair* pair; 381 Pair* pair;
382 CSSBasicShape* shape; 382 CSSBasicShape* shape;
383 CSSCalcValue* calc; 383 CSSCalcValue* calc;
384 } m_value; 384 } m_value;
385 }; 385 };
386 386
387 DEFINE_CSS_VALUE_TYPE_CASTS(CSSPrimitiveValue, isPrimitiveValue()); 387 DEFINE_CSS_VALUE_TYPE_CASTS(CSSPrimitiveValue, isPrimitiveValue());
388 388
389 } // namespace WebCore 389 } // namespace WebCore
390 390
391 #endif // CSSPrimitiveValue_h 391 #endif // CSSPrimitiveValue_h
OLDNEW
« no previous file with comments | « Source/core/css/CSSMatrix.cpp ('k') | Source/core/css/CSSPrimitiveValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698