Index: Source/platform/graphics/ColorSpace.cpp |
diff --git a/Source/core/inspector/ScriptCallStack.cpp b/Source/platform/graphics/ColorSpace.cpp |
similarity index 56% |
copy from Source/core/inspector/ScriptCallStack.cpp |
copy to Source/platform/graphics/ColorSpace.cpp |
index 0a23bb4fae5e220311cfbca54f8400416864c56c..cb77ac8fead467f9a79b4131842db2b1bd99179d 100644 |
--- a/Source/core/inspector/ScriptCallStack.cpp |
+++ b/Source/platform/graphics/ColorSpace.cpp |
@@ -1,5 +1,7 @@ |
/* |
* Copyright (c) 2008, Google Inc. All rights reserved. |
+ * Copyright (C) 2009 Dirk Schulze <krit@webkit.org> |
+ * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are |
@@ -29,59 +31,42 @@ |
*/ |
#include "config.h" |
-#include "core/inspector/ScriptCallStack.h" |
+#include "platform/graphics/ColorSpace.h" |
+#include "wtf/MathExtras.h" |
namespace WebCore { |
-PassRefPtr<ScriptCallStack> ScriptCallStack::create(Vector<ScriptCallFrame>& frames) |
+const Vector<uint8_t>& getLinearRgbLUT() |
{ |
- return adoptRef(new ScriptCallStack(frames)); |
-} |
- |
-ScriptCallStack::ScriptCallStack(Vector<ScriptCallFrame>& frames) |
-{ |
- m_frames.swap(frames); |
-} |
- |
-ScriptCallStack::~ScriptCallStack() |
-{ |
-} |
- |
-const ScriptCallFrame &ScriptCallStack::at(size_t index) const |
-{ |
- ASSERT(m_frames.size() > index); |
- return m_frames[index]; |
-} |
- |
-size_t ScriptCallStack::size() const |
-{ |
- return m_frames.size(); |
-} |
- |
-bool ScriptCallStack::isEqual(ScriptCallStack* o) const |
-{ |
- if (!o) |
- return false; |
- |
- size_t frameCount = o->m_frames.size(); |
- if (frameCount != m_frames.size()) |
- return false; |
- |
- for (size_t i = 0; i < frameCount; ++i) { |
- if (!m_frames[i].isEqual(o->m_frames[i])) |
- return false; |
+ DEFINE_STATIC_LOCAL(Vector<uint8_t>, linearRgbLUT, ()); |
+ if (linearRgbLUT.isEmpty()) { |
+ linearRgbLUT.reserveCapacity(256); |
+ for (unsigned i = 0; i < 256; i++) { |
+ float color = i / 255.0f; |
+ color = (color <= 0.04045f ? color / 12.92f : pow((color + 0.055f) / 1.055f, 2.4f)); |
+ color = std::max(0.0f, color); |
+ color = std::min(1.0f, color); |
+ linearRgbLUT.append(static_cast<uint8_t>(round(color * 255))); |
+ } |
} |
- |
- return true; |
+ return linearRgbLUT; |
} |
-PassRefPtr<TypeBuilder::Array<TypeBuilder::Console::CallFrame> > ScriptCallStack::buildInspectorArray() const |
+const Vector<uint8_t>& getDeviceRgbLUT() |
{ |
- RefPtr<TypeBuilder::Array<TypeBuilder::Console::CallFrame> > frames = TypeBuilder::Array<TypeBuilder::Console::CallFrame>::create(); |
- for (size_t i = 0; i < m_frames.size(); i++) |
- frames->addItem(m_frames.at(i).buildInspectorObject()); |
- return frames; |
+ DEFINE_STATIC_LOCAL(Vector<uint8_t>, deviceRgbLUT, ()); |
+ if (deviceRgbLUT.isEmpty()) { |
+ deviceRgbLUT.reserveCapacity(256); |
+ for (unsigned i = 0; i < 256; i++) { |
+ float color = i / 255.0f; |
+ color = (powf(color, 1.0f / 2.4f) * 1.055f) - 0.055f; |
+ color = std::max(0.0f, color); |
+ color = std::min(1.0f, color); |
+ deviceRgbLUT.append(static_cast<uint8_t>(round(color * 255))); |
+ } |
+ } |
+ return deviceRgbLUT; |
} |
} // namespace WebCore |