OSDN Git Service

Swap tiled page tiles on zoom
[android-x86/external-webkit.git] / Source / WebCore / platform / graphics / Color.cpp
index fa7346e..7dea765 100644 (file)
 #include "Color.h"
 
 #include "HashTools.h"
-#include "PlatformString.h"
-#include <math.h>
 #include <wtf/Assertions.h>
+#include <wtf/HexNumber.h>
 #include <wtf/MathExtras.h>
+#include <wtf/text/StringBuilder.h>
 
 using namespace std;
-using namespace WTF;
 
 namespace WebCore {
 
@@ -182,17 +181,42 @@ Color::Color(const char* name)
 
 String Color::serialized() const
 {
-    if (alpha() == 0xFF)
-        return String::format("#%02x%02x%02x", red(), green(), blue());
+    DEFINE_STATIC_LOCAL(const String, commaSpace, (", "));
+    DEFINE_STATIC_LOCAL(const String, rgbaParen, ("rgba("));
+    DEFINE_STATIC_LOCAL(const String, zeroPointZero, ("0.0"));
+
+    if (!hasAlpha()) {
+        StringBuilder builder;
+        builder.reserveCapacity(7);
+        builder.append('#');
+        appendByteAsHex(red(), builder, Lowercase);
+        appendByteAsHex(green(), builder, Lowercase);
+        appendByteAsHex(blue(), builder, Lowercase);
+        return builder.toString();
+    }
+
+    Vector<UChar> result;
+    result.reserveInitialCapacity(28);
+
+    append(result, rgbaParen);
+    appendNumber(result, red());
+    append(result, commaSpace);
+    appendNumber(result, green());
+    append(result, commaSpace);
+    appendNumber(result, blue());
+    append(result, commaSpace);
 
     // Match Gecko ("0.0" for zero, 5 decimals for anything else)
     if (!alpha())
-        return String::format("rgba(%u, %u, %u, 0.0)", red(), green(), blue());
+        append(result, zeroPointZero);
+    else
+        append(result, String::format("%.5f", alpha() / 255.0f));
 
-    return String::format("rgba(%u, %u, %u, %.5f)", red(), green(), blue(), alpha() / 255.0f);
+    result.append(')');
+    return String::adopt(result);
 }
 
-String Color::name() const
+String Color::nameForRenderTreeAsText() const
 {
     if (alpha() < 0xFF)
         return String::format("#%02X%02X%02X%02X", red(), green(), blue(), alpha());