diff options
author | Ben Murdoch <benm@google.com> | 2010-10-22 13:02:20 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2010-10-26 15:21:41 +0100 |
commit | a94275402997c11dd2e778633dacf4b7e630a35d (patch) | |
tree | e66f56c67e3b01f22c9c23cd932271ee9ac558ed /WebCore/css/CSSPrimitiveValue.cpp | |
parent | 09e26c78506587b3f5d930d7bc72a23287ffbec0 (diff) | |
download | external_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.cpp | 51 |
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 |