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

Unified Diff: ash/display/display_util.cc

Issue 2196923002: Make ash::DisplayMode more like ui::DisplayMode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 4 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
Index: ash/display/display_util.cc
diff --git a/ash/display/display_util.cc b/ash/display/display_util.cc
index bd1c2e326f2fc95b531f81daf68fea91430aa688..e7bb236991c3f157e30ed42604fa421f762c85cb 100644
--- a/ash/display/display_util.cc
+++ b/ash/display/display_util.cc
@@ -68,18 +68,19 @@ const float kUIScalesFor1_25x[] = {0.5f, 0.625f, 0.8f, 1.0f, 1.25f};
const float kUIScalesFor1280[] = {0.5f, 0.625f, 0.8f, 1.0f, 1.125f};
const float kUIScalesFor1366[] = {0.5f, 0.6f, 0.75f, 1.0f, 1.125f};
-std::vector<float> GetScalesForDisplay(const DisplayMode& native_mode) {
+std::vector<float> GetScalesForDisplay(
+ const scoped_refptr<DisplayMode>& native_mode) {
#define ASSIGN_ARRAY(v, a) v.assign(a, a + arraysize(a))
std::vector<float> ret;
- if (native_mode.device_scale_factor == 2.0f) {
+ if (native_mode->device_scale_factor() == 2.0f) {
ASSIGN_ARRAY(ret, kUIScalesFor2x);
return ret;
- } else if (native_mode.device_scale_factor == 1.25f) {
+ } else if (native_mode->device_scale_factor() == 1.25f) {
ASSIGN_ARRAY(ret, kUIScalesFor1_25x);
return ret;
}
- switch (native_mode.size.width()) {
+ switch (native_mode->size().width()) {
case 1280:
ASSIGN_ARRAY(ret, kUIScalesFor1280);
break;
@@ -90,7 +91,7 @@ std::vector<float> GetScalesForDisplay(const DisplayMode& native_mode) {
ASSIGN_ARRAY(ret, kUIScalesFor1280);
#if defined(OS_CHROMEOS)
if (base::SysInfo::IsRunningOnChromeOS())
- NOTREACHED() << "Unknown resolution:" << native_mode.size.ToString();
+ NOTREACHED() << "Unknown resolution:" << native_mode->size().ToString();
#endif
}
return ret;
@@ -99,9 +100,9 @@ std::vector<float> GetScalesForDisplay(const DisplayMode& native_mode) {
struct ScaleComparator {
explicit ScaleComparator(float s) : scale(s) {}
- bool operator()(const DisplayMode& mode) const {
+ bool operator()(const scoped_refptr<DisplayMode>& mode) const {
const float kEpsilon = 0.0001f;
- return std::abs(scale - mode.ui_scale) < kEpsilon;
+ return std::abs(scale - mode->ui_scale()) < kEpsilon;
}
float scale;
};
@@ -112,23 +113,20 @@ void ConvertPointFromScreenToNative(aura::WindowTreeHost* host,
host->ConvertPointToNativeScreen(point);
}
-bool GetDisplayModeForUIScale(const DisplayInfo& info,
- float ui_scale,
- DisplayMode* out) {
- const std::vector<DisplayMode>& modes = info.display_modes();
+scoped_refptr<DisplayMode> GetDisplayModeForUIScale(const DisplayInfo& info,
+ float ui_scale) {
+ const DisplayInfo::DisplayModeList& modes = info.display_modes();
auto iter = std::find_if(modes.begin(), modes.end(),
- [ui_scale](const DisplayMode& mode) {
- return mode.ui_scale == ui_scale;
+ [ui_scale](const scoped_refptr<DisplayMode>& mode) {
+ return mode->ui_scale() == ui_scale;
});
if (iter == modes.end())
- return false;
- *out = *iter;
- return true;
+ return scoped_refptr<DisplayMode>();
+ return *iter;
}
-DisplayMode FindNextMode(const std::vector<DisplayMode>& modes,
- size_t index,
- bool up) {
+scoped_refptr<DisplayMode>
+FindNextMode(const DisplayInfo::DisplayModeList& modes, size_t index, bool up) {
DCHECK_LT(index, modes.size());
size_t new_index = index;
if (up && (index + 1 < modes.size()))
@@ -140,98 +138,99 @@ DisplayMode FindNextMode(const std::vector<DisplayMode>& modes,
} // namespace
-std::vector<DisplayMode> CreateInternalDisplayModeList(
- const DisplayMode& native_mode) {
- std::vector<DisplayMode> display_mode_list;
+DisplayInfo::DisplayModeList CreateInternalDisplayModeList(
+ const scoped_refptr<DisplayMode>& native_mode) {
+ DisplayInfo::DisplayModeList display_mode_list;
- float native_ui_scale = (native_mode.device_scale_factor == 1.25f)
+ float native_ui_scale = (native_mode->device_scale_factor() == 1.25f)
? 1.0f
- : native_mode.device_scale_factor;
+ : native_mode->device_scale_factor();
for (float ui_scale : GetScalesForDisplay(native_mode)) {
- DisplayMode mode = native_mode;
- mode.ui_scale = ui_scale;
- mode.native = (ui_scale == native_ui_scale);
+ scoped_refptr<DisplayMode> mode(new DisplayMode(
+ native_mode->size(), native_mode->refresh_rate(),
+ native_mode->is_interlaced(), ui_scale == native_ui_scale, ui_scale,
+ native_mode->device_scale_factor()));
display_mode_list.push_back(mode);
}
return display_mode_list;
}
-std::vector<DisplayMode> CreateUnifiedDisplayModeList(
- const DisplayMode& native_mode,
+DisplayInfo::DisplayModeList CreateUnifiedDisplayModeList(
+ const scoped_refptr<DisplayMode>& native_mode,
const std::set<std::pair<float, float>>& dsf_scale_list) {
- std::vector<DisplayMode> display_mode_list;
+ DisplayInfo::DisplayModeList display_mode_list;
for (auto& pair : dsf_scale_list) {
- DisplayMode mode = native_mode;
- mode.device_scale_factor = pair.first;
- gfx::SizeF scaled_size(native_mode.size);
+ gfx::SizeF scaled_size(native_mode->size());
scaled_size.Scale(pair.second);
- mode.size = gfx::ToFlooredSize(scaled_size);
- mode.native = false;
+ scoped_refptr<DisplayMode> mode(new DisplayMode(
+ gfx::ToFlooredSize(scaled_size), native_mode->refresh_rate(),
+ native_mode->is_interlaced(), false /* native */,
+ native_mode->ui_scale(), pair.first /* device_scale_factor */));
display_mode_list.push_back(mode);
}
// Sort the mode by the size in DIP.
std::sort(display_mode_list.begin(), display_mode_list.end(),
- [](const DisplayMode& a, const DisplayMode& b) {
- return a.GetSizeInDIP(false).GetArea() <
- b.GetSizeInDIP(false).GetArea();
+ [](const scoped_refptr<DisplayMode>& a,
+ const scoped_refptr<DisplayMode>& b) {
+ return a->GetSizeInDIP(false).GetArea() <
+ b->GetSizeInDIP(false).GetArea();
});
return display_mode_list;
}
-bool GetDisplayModeForResolution(const DisplayInfo& info,
- const gfx::Size& resolution,
- DisplayMode* out) {
+scoped_refptr<DisplayMode> GetDisplayModeForResolution(
+ const DisplayInfo& info,
+ const gfx::Size& resolution) {
if (display::Display::IsInternalDisplayId(info.id()))
- return false;
+ return scoped_refptr<DisplayMode>();
- const std::vector<DisplayMode>& modes = info.display_modes();
+ const DisplayInfo::DisplayModeList& modes = info.display_modes();
DCHECK_NE(0u, modes.size());
- DisplayMode target_mode;
- target_mode.size = resolution;
- std::vector<DisplayMode>::const_iterator iter = std::find_if(
- modes.begin(), modes.end(), [resolution](const DisplayMode& mode) {
- return mode.size == resolution;
- });
+ scoped_refptr<DisplayMode> target_mode;
+ DisplayInfo::DisplayModeList::const_iterator iter =
+ std::find_if(modes.begin(), modes.end(),
+ [resolution](const scoped_refptr<DisplayMode>& mode) {
+ return mode->size() == resolution;
+ });
if (iter == modes.end()) {
LOG(WARNING) << "Unsupported resolution was requested:"
<< resolution.ToString();
- return false;
+ return scoped_refptr<DisplayMode>();
}
- *out = *iter;
- return true;
+ return *iter;
}
-bool GetDisplayModeForNextUIScale(const DisplayInfo& info,
- bool up,
- DisplayMode* out) {
+scoped_refptr<DisplayMode> GetDisplayModeForNextUIScale(const DisplayInfo& info,
+ bool up) {
DisplayManager* display_manager = Shell::GetInstance()->display_manager();
if (!display_manager->IsActiveDisplayId(info.id()) ||
!display::Display::IsInternalDisplayId(info.id())) {
- return false;
+ return scoped_refptr<DisplayMode>();
}
- const std::vector<DisplayMode>& modes = info.display_modes();
+ const DisplayInfo::DisplayModeList& modes = info.display_modes();
ScaleComparator comparator(info.configured_ui_scale());
auto iter = std::find_if(modes.begin(), modes.end(), comparator);
- *out = FindNextMode(modes, iter - modes.begin(), up);
- return true;
+ return FindNextMode(modes, iter - modes.begin(), up);
}
-bool GetDisplayModeForNextResolution(const DisplayInfo& info,
- bool up,
- DisplayMode* out) {
+scoped_refptr<DisplayMode> GetDisplayModeForNextResolution(
+ const DisplayInfo& info,
+ bool up) {
if (display::Display::IsInternalDisplayId(info.id()))
- return false;
- const std::vector<DisplayMode>& modes = info.display_modes();
- DisplayMode tmp(info.size_in_pixel(), 0.0f, false, false);
- tmp.device_scale_factor = info.device_scale_factor();
- gfx::Size resolution = tmp.GetSizeInDIP(false);
- auto iter = std::find_if(modes.begin(), modes.end(),
- [resolution](const DisplayMode& mode) {
- return mode.GetSizeInDIP(false) == resolution;
- });
- *out = FindNextMode(modes, iter - modes.begin(), up);
- return true;
+ return scoped_refptr<DisplayMode>();
+
+ const DisplayInfo::DisplayModeList& modes = info.display_modes();
+ scoped_refptr<DisplayMode> tmp = new DisplayMode(
+ info.size_in_pixel(), 0.0, false, false, 1.0, info.device_scale_factor());
+ gfx::Size resolution = tmp->GetSizeInDIP(false);
+
+ auto iter =
+ std::find_if(modes.begin(), modes.end(),
+ [resolution](const scoped_refptr<DisplayMode>& mode) {
+ return mode->GetSizeInDIP(false) == resolution;
+ });
+ return FindNextMode(modes, iter - modes.begin(), up);
}
bool SetDisplayUIScale(int64_t id, float ui_scale) {
@@ -241,15 +240,16 @@ bool SetDisplayUIScale(int64_t id, float ui_scale) {
return false;
}
const DisplayInfo& info = display_manager->GetDisplayInfo(id);
- DisplayMode mode;
- if (!GetDisplayModeForUIScale(info, ui_scale, &mode))
+
+ scoped_refptr<DisplayMode> mode = GetDisplayModeForUIScale(info, ui_scale);
+ if (!mode)
return false;
return display_manager->SetDisplayMode(id, mode);
}
bool HasDisplayModeForUIScale(const DisplayInfo& info, float ui_scale) {
ScaleComparator comparator(ui_scale);
- const std::vector<DisplayMode>& modes = info.display_modes();
+ const DisplayInfo::DisplayModeList& modes = info.display_modes();
return std::find_if(modes.begin(), modes.end(), comparator) != modes.end();
}

Powered by Google App Engine
This is Rietveld 408576698