| Index: ash/content/display/display_color_manager_chromeos.cc
|
| diff --git a/ash/content/display/display_color_manager_chromeos.cc b/ash/content/display/display_color_manager_chromeos.cc
|
| deleted file mode 100644
|
| index 0d7252f87399c8726e09611d5804a9d30233e9a1..0000000000000000000000000000000000000000
|
| --- a/ash/content/display/display_color_manager_chromeos.cc
|
| +++ /dev/null
|
| @@ -1,139 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ash/content/display/display_color_manager_chromeos.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/command_line.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "chromeos/chromeos_switches.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "third_party/qcms/src/qcms.h"
|
| -#include "ui/display/types/display_snapshot.h"
|
| -#include "ui/display/types/gamma_ramp_rgb_entry.h"
|
| -#include "ui/display/types/native_display_delegate.h"
|
| -#include "ui/gfx/display.h"
|
| -#include "ui/gfx/screen.h"
|
| -
|
| -using content::BrowserThread;
|
| -
|
| -namespace ash {
|
| -
|
| -namespace {
|
| -
|
| -bool ParseFile(const base::FilePath& path,
|
| - DisplayColorManager::ColorCalibrationData* data) {
|
| - qcms_profile* display_profile = qcms_profile_from_path(path.value().c_str());
|
| -
|
| - if (!display_profile) {
|
| - LOG(WARNING) << "Unable to load ICC file: " << path.value();
|
| - return false;
|
| - }
|
| -
|
| - size_t vcgt_channel_length =
|
| - qcms_profile_get_vcgt_channel_length(display_profile);
|
| - if (!vcgt_channel_length) {
|
| - LOG(WARNING) << "No vcgt table in ICC file: " << path.value();
|
| - return false;
|
| - }
|
| -
|
| - std::vector<uint16_t> vcgt_data;
|
| - vcgt_data.resize(vcgt_channel_length * 3);
|
| - if (!qcms_profile_get_vcgt_rgb_channels(display_profile, &vcgt_data[0])) {
|
| - LOG(WARNING) << "Unable to get vcgt data";
|
| - qcms_profile_release(display_profile);
|
| - return false;
|
| - }
|
| -
|
| - data->lut.resize(vcgt_channel_length);
|
| - for (size_t i = 0; i < vcgt_channel_length; ++i) {
|
| - data->lut[i].r = vcgt_data[i];
|
| - data->lut[i].g = vcgt_data[vcgt_channel_length + i];
|
| - data->lut[i].b = vcgt_data[(vcgt_channel_length * 2) + i];
|
| - }
|
| - qcms_profile_release(display_profile);
|
| - return true;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -DisplayColorManager::DisplayColorManager(ui::DisplayConfigurator* configurator)
|
| - : configurator_(configurator) {
|
| - configurator_->AddObserver(this);
|
| - LoadInternalFromCommandLine();
|
| -}
|
| -
|
| -DisplayColorManager::~DisplayColorManager() {
|
| - configurator_->RemoveObserver(this);
|
| -
|
| - for (auto it : calibration_map_) {
|
| - delete it.second;
|
| - calibration_map_.erase(it.first);
|
| - }
|
| -}
|
| -
|
| -void DisplayColorManager::OnDisplayModeChanged(
|
| - const ui::DisplayConfigurator::DisplayStateList& display_states) {
|
| - for (const ui::DisplaySnapshot* state : display_states)
|
| - ApplyDisplayColorCalibration(state->display_id());
|
| -}
|
| -
|
| -void DisplayColorManager::ApplyDisplayColorCalibration(uint64_t display_id) {
|
| - if (calibration_map_.find(display_id) != calibration_map_.end()) {
|
| - ColorCalibrationData* ramp = calibration_map_[display_id];
|
| - if (!configurator_->SetGammaRamp(display_id, ramp->lut))
|
| - LOG(WARNING) << "Error applying gamma ramp";
|
| - }
|
| -}
|
| -
|
| -void DisplayColorManager::LoadInternalFromCommandLine() {
|
| - const base::CommandLine* command_line =
|
| - base::CommandLine::ForCurrentProcess();
|
| - if (command_line->HasSwitch(
|
| - chromeos::switches::kInternalDisplayColorProfileFile)) {
|
| - const base::FilePath& path = command_line->GetSwitchValuePath(
|
| - chromeos::switches::kInternalDisplayColorProfileFile);
|
| - VLOG(1) << "Loading ICC file : " << path.value()
|
| - << "for internal display id: " << gfx::Display::InternalDisplayId();
|
| - LoadCalibrationForDisplay(gfx::Display::InternalDisplayId(), path);
|
| - }
|
| -}
|
| -
|
| -void DisplayColorManager::LoadCalibrationForDisplay(
|
| - int64_t display_id,
|
| - const base::FilePath& path) {
|
| - if (display_id == gfx::Display::kInvalidDisplayID) {
|
| - LOG(WARNING) << "Trying to load calibration data for invalid display id";
|
| - return;
|
| - }
|
| -
|
| - scoped_ptr<ColorCalibrationData> data(new ColorCalibrationData());
|
| - base::Callback<bool(void)> request(
|
| - base::Bind(&ParseFile, path, base::Unretained(data.get())));
|
| - base::PostTaskAndReplyWithResult(
|
| - BrowserThread::GetBlockingPool(), FROM_HERE, request,
|
| - base::Bind(&DisplayColorManager::UpdateCalibrationData, AsWeakPtr(),
|
| - display_id, base::Passed(data.Pass())));
|
| -}
|
| -
|
| -void DisplayColorManager::UpdateCalibrationData(
|
| - uint64_t display_id,
|
| - scoped_ptr<ColorCalibrationData> data,
|
| - bool success) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - if (success) {
|
| - // The map takes over ownership of the underlying memory.
|
| - calibration_map_[display_id] = data.release();
|
| - }
|
| -}
|
| -
|
| -DisplayColorManager::ColorCalibrationData::ColorCalibrationData() {
|
| -}
|
| -
|
| -DisplayColorManager::ColorCalibrationData::~ColorCalibrationData() {
|
| -}
|
| -
|
| -} // namespace ash
|
|
|