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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/css/cssom/CalcDictionaryHelper.h
diff --git a/third_party/WebKit/Source/core/css/cssom/CalcDictionaryHelper.h b/third_party/WebKit/Source/core/css/cssom/CalcDictionaryHelper.h
new file mode 100644
index 0000000000000000000000000000000000000000..c673e738928d8895949f559406e43dace12f3fcc
--- /dev/null
+++ b/third_party/WebKit/Source/core/css/cssom/CalcDictionaryHelper.h
@@ -0,0 +1,128 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/css/CSSPrimitiveValue.h"
+#include "core/css/cssom/CalcDictionary.h"
+
+namespace blink {
+
+class CalcDictionaryHelper {
+ STATIC_ONLY(CalcDictionaryHelper);
+public:
+ static void setUsingCSSPrimitiveValueUnit(CalcDictionary* calcDictionary, CSSPrimitiveValue::UnitType unit, double value)
+ {
+#define caseMacro(primitiveName, camelName) \
+ case CSSPrimitiveValue::UnitType::primitiveName: \
+ calcDictionary->set##camelName(value); \
+ break;
+
+ switch (unit) {
+ caseMacro(Pixels, Px)
+ caseMacro(Percentage, Percent)
+ caseMacro(Ems, Em)
+ caseMacro(Exs, Ex)
+ caseMacro(Chs, Ch)
+ caseMacro(Rems, Rem)
+ caseMacro(ViewportWidth, Vw)
+ caseMacro(ViewportHeight, Vh)
+ caseMacro(ViewportMin, Vmin)
+ caseMacro(ViewportMax, Vmax)
+ caseMacro(Centimeters, Cm)
+ caseMacro(Millimeters, Mm)
+ caseMacro(Inches, In)
+ caseMacro(Picas, Pc)
+ caseMacro(Points, Pt)
+ default:
+ break;
+ }
+
+#undef caseMacro
+ }
+
+ static void multiply(CalcDictionary* calcDictionary, double value)
+ {
+#define multiplyMacro(name, camelName) \
+ if (calcDictionary->has##camelName()) { \
+ calcDictionary->set##camelName(calcDictionary->name() * value); \
+ }
+
+ multiplyMacro(px, Px)
+ multiplyMacro(percent, Percent)
+ multiplyMacro(em, Em)
+ multiplyMacro(ex, Ex)
+ multiplyMacro(ch, Ch)
+ multiplyMacro(rem, Rem)
+ multiplyMacro(vw, Vw)
+ multiplyMacro(vh, Vh)
+ multiplyMacro(vmin, Vmin)
+ multiplyMacro(vmax, Vmax)
+ multiplyMacro(cm, Cm)
+ multiplyMacro(mm, Mm)
+ multiplyMacro(in, In)
+ multiplyMacro(pc, Pc)
+ multiplyMacro(pt, Pt)
+
+#undef multiplyMacro
+ }
+
+ static void add(CalcDictionary* leftAndResult, const CalcDictionary* right)
+ {
+#define addMacro(name, camelName) \
+ if (right->has##camelName()) { \
+ if (leftAndResult->has##camelName()) \
+ leftAndResult->set##camelName(leftAndResult->name() + right->name()); \
+ else \
+ leftAndResult->set##camelName(right->name()); \
+ }
+
+ addMacro(px, Px)
+ addMacro(percent, Percent)
+ addMacro(em, Em)
+ addMacro(ex, Ex)
+ addMacro(ch, Ch)
+ addMacro(rem, Rem)
+ addMacro(vw, Vw)
+ addMacro(vh, Vh)
+ addMacro(vmin, Vmin)
+ addMacro(vmax, Vmax)
+ addMacro(cm, Cm)
+ addMacro(mm, Mm)
+ addMacro(in, In)
+ addMacro(pc, Pc)
+ addMacro(pt, Pt)
+
+#undef addMacro
+ }
+
+ static void subtract(CalcDictionary* leftAndResult, const CalcDictionary* right)
+ {
+#define subtractMacro(name, camelName) \
+ if (right->has##camelName()) { \
+ if (leftAndResult->has##camelName()) \
+ leftAndResult->set##camelName(leftAndResult->name() - right->name()); \
+ else \
+ leftAndResult->set##camelName(-right->name()); \
+ }
+
+ subtractMacro(px, Px)
+ subtractMacro(percent, Percent)
+ subtractMacro(em, Em)
+ subtractMacro(ex, Ex)
+ subtractMacro(ch, Ch)
+ subtractMacro(rem, Rem)
+ subtractMacro(vw, Vw)
+ subtractMacro(vh, Vh)
+ subtractMacro(vmin, Vmin)
+ subtractMacro(vmax, Vmax)
+ subtractMacro(cm, Cm)
+ subtractMacro(mm, Mm)
+ subtractMacro(in, In)
+ subtractMacro(pc, Pc)
+ subtractMacro(pt, Pt)
+
+#undef subtractMacro
+ }
+};
+
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698