Index: tools/dom/src/Dimension.dart |
diff --git a/tools/dom/src/Dimension.dart b/tools/dom/src/Dimension.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..96014c3c9cfc04502a6e44730f095e1b84af5f85 |
--- /dev/null |
+++ b/tools/dom/src/Dimension.dart |
@@ -0,0 +1,83 @@ |
+part of html; |
+ |
+/** |
+ * Class representing a |
+ * [length measurement](https://developer.mozilla.org/en-US/docs/Web/CSS/length) |
+ * in CSS. |
+ */ |
+@Experimental() |
+class Dimension { |
+ num _value; |
+ String _unit; |
+ |
+ /** Set this CSS Dimension to a percentage `value`. */ |
+ Dimension.percent(this._value) : _unit = '%'; |
+ |
+ /** Set this CSS Dimension to a pixel `value`. */ |
+ Dimension.px(this._value) : _unit = 'px'; |
+ |
+ /** Set this CSS Dimension to a pica `value`. */ |
+ Dimension.pc(this._value) : _unit = 'pc'; |
+ |
+ /** Set this CSS Dimension to a point `value`. */ |
+ Dimension.pt(this._value) : _unit = 'pt'; |
+ |
+ /** Set this CSS Dimension to an inch `value`. */ |
+ Dimension.inch(this._value) : _unit = 'in'; |
+ |
+ /** Set this CSS Dimension to a centimeter `value`. */ |
+ Dimension.cm(this._value) : _unit = 'cm'; |
+ |
+ /** Set this CSS Dimension to a millimeter `value`. */ |
+ Dimension.mm(this._value) : _unit = 'mm'; |
+ |
+ /** |
+ * Set this CSS Dimension to the specified number of ems. |
+ * |
+ * 1em is equal to the current font size. (So 2ems is equal to double the font |
+ * size). This is useful for producing website layouts that scale nicely with |
+ * the user's desired font size. |
+ */ |
+ Dimension.em(this._value) : _unit = 'em'; |
+ |
+ /** |
+ * Set this CSS Dimension to the specified number of x-heights. |
+ * |
+ * One ex is equal to the the x-height of a font's baseline to its mean line, |
+ * generally the height of the letter "x" in the font, which is usually about |
+ * half the font-size. |
+ */ |
+ Dimension.ex(this._value) : _unit = 'ex'; |
+ |
+ /** |
+ * Construct a Dimension object from the valid, simple CSS string `cssValue` |
+ * that represents a distance measurement. |
+ * |
+ * This constructor is intended as a convenience method for working with |
+ * simplistic CSS length measurements. Non-numeric values such as `auto` or |
+ * `inherit` or invalid CSS will cause this constructor to throw a |
+ * FormatError. |
+ */ |
+ Dimension.css(String cssValue) { |
+ if (cssValue == '') cssValue = '0px'; |
+ if (cssValue.endsWith('%')) { |
+ _unit = '%'; |
+ } else { |
+ _unit = cssValue.substring(cssValue.length - 2); |
+ } |
+ if (cssValue.contains('.')) { |
+ _value = double.parse(cssValue.substring(0, |
+ cssValue.length - _unit.length)); |
+ } else { |
+ _value = int.parse(cssValue.substring(0, cssValue.length - _unit.length)); |
+ } |
+ } |
+ |
+ /** Print out the CSS String representation of this value. */ |
+ String toString() { |
+ return '${_value}${_unit}'; |
+ } |
+ |
+ /** Return a unitless, numerical value of this CSS value. */ |
+ num get value => this._value; |
+} |