Commit 7008dab9 authored by Mike Klein's avatar Mike Klein Committed by Commit Bot

port devtools_eye_dropper away from SkColorSpaceXform

We're doing some clean up and would like to retract SkColorSpaceXform
from Skia's public API.  It's obsolete now that you can either,

   1) just use Skia's drawing pipeline or readPixels()/writePixels()
      for most of its functionality; or
   2) use the much more flexible skcms interface for fancy features.

In this case, SkPixmap::readPixels() works just fine.

Change-Id: I7195eecae4ca71d408a9641c4be8d247d877ac50
Reviewed-on: https://chromium-review.googlesource.com/1203996Reviewed-by: default avatarDmitry Gozman <dgozman@chromium.org>
Reviewed-by: default avatarccameron <ccameron@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595229}
parent 53ecd726
......@@ -23,9 +23,9 @@
#include "third_party/blink/public/platform/web_input_event.h"
#include "third_party/blink/public/platform/web_mouse_event.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkColorSpaceXform.h"
#include "third_party/skia/include/core/SkPaint.h"
#include "third_party/skia/include/core/SkPath.h"
#include "third_party/skia/include/core/SkPixmap.h"
#include "ui/gfx/geometry/size_conversions.h"
DevToolsEyeDropper::DevToolsEyeDropper(content::WebContents* web_contents,
......@@ -128,13 +128,9 @@ bool DevToolsEyeDropper::HandleMouseEvent(const blink::WebMouseEvent& event) {
}
SkColor sk_color = frame_.getColor(last_cursor_x_, last_cursor_y_);
uint8_t rgba_color[4] = {
SkColorGetR(sk_color), SkColorGetG(sk_color), SkColorGetB(sk_color),
SkColorGetA(sk_color),
};
// The picked colors are expected to be sRGB. Create a color transform from
// |frame_|'s color space to sRGB.
// The picked colors are expected to be sRGB. Convert from |frame_|'s color
// space to sRGB.
// TODO(ccameron): We don't actually know |frame_|'s color space, so just
// use |host_|'s current display's color space. This will almost always be
// the right color space, but is sloppy.
......@@ -142,16 +138,18 @@ bool DevToolsEyeDropper::HandleMouseEvent(const blink::WebMouseEvent& event) {
content::ScreenInfo screen_info;
host_->GetScreenInfo(&screen_info);
gfx::ColorSpace frame_color_space = screen_info.color_space;
std::unique_ptr<SkColorSpaceXform> frame_color_space_to_srgb_xform =
SkColorSpaceXform::New(frame_color_space.ToSkColorSpace().get(),
SkColorSpace::MakeSRGB().get());
if (frame_color_space_to_srgb_xform) {
bool xform_apply_result = frame_color_space_to_srgb_xform->apply(
SkColorSpaceXform::kRGBA_8888_ColorFormat, rgba_color,
SkColorSpaceXform::kRGBA_8888_ColorFormat, rgba_color, 1,
kUnpremul_SkAlphaType);
DCHECK(xform_apply_result);
}
SkPixmap pm(
SkImageInfo::Make(1, 1, kBGRA_8888_SkColorType, kUnpremul_SkAlphaType,
frame_color_space.ToSkColorSpace()),
&sk_color, sizeof(sk_color));
uint8_t rgba_color[4];
bool ok = pm.readPixels(
SkImageInfo::Make(1, 1, kRGBA_8888_SkColorType, kUnpremul_SkAlphaType,
SkColorSpace::MakeSRGB()),
rgba_color, sizeof(rgba_color));
DCHECK(ok);
callback_.Run(rgba_color[0], rgba_color[1], rgba_color[2], rgba_color[3]);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment