diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 4 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 6 | ||||
-rw-r--r-- | chrome/renderer/render_view_linux.cc | 94 |
3 files changed, 101 insertions, 3 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 6af62ef..a2a37e1 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -2632,9 +2632,7 @@ void RenderView::OnEnableIntrinsicWidthChangedMode() { void RenderView::OnSetRendererPrefs(const RendererPreferences& renderer_prefs) { renderer_preferences_ = renderer_prefs; - - // TODO(derat): Pass |renderer_preferences_.should_antialias_text|, |hinting|, - // and |subpixel_rendering| through to Skia. + UpdateFontRenderingFromRendererPrefs(); } void RenderView::OnMediaPlayerActionAt(int x, diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index d4214c0..d7288e6 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -621,6 +621,12 @@ class RenderView : public RenderWidget, void Print(WebFrame* frame, bool script_initiated); +#if defined(OS_LINUX) + void UpdateFontRenderingFromRendererPrefs(); +#else + void UpdateFontRenderingFromRendererPrefs() { } +#endif + // Bitwise-ORed set of extra bindings that have been enabled. See // BindingsPolicy for details. int enabled_bindings_; diff --git a/chrome/renderer/render_view_linux.cc b/chrome/renderer/render_view_linux.cc new file mode 100644 index 0000000..0c6375f --- /dev/null +++ b/chrome/renderer/render_view_linux.cc @@ -0,0 +1,94 @@ +// Copyright (c) 2009 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 "chrome/renderer/render_view.h" + +#include "chrome/common/renderer_preferences.h" +#include "webkit/api/public/linux/WebFontRendering.h" + +using WebKit::WebFontRendering; + +static SkPaint::Hinting RendererPreferencesToSkiaHinting( + RendererPreferencesHintingEnum hinting) { + switch (hinting) { + case RENDERER_PREFERENCES_HINTING_SYSTEM_DEFAULT: + return SkPaint::kNormal_Hinting; + case RENDERER_PREFERENCES_HINTING_NONE: + return SkPaint::kNo_Hinting; + case RENDERER_PREFERENCES_HINTING_SLIGHT: + return SkPaint::kSlight_Hinting; + case RENDERER_PREFERENCES_HINTING_MEDIUM: + return SkPaint::kNormal_Hinting; + case RENDERER_PREFERENCES_HINTING_FULL: + return SkPaint::kFull_Hinting; + default: + NOTREACHED(); + return SkPaint::kNormal_Hinting; + } +} + +static SkFontHost::LCDOrder RendererPreferencesToSkiaLCDOrder( + RendererPreferencesSubpixelRenderingEnum subpixel) { + switch (subpixel) { + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_SYSTEM_DEFAULT: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_NONE: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_RGB: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VRGB: + return SkFontHost::kRGB_LCDOrder; + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_BGR: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VBGR: + return SkFontHost::kBGR_LCDOrder; + default: + NOTREACHED(); + return SkFontHost::kRGB_LCDOrder; + } +} + +static SkFontHost::LCDOrientation + RendererPreferencesToSkiaLCDOrientation( + RendererPreferencesSubpixelRenderingEnum subpixel) { + switch (subpixel) { + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_SYSTEM_DEFAULT: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_NONE: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_RGB: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_BGR: + return SkFontHost::kHorizontal_LCDOrientation; + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VRGB: + case RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VBGR: + return SkFontHost::kVertical_LCDOrientation; + default: + NOTREACHED(); + return SkFontHost::kHorizontal_LCDOrientation; + } +} + +static bool RendererPreferencesToAntiAliasFlag( + const RendererPreferences& prefs) { + return prefs.should_antialias_text; +} + +static bool RendererPreferencesToSubpixelGlyphsFlag( + const RendererPreferences& prefs) { + if (prefs.subpixel_rendering != + RENDERER_PREFERENCES_SUBPIXEL_RENDERING_SYSTEM_DEFAULT && + prefs.subpixel_rendering != + RENDERER_PREFERENCES_SUBPIXEL_RENDERING_NONE) { + return true; + } + + return false; +} + +void RenderView::UpdateFontRenderingFromRendererPrefs() { + const RendererPreferences& prefs = renderer_preferences_; + WebFontRendering::setHinting( + RendererPreferencesToSkiaHinting(prefs.hinting)); + WebFontRendering::setLCDOrder( + RendererPreferencesToSkiaLCDOrder(prefs.subpixel_rendering)); + WebFontRendering::setLCDOrientation( + RendererPreferencesToSkiaLCDOrientation(prefs.subpixel_rendering)); + WebFontRendering::setAntiAlias(RendererPreferencesToAntiAliasFlag(prefs)); + WebFontRendering::setSubpixelGlyphs( + RendererPreferencesToSubpixelGlyphsFlag(prefs)); +} |