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

Side by Side Diff: third_party/WebKit/Source/core/css/cssom/CalcDictionaryHelper.h

Issue 2047923002: [WIP] Add support for CSSValue-> CSSLengthValue and CSSTranslation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@supported-types
Patch Set: Created 4 years, 6 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
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "core/css/CSSPrimitiveValue.h"
6 #include "core/css/cssom/CalcDictionary.h"
7
8 namespace blink {
9
10 class CalcDictionaryHelper {
11 STATIC_ONLY(CalcDictionaryHelper);
12 public:
13 static void setUsingCSSPrimitiveValueUnit(CalcDictionary* calcDictionary, CS SPrimitiveValue::UnitType unit, double value)
14 {
15 #define caseMacro(primitiveName, camelName) \
16 case CSSPrimitiveValue::UnitType::primitiveName: \
17 calcDictionary->set##camelName(value); \
18 break;
19
20 switch (unit) {
21 caseMacro(Pixels, Px)
22 caseMacro(Percentage, Percent)
23 caseMacro(Ems, Em)
24 caseMacro(Exs, Ex)
25 caseMacro(Chs, Ch)
26 caseMacro(Rems, Rem)
27 caseMacro(ViewportWidth, Vw)
28 caseMacro(ViewportHeight, Vh)
29 caseMacro(ViewportMin, Vmin)
30 caseMacro(ViewportMax, Vmax)
31 caseMacro(Centimeters, Cm)
32 caseMacro(Millimeters, Mm)
33 caseMacro(Inches, In)
34 caseMacro(Picas, Pc)
35 caseMacro(Points, Pt)
36 default:
37 break;
38 }
39
40 #undef caseMacro
41 }
42
43 static void multiply(CalcDictionary* calcDictionary, double value)
44 {
45 #define multiplyMacro(name, camelName) \
46 if (calcDictionary->has##camelName()) { \
47 calcDictionary->set##camelName(calcDictionary->name() * value); \
48 }
49
50 multiplyMacro(px, Px)
51 multiplyMacro(percent, Percent)
52 multiplyMacro(em, Em)
53 multiplyMacro(ex, Ex)
54 multiplyMacro(ch, Ch)
55 multiplyMacro(rem, Rem)
56 multiplyMacro(vw, Vw)
57 multiplyMacro(vh, Vh)
58 multiplyMacro(vmin, Vmin)
59 multiplyMacro(vmax, Vmax)
60 multiplyMacro(cm, Cm)
61 multiplyMacro(mm, Mm)
62 multiplyMacro(in, In)
63 multiplyMacro(pc, Pc)
64 multiplyMacro(pt, Pt)
65
66 #undef multiplyMacro
67 }
68
69 static void add(CalcDictionary* leftAndResult, const CalcDictionary* right)
70 {
71 #define addMacro(name, camelName) \
72 if (right->has##camelName()) { \
73 if (leftAndResult->has##camelName()) \
74 leftAndResult->set##camelName(leftAndResult->name() + right->nam e()); \
75 else \
76 leftAndResult->set##camelName(right->name()); \
77 }
78
79 addMacro(px, Px)
80 addMacro(percent, Percent)
81 addMacro(em, Em)
82 addMacro(ex, Ex)
83 addMacro(ch, Ch)
84 addMacro(rem, Rem)
85 addMacro(vw, Vw)
86 addMacro(vh, Vh)
87 addMacro(vmin, Vmin)
88 addMacro(vmax, Vmax)
89 addMacro(cm, Cm)
90 addMacro(mm, Mm)
91 addMacro(in, In)
92 addMacro(pc, Pc)
93 addMacro(pt, Pt)
94
95 #undef addMacro
96 }
97
98 static void subtract(CalcDictionary* leftAndResult, const CalcDictionary* ri ght)
99 {
100 #define subtractMacro(name, camelName) \
101 if (right->has##camelName()) { \
102 if (leftAndResult->has##camelName()) \
103 leftAndResult->set##camelName(leftAndResult->name() - right->nam e()); \
104 else \
105 leftAndResult->set##camelName(-right->name()); \
106 }
107
108 subtractMacro(px, Px)
109 subtractMacro(percent, Percent)
110 subtractMacro(em, Em)
111 subtractMacro(ex, Ex)
112 subtractMacro(ch, Ch)
113 subtractMacro(rem, Rem)
114 subtractMacro(vw, Vw)
115 subtractMacro(vh, Vh)
116 subtractMacro(vmin, Vmin)
117 subtractMacro(vmax, Vmax)
118 subtractMacro(cm, Cm)
119 subtractMacro(mm, Mm)
120 subtractMacro(in, In)
121 subtractMacro(pc, Pc)
122 subtractMacro(pt, Pt)
123
124 #undef subtractMacro
125 }
126 };
127
128 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698