| Index: ui/gfx/pango_util.cc
|
| diff --git a/ui/gfx/pango_util.cc b/ui/gfx/pango_util.cc
|
| index 638f77c603982fe366d9f28ac9f126be80f8dd72..b3e102e6b85d0eef694a680597638018d73dd263 100644
|
| --- a/ui/gfx/pango_util.cc
|
| +++ b/ui/gfx/pango_util.cc
|
| @@ -27,6 +27,8 @@
|
| #include <gdk/gdk.h>
|
| #endif
|
|
|
| +namespace gfx {
|
| +
|
| namespace {
|
|
|
| // Marker for accelerators in the text.
|
| @@ -49,23 +51,23 @@ cairo_font_options_t* GetCairoFontOptions() {
|
|
|
| cairo_font_options = cairo_font_options_create();
|
|
|
| - const gfx::FontRenderParams& params = gfx::GetDefaultFontRenderParams();
|
| - gfx::FontRenderParams::SubpixelRendering subpixel = params.subpixel_rendering;
|
| + const FontRenderParams& params = GetDefaultFontRenderParams();
|
| + FontRenderParams::SubpixelRendering subpixel = params.subpixel_rendering;
|
| if (!params.antialiasing) {
|
| cairo_font_options_set_antialias(cairo_font_options, CAIRO_ANTIALIAS_NONE);
|
| - } else if (subpixel == gfx::FontRenderParams::SUBPIXEL_RENDERING_NONE) {
|
| + } else if (subpixel == FontRenderParams::SUBPIXEL_RENDERING_NONE) {
|
| cairo_font_options_set_antialias(cairo_font_options, CAIRO_ANTIALIAS_GRAY);
|
| } else {
|
| cairo_font_options_set_antialias(cairo_font_options,
|
| CAIRO_ANTIALIAS_SUBPIXEL);
|
| cairo_subpixel_order_t cairo_subpixel_order = CAIRO_SUBPIXEL_ORDER_DEFAULT;
|
| - if (subpixel == gfx::FontRenderParams::SUBPIXEL_RENDERING_RGB)
|
| + if (subpixel == FontRenderParams::SUBPIXEL_RENDERING_RGB)
|
| cairo_subpixel_order = CAIRO_SUBPIXEL_ORDER_RGB;
|
| - else if (subpixel == gfx::FontRenderParams::SUBPIXEL_RENDERING_BGR)
|
| + else if (subpixel == FontRenderParams::SUBPIXEL_RENDERING_BGR)
|
| cairo_subpixel_order = CAIRO_SUBPIXEL_ORDER_BGR;
|
| - else if (subpixel == gfx::FontRenderParams::SUBPIXEL_RENDERING_VRGB)
|
| + else if (subpixel == FontRenderParams::SUBPIXEL_RENDERING_VRGB)
|
| cairo_subpixel_order = CAIRO_SUBPIXEL_ORDER_VRGB;
|
| - else if (subpixel == gfx::FontRenderParams::SUBPIXEL_RENDERING_VBGR)
|
| + else if (subpixel == FontRenderParams::SUBPIXEL_RENDERING_VBGR)
|
| cairo_subpixel_order = CAIRO_SUBPIXEL_ORDER_VBGR;
|
| else
|
| NOTREACHED() << "Unhandled subpixel rendering type " << subpixel;
|
| @@ -73,7 +75,7 @@ cairo_font_options_t* GetCairoFontOptions() {
|
| cairo_subpixel_order);
|
| }
|
|
|
| - if (params.hinting == gfx::FontRenderParams::HINTING_NONE ||
|
| + if (params.hinting == FontRenderParams::HINTING_NONE ||
|
| params.subpixel_positioning) {
|
| cairo_font_options_set_hint_style(cairo_font_options,
|
| CAIRO_HINT_STYLE_NONE);
|
| @@ -81,11 +83,11 @@ cairo_font_options_t* GetCairoFontOptions() {
|
| CAIRO_HINT_METRICS_OFF);
|
| } else {
|
| cairo_hint_style_t cairo_hint_style = CAIRO_HINT_STYLE_DEFAULT;
|
| - if (params.hinting == gfx::FontRenderParams::HINTING_SLIGHT)
|
| + if (params.hinting == FontRenderParams::HINTING_SLIGHT)
|
| cairo_hint_style = CAIRO_HINT_STYLE_SLIGHT;
|
| - else if (params.hinting == gfx::FontRenderParams::HINTING_MEDIUM)
|
| + else if (params.hinting == FontRenderParams::HINTING_MEDIUM)
|
| cairo_hint_style = CAIRO_HINT_STYLE_MEDIUM;
|
| - else if (params.hinting == gfx::FontRenderParams::HINTING_FULL)
|
| + else if (params.hinting == FontRenderParams::HINTING_FULL)
|
| cairo_hint_style = CAIRO_HINT_STYLE_FULL;
|
| else
|
| NOTREACHED() << "Unhandled hinting style " << params.hinting;
|
| @@ -108,7 +110,7 @@ float GetPixelsInPoint() {
|
| // http://goo.gl/UIh5m: "This is a scale factor between points specified in
|
| // a PangoFontDescription and Cairo units. The default value is 96, meaning
|
| // that a 10 point font will be 13 units high. (10 * 96. / 72. = 13.3)."
|
| - double pango_dpi = gfx::GetPangoResolution();
|
| + double pango_dpi = GetPangoResolution();
|
| if (pango_dpi <= 0)
|
| pango_dpi = 96.0;
|
| pixels_in_point = pango_dpi / 72.0; // 72 points in an inch
|
| @@ -120,8 +122,6 @@ float GetPixelsInPoint() {
|
|
|
| } // namespace
|
|
|
| -namespace gfx {
|
| -
|
| PangoContext* GetPangoContext() {
|
| #if defined(USE_AURA)
|
| PangoFontMap* font_map = pango_cairo_font_map_get_default();
|
| @@ -153,7 +153,6 @@ void DrawTextOntoCairoSurface(cairo_t* cr,
|
| PangoLayout* layout = pango_cairo_create_layout(cr);
|
| base::i18n::TextDirection text_direction =
|
| base::i18n::GetFirstStrongCharacterDirection(text);
|
| - Rect text_rect(bounds.x(), bounds.y(), 0, 0);
|
| DCHECK(!bounds.IsEmpty());
|
|
|
| gfx::SetupPangoLayout(
|
| @@ -165,7 +164,11 @@ void DrawTextOntoCairoSurface(cairo_t* cr,
|
| cairo_rectangle(cr, clip.x(), clip.y(), clip.width(), clip.height());
|
| cairo_clip(cr);
|
|
|
| - AdjustTextRectBasedOnLayout(layout, bounds, flags, &text_rect);
|
| + int width = 0, height = 0;
|
| + pango_layout_get_pixel_size(layout, &width, &height);
|
| + Rect text_rect(bounds.x(), bounds.y(), width, height);
|
| + // Vertically center |text_rect| in |bounds|.
|
| + text_rect.Offset(0, (bounds.height() - text_rect.height()) / 2);
|
|
|
| DrawPangoLayout(cr, layout, font, bounds, text_rect,
|
| text_color, text_direction, flags);
|
| @@ -301,26 +304,6 @@ void SetupPangoLayoutWithFontDescription(
|
| pango_layout_set_font_description(layout, desc.get());
|
| }
|
|
|
| -void AdjustTextRectBasedOnLayout(PangoLayout* layout,
|
| - const gfx::Rect& bounds,
|
| - int flags,
|
| - gfx::Rect* text_rect) {
|
| - int text_width, text_height;
|
| - pango_layout_get_pixel_size(layout, &text_width, &text_height);
|
| - text_rect->set_width(text_width);
|
| - text_rect->set_height(text_height);
|
| -
|
| - if (flags & gfx::Canvas::TEXT_VALIGN_TOP) {
|
| - // Cairo should draw from the top left corner already.
|
| - } else if (flags & gfx::Canvas::TEXT_VALIGN_BOTTOM) {
|
| - text_rect->set_y(text_rect->y() + bounds.height() - text_rect->height());
|
| - } else {
|
| - // Vertically centered.
|
| - text_rect->set_y(text_rect->y() +
|
| - ((bounds.height() - text_rect->height()) / 2));
|
| - }
|
| -}
|
| -
|
| void DrawPangoLayout(cairo_t* cr,
|
| PangoLayout* layout,
|
| const Font& font,
|
|
|