summaryrefslogtreecommitdiffstats
path: root/WebCore/css/CSSPrimitiveValue.cpp
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-10-22 13:02:20 +0100
committerBen Murdoch <benm@google.com>2010-10-26 15:21:41 +0100
commita94275402997c11dd2e778633dacf4b7e630a35d (patch)
treee66f56c67e3b01f22c9c23cd932271ee9ac558ed /WebCore/css/CSSPrimitiveValue.cpp
parent09e26c78506587b3f5d930d7bc72a23287ffbec0 (diff)
downloadexternal_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.zip
external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.tar.gz
external_webkit-a94275402997c11dd2e778633dacf4b7e630a35d.tar.bz2
Merge WebKit at r70209: Initial merge by Git
Change-Id: Id23a68efa36e9d1126bcce0b137872db00892c8e
Diffstat (limited to 'WebCore/css/CSSPrimitiveValue.cpp')
-rw-r--r--WebCore/css/CSSPrimitiveValue.cpp51
1 files changed, 32 insertions, 19 deletions
diff --git a/WebCore/css/CSSPrimitiveValue.cpp b/WebCore/css/CSSPrimitiveValue.cpp
index 5c83e7c..065c244 100644
--- a/WebCore/css/CSSPrimitiveValue.cpp
+++ b/WebCore/css/CSSPrimitiveValue.cpp
@@ -35,7 +35,9 @@
#include "Rect.h"
#include "RenderStyle.h"
#include <wtf/ASCIICType.h>
+#include <wtf/DecimalNumber.h>
#include <wtf/StdLibExtras.h>
+#include <wtf/text/StringBuffer.h>
#if ENABLE(DASHBOARD_SUPPORT)
#include "DashboardRegion.h"
@@ -613,6 +615,17 @@ int CSSPrimitiveValue::getIdent()
return m_value.ident;
}
+static String formatNumber(double number)
+{
+ DecimalNumber decimal(number);
+
+ StringBuffer buffer(decimal.bufferLengthForStringDecimal());
+ unsigned length = decimal.toStringDecimal(buffer.characters(), buffer.length());
+ ASSERT_UNUSED(length, length == buffer.length());
+
+ return String::adopt(buffer);
+}
+
String CSSPrimitiveValue::cssText() const
{
// FIXME: return the original value instead of a generated one (e.g. color
@@ -630,61 +643,61 @@ String CSSPrimitiveValue::cssText() const
break;
case CSS_NUMBER:
case CSS_PARSER_INTEGER:
- text = String::number(m_value.num);
+ text = formatNumber(m_value.num);
break;
case CSS_PERCENTAGE:
- text = String::format("%.6lg%%", m_value.num);
+ text = formatNumber(m_value.num) + "%";
break;
case CSS_EMS:
- text = String::format("%.6lgem", m_value.num);
+ text = formatNumber(m_value.num) + "em";
break;
case CSS_EXS:
- text = String::format("%.6lgex", m_value.num);
+ text = formatNumber(m_value.num) + "ex";
break;
case CSS_REMS:
- text = String::format("%.6lgrem", m_value.num);
+ text = formatNumber(m_value.num) + "rem";
break;
case CSS_PX:
- text = String::format("%.6lgpx", m_value.num);
+ text = formatNumber(m_value.num) + "px";
break;
case CSS_CM:
- text = String::format("%.6lgcm", m_value.num);
+ text = formatNumber(m_value.num) + "cm";
break;
case CSS_MM:
- text = String::format("%.6lgmm", m_value.num);
+ text = formatNumber(m_value.num) + "mm";
break;
case CSS_IN:
- text = String::format("%.6lgin", m_value.num);
+ text = formatNumber(m_value.num) + "in";
break;
case CSS_PT:
- text = String::format("%.6lgpt", m_value.num);
+ text = formatNumber(m_value.num) + "pt";
break;
case CSS_PC:
- text = String::format("%.6lgpc", m_value.num);
+ text = formatNumber(m_value.num) + "pc";
break;
case CSS_DEG:
- text = String::format("%.6lgdeg", m_value.num);
+ text = formatNumber(m_value.num) + "deg";
break;
case CSS_RAD:
- text = String::format("%.6lgrad", m_value.num);
+ text = formatNumber(m_value.num) + "rad";
break;
case CSS_GRAD:
- text = String::format("%.6lggrad", m_value.num);
+ text = formatNumber(m_value.num) + "grad";
break;
case CSS_MS:
- text = String::format("%.6lgms", m_value.num);
+ text = formatNumber(m_value.num) + "ms";
break;
case CSS_S:
- text = String::format("%.6lgs", m_value.num);
+ text = formatNumber(m_value.num) + "s";
break;
case CSS_HZ:
- text = String::format("%.6lghz", m_value.num);
+ text = formatNumber(m_value.num) + "hz";
break;
case CSS_KHZ:
- text = String::format("%.6lgkhz", m_value.num);
+ text = formatNumber(m_value.num) + "khz";
break;
case CSS_TURN:
- text = String::format("%.6lgturn", m_value.num);
+ text = formatNumber(m_value.num) + "turn";
break;
case CSS_DIMENSION:
// FIXME