summaryrefslogtreecommitdiffstats
path: root/chromium/ash/display/display_info.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/display/display_info.cc')
-rw-r--r--chromium/ash/display/display_info.cc264
1 files changed, 0 insertions, 264 deletions
diff --git a/chromium/ash/display/display_info.cc b/chromium/ash/display/display_info.cc
deleted file mode 100644
index 01c604f7a62..00000000000
--- a/chromium/ash/display/display_info.cc
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright (c) 2013 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 <stdio.h>
-#include <string>
-#include <vector>
-
-#include "ash/display/display_info.h"
-#include "base/logging.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "ui/gfx/display.h"
-#include "ui/gfx/size_conversions.h"
-#include "ui/gfx/size_f.h"
-
-#if defined(OS_WIN)
-#include "ui/aura/window_tree_host.h"
-#endif
-
-namespace ash {
-namespace internal {
-
-Resolution::Resolution(const gfx::Size& size, bool interlaced)
- : size(size),
- interlaced(interlaced) {
-}
-
-// satic
-DisplayInfo DisplayInfo::CreateFromSpec(const std::string& spec) {
- return CreateFromSpecWithID(spec, gfx::Display::kInvalidDisplayID);
-}
-
-// static
-DisplayInfo DisplayInfo::CreateFromSpecWithID(const std::string& spec,
- int64 id) {
- // Default bounds for a display.
- const int kDefaultHostWindowX = 200;
- const int kDefaultHostWindowY = 200;
- const int kDefaultHostWindowWidth = 1366;
- const int kDefaultHostWindowHeight = 768;
-
- // Use larger than max int to catch overflow early.
- static int64 synthesized_display_id = 2200000000LL;
-
-#if defined(OS_WIN)
- gfx::Rect bounds_in_native(aura::RootWindowHost::GetNativeScreenSize());
-#else
- gfx::Rect bounds_in_native(kDefaultHostWindowX, kDefaultHostWindowY,
- kDefaultHostWindowWidth, kDefaultHostWindowHeight);
-#endif
- std::string main_spec = spec;
-
- float ui_scale = 1.0f;
- std::vector<std::string> parts;
- if (Tokenize(main_spec, "@", &parts) == 2) {
- double scale_in_double = 0;
- if (base::StringToDouble(parts[1], &scale_in_double))
- ui_scale = scale_in_double;
- main_spec = parts[0];
- }
-
- size_t count = Tokenize(main_spec, "/", &parts);
- gfx::Display::Rotation rotation(gfx::Display::ROTATE_0);
- bool has_overscan = false;
- if (count) {
- main_spec = parts[0];
- if (count >= 2) {
- std::string options = parts[1];
- for (size_t i = 0; i < options.size(); ++i) {
- char c = options[i];
- switch (c) {
- case 'o':
- has_overscan = true;
- break;
- case 'r': // rotate 90 degrees to 'right'.
- rotation = gfx::Display::ROTATE_90;
- break;
- case 'u': // 180 degrees, 'u'pside-down.
- rotation = gfx::Display::ROTATE_180;
- break;
- case 'l': // rotate 90 degrees to 'left'.
- rotation = gfx::Display::ROTATE_270;
- break;
- }
- }
- }
- }
-
- int x = 0, y = 0, width, height;
- float device_scale_factor = 1.0f;
- if (sscanf(main_spec.c_str(), "%dx%d*%f",
- &width, &height, &device_scale_factor) >= 2 ||
- sscanf(main_spec.c_str(), "%d+%d-%dx%d*%f", &x, &y, &width, &height,
- &device_scale_factor) >= 4) {
- bounds_in_native.SetRect(x, y, width, height);
- }
-
- std::vector<Resolution> resolutions;
- if (Tokenize(main_spec, "#", &parts) == 2) {
- main_spec = parts[0];
- std::string resolution_list = parts[1];
- count = Tokenize(resolution_list, "|", &parts);
- for (size_t i = 0; i < count; ++i) {
- std::string resolution = parts[i];
- int width, height;
- if (sscanf(resolution.c_str(), "%dx%d", &width, &height) == 2)
- resolutions.push_back(Resolution(gfx::Size(width, height), false));
- }
- }
-
- if (id == gfx::Display::kInvalidDisplayID)
- id = synthesized_display_id++;
- DisplayInfo display_info(
- id, base::StringPrintf("Display-%d", static_cast<int>(id)), has_overscan);
- display_info.set_device_scale_factor(device_scale_factor);
- display_info.set_rotation(rotation);
- display_info.set_configured_ui_scale(ui_scale);
- display_info.SetBounds(bounds_in_native);
- display_info.set_resolutions(resolutions);
-
- // To test the overscan, it creates the default 5% overscan.
- if (has_overscan) {
- int width = bounds_in_native.width() / device_scale_factor / 40;
- int height = bounds_in_native.height() / device_scale_factor / 40;
- display_info.SetOverscanInsets(gfx::Insets(height, width, height, width));
- display_info.UpdateDisplaySize();
- }
-
- DVLOG(1) << "DisplayInfoFromSpec info=" << display_info.ToString()
- << ", spec=" << spec;
- return display_info;
-}
-
-DisplayInfo::DisplayInfo()
- : id_(gfx::Display::kInvalidDisplayID),
- has_overscan_(false),
- rotation_(gfx::Display::ROTATE_0),
- touch_support_(gfx::Display::TOUCH_SUPPORT_UNKNOWN),
- device_scale_factor_(1.0f),
- overscan_insets_in_dip_(0, 0, 0, 0),
- configured_ui_scale_(1.0f),
- native_(false) {
-}
-
-DisplayInfo::DisplayInfo(int64 id,
- const std::string& name,
- bool has_overscan)
- : id_(id),
- name_(name),
- has_overscan_(has_overscan),
- rotation_(gfx::Display::ROTATE_0),
- touch_support_(gfx::Display::TOUCH_SUPPORT_UNKNOWN),
- device_scale_factor_(1.0f),
- overscan_insets_in_dip_(0, 0, 0, 0),
- configured_ui_scale_(1.0f),
- native_(false) {
-}
-
-DisplayInfo::~DisplayInfo() {
-}
-
-void DisplayInfo::Copy(const DisplayInfo& native_info) {
- DCHECK(id_ == native_info.id_);
- name_ = native_info.name_;
- has_overscan_ = native_info.has_overscan_;
-
- DCHECK(!native_info.bounds_in_native_.IsEmpty());
- bounds_in_native_ = native_info.bounds_in_native_;
- size_in_pixel_ = native_info.size_in_pixel_;
- device_scale_factor_ = native_info.device_scale_factor_;
- resolutions_ = native_info.resolutions_;
- touch_support_ = native_info.touch_support_;
-
- // Copy overscan_insets_in_dip_ if it's not empty. This is for test
- // cases which use "/o" annotation which sets the overscan inset
- // to native, and that overscan has to be propagated. This does not
- // happen on the real environment.
- if (!native_info.overscan_insets_in_dip_.empty())
- overscan_insets_in_dip_ = native_info.overscan_insets_in_dip_;
-
- // Rotation_ and ui_scale_ are given by preference, or unit
- // tests. Don't copy if this native_info came from
- // DisplayChangeObserver.
- if (!native_info.native()) {
- rotation_ = native_info.rotation_;
- configured_ui_scale_ = native_info.configured_ui_scale_;
- }
- // Don't copy insets as it may be given by preference. |rotation_|
- // is treated as a native so that it can be specified in
- // |CreateFromSpec|.
-}
-
-void DisplayInfo::SetBounds(const gfx::Rect& new_bounds_in_native) {
- bounds_in_native_ = new_bounds_in_native;
- size_in_pixel_ = new_bounds_in_native.size();
- UpdateDisplaySize();
-}
-
-float DisplayInfo::GetEffectiveUIScale() const {
- if (device_scale_factor_ == 2.0f && configured_ui_scale_ == 2.0f)
- return 1.0f;
- return configured_ui_scale_;
-}
-
-void DisplayInfo::UpdateDisplaySize() {
- size_in_pixel_ = bounds_in_native_.size();
- if (!overscan_insets_in_dip_.empty()) {
- gfx::Insets insets_in_pixel =
- overscan_insets_in_dip_.Scale(device_scale_factor_);
- size_in_pixel_.Enlarge(-insets_in_pixel.width(), -insets_in_pixel.height());
- } else {
- overscan_insets_in_dip_.Set(0, 0, 0, 0);
- }
-
- if (rotation_ == gfx::Display::ROTATE_90 ||
- rotation_ == gfx::Display::ROTATE_270)
- size_in_pixel_.SetSize(size_in_pixel_.height(), size_in_pixel_.width());
- gfx::SizeF size_f(size_in_pixel_);
- size_f.Scale(GetEffectiveUIScale());
- size_in_pixel_ = gfx::ToFlooredSize(size_f);
-}
-
-void DisplayInfo::SetOverscanInsets(const gfx::Insets& insets_in_dip) {
- overscan_insets_in_dip_ = insets_in_dip;
-}
-
-gfx::Insets DisplayInfo::GetOverscanInsetsInPixel() const {
- return overscan_insets_in_dip_.Scale(device_scale_factor_);
-}
-
-std::string DisplayInfo::ToString() const {
- int rotation_degree = static_cast<int>(rotation_) * 90;
- return base::StringPrintf(
- "DisplayInfo[%lld] native bounds=%s, size=%s, scale=%f, "
- "overscan=%s, rotation=%d, ui-scale=%f, touchscreen=%s",
- static_cast<long long int>(id_),
- bounds_in_native_.ToString().c_str(),
- size_in_pixel_.ToString().c_str(),
- device_scale_factor_,
- overscan_insets_in_dip_.ToString().c_str(),
- rotation_degree,
- configured_ui_scale_,
- touch_support_ == gfx::Display::TOUCH_SUPPORT_AVAILABLE ? "yes" :
- touch_support_ == gfx::Display::TOUCH_SUPPORT_UNAVAILABLE ? "no" :
- "unknown");
-}
-
-std::string DisplayInfo::ToFullString() const {
- std::string resolutions_str;
- std::vector<Resolution>::const_iterator iter = resolutions_.begin();
- for (; iter != resolutions_.end(); ++iter) {
- if (!resolutions_str.empty())
- resolutions_str += ",";
- resolutions_str += iter->size.ToString();
- if (iter->interlaced)
- resolutions_str += "(i)";
- }
- return ToString() + ", resolutions=" + resolutions_str;
-}
-
-} // namespace internal
-} // namespace ash