Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(283)

Unified Diff: ui/gfx/color_space.cc

Issue 2351823002: cc: Add conversion between gfx::ColorSpace and SkColorSpace (Closed)
Patch Set: Move to CS Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/color_space.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/color_space.cc
diff --git a/ui/gfx/color_space.cc b/ui/gfx/color_space.cc
index 8bb9bddca8882614957505d47eceb70e18d15af9..8e62ef0f411eb2430029a9d582ca1641b2d2c598 100644
--- a/ui/gfx/color_space.cc
+++ b/ui/gfx/color_space.cc
@@ -8,6 +8,7 @@
#include "base/lazy_instance.h"
#include "base/synchronization/lock.h"
+#include "third_party/skia/include/core/SkColorSpace.h"
#include "ui/gfx/icc_profile.h"
namespace gfx {
@@ -60,7 +61,9 @@ ColorSpace ColorSpace::CreateREC709() {
bool ColorSpace::operator==(const ColorSpace& other) const {
return primaries_ == other.primaries_ && transfer_ == other.transfer_ &&
- matrix_ == other.matrix_ && range_ == other.range_;
+ matrix_ == other.matrix_ && range_ == other.range_ &&
+ !memcmp(custom_primary_matrix_, other.custom_primary_matrix_,
hubbe 2016/09/19 19:21:27 We should only do this if primaries_ == CUSTOM I t
ccameron 2016/09/19 22:23:15 Done.
+ sizeof(custom_primary_matrix_));
}
bool ColorSpace::operator!=(const ColorSpace& other) const {
@@ -83,12 +86,26 @@ bool ColorSpace::operator<(const ColorSpace& other) const {
if (range_ < other.range_)
return true;
if (range_ > other.range_)
+ return false;
+ int primary_result =
+ memcmp(custom_primary_matrix_, other.custom_primary_matrix_,
+ sizeof(custom_primary_matrix_));
+ if (primary_result < 0)
return true;
-
- // TODO(hubbe): For "CUSTOM" primaries or tranfer functions, compare their
- // coefficients here
+ if (primary_result > 0)
+ return false;
return false;
}
+sk_sp<SkColorSpace> ColorSpace::ToSkColorSpace() const {
+ // TODO(crbug.com/634102): Make this conversion more robust.
+ std::vector<char> icc_data =
+ gfx::ICCProfile::FromColorSpace(*this).GetData();
hubbe 2016/09/19 19:21:27 1) Shouldn't we implement FromColorSpace() first?
ccameron 2016/09/19 22:23:15 This is to un-block work on rasterization, and ras
hubbe 2016/09/19 22:53:19 Then maybe remove the DCHECK and tell callers to e
+ sk_sp<SkColorSpace> result =
+ SkColorSpace::NewICC(icc_data.data(), icc_data.size());
+ DCHECK(result);
+ return result;
+}
+
} // namespace gfx
« no previous file with comments | « ui/gfx/color_space.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698