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

Unified Diff: ash/display/display_manager.cc

Issue 789583002: Updates subpixel positioning and hinting when DSF is changed (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: GN Created 6 years 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_manager.cc
diff --git a/ash/display/display_manager.cc b/ash/display/display_manager.cc
index b83a34528613589ea935b03ef8f0d75b205c5afc..194c1cb4e99c0005b2f395d081ab568ef26bec1a 100644
--- a/ash/display/display_manager.cc
+++ b/ash/display/display_manager.cc
@@ -111,6 +111,40 @@ void MaybeInitInternalDisplay(int64 id) {
gfx::Display::SetInternalDisplayId(id);
}
+class FontRenderParamsRewriterAsh : public gfx::FontRenderParamsRewriter {
+ public:
+ FontRenderParamsRewriterAsh() {}
+ ~FontRenderParamsRewriterAsh() override {}
+
+ private:
+ bool IsBrowserTextSubpixelPositioningEnabled() {
+ DisplayManager* display_manager = Shell::GetInstance()->display_manager();
+ if (!display_manager->HasInternalDisplay())
+ return false;
+ int64 internal_id = gfx::Display::InternalDisplayId();
+ const gfx::Display& internal_display =
+ display_manager->GetDisplayForId(internal_id);
+ // The internal display ID exists but the display object does not exist in
+ // case of the docked mode.
+ if (!internal_display.is_valid())
+ return false;
+ const DisplayInfo& display_info =
+ display_manager->GetDisplayInfo(internal_id);
+ return display_info.GetEffectiveDeviceScaleFactor() > 1.0f;
+ }
+
+ // gfx::FontRenderParamsRewriter:
+ void RewriteParams(gfx::FontRenderParams* params) override {
+#if defined(OS_CHROMEOS)
+ if (params->antialiasing) {
+ params->subpixel_positioning = IsBrowserTextSubpixelPositioningEnabled();
+ if (params->subpixel_positioning)
+ params->hinting = gfx::FontRenderParams::HINTING_NONE;
+ }
+#endif
+ }
+};
+
} // namespace
using std::string;
@@ -152,10 +186,7 @@ DisplayManager::DisplayManager()
}
DisplayManager::~DisplayManager() {
-#if defined(OS_CHROMEOS)
- // Reset the font params.
- gfx::SetFontRenderParamsDeviceScaleFactor(1.0f);
-#endif
+ gfx::FontRenderParamsRewriter::Shutdown();
}
// static
@@ -238,14 +269,7 @@ void DisplayManager::InitDefaultDisplay() {
}
void DisplayManager::InitFontParams() {
-#if defined(OS_CHROMEOS)
- if (!HasInternalDisplay())
- return;
- const DisplayInfo& display_info =
- GetDisplayInfo(gfx::Display::InternalDisplayId());
- gfx::SetFontRenderParamsDeviceScaleFactor(
- display_info.GetEffectiveDeviceScaleFactor());
-#endif // OS_CHROMEOS
+ gfx::FontRenderParamsRewriter::SetInstance(new FontRenderParamsRewriterAsh());
}
// static

Powered by Google App Engine
This is Rietveld 408576698