Make WebKitGraphics able to handle grayscale colors
[WebKit-https.git] / WebCore / platform / graphics / cg / ColorCG.cpp
index 9dfa93c5271e555c62c9d857a9c8fcba7d474b07..48ce9f25ee7792c76430d0900c3f9939cbbb28ba 100644 (file)
 
 namespace WebCore {
 
+Color::Color(CGColorRef color)
+{
+    if (!color) {
+        m_color = 0;
+        m_valid = false;
+        return;
+    }
+
+    size_t numComponents = CGColorGetNumberOfComponents(color);
+    const CGFloat* components = CGColorGetComponents(color);
+
+    float r = 0;
+    float g = 0;
+    float b = 0;
+    float a = 0;
+
+    switch (numComponents) {
+    case 2:
+        r = g = b = components[0];
+        a = components[1];
+        break;
+    case 4:
+        r = components[0];
+        g = components[1];
+        b = components[2];
+        a = components[3];
+        break;
+    default:
+        ASSERT_NOT_REACHED();
+    }
+
+    m_color = makeRGBA(r * 255, g * 255, b * 255, a * 255);
+}
+
 #if !PLATFORM(MAC)
 
 CGColorRef cgColor(const Color& c)