| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef UI_GFX_PLATFORM_FONT_PANGO_H_ | 5 #ifndef UI_GFX_PLATFORM_FONT_PANGO_H_ |
| 6 #define UI_GFX_PLATFORM_FONT_PANGO_H_ | 6 #define UI_GFX_PLATFORM_FONT_PANGO_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "skia/ext/refptr.h" | 12 #include "skia/ext/refptr.h" |
| 13 #include "third_party/skia/include/core/SkRefCnt.h" | 13 #include "third_party/skia/include/core/SkRefCnt.h" |
| 14 #include "ui/gfx/font_render_params.h" |
| 14 #include "ui/gfx/platform_font.h" | 15 #include "ui/gfx/platform_font.h" |
| 15 | 16 |
| 16 class SkTypeface; | 17 class SkTypeface; |
| 17 class SkPaint; | 18 class SkPaint; |
| 18 | 19 |
| 19 namespace gfx { | 20 namespace gfx { |
| 20 | 21 |
| 21 class GFX_EXPORT PlatformFontPango : public PlatformFont { | 22 class GFX_EXPORT PlatformFontPango : public PlatformFont { |
| 22 public: | 23 public: |
| 23 PlatformFontPango(); | 24 PlatformFontPango(); |
| 24 explicit PlatformFontPango(NativeFont native_font); | 25 explicit PlatformFontPango(NativeFont native_font); |
| 25 PlatformFontPango(const std::string& font_name, int font_size); | 26 PlatformFontPango(const std::string& font_name, int font_size_pixels); |
| 26 | 27 |
| 27 // Converts |gfx_font| to a new pango font. Free the returned font with | 28 // Converts |gfx_font| to a new pango font. Free the returned font with |
| 28 // pango_font_description_free(). | 29 // pango_font_description_free(). |
| 29 static PangoFontDescription* PangoFontFromGfxFont(const gfx::Font& gfx_font); | 30 static PangoFontDescription* PangoFontFromGfxFont(const gfx::Font& gfx_font); |
| 30 | 31 |
| 31 // Resets and reloads the cached system font used by the default constructor. | 32 // Resets and reloads the cached system font used by the default constructor. |
| 32 // This function is useful when the system font has changed, for example, when | 33 // This function is useful when the system font has changed, for example, when |
| 33 // the locale has changed. | 34 // the locale has changed. |
| 34 static void ReloadDefaultFont(); | 35 static void ReloadDefaultFont(); |
| 35 | 36 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 48 // Overridden from PlatformFont: | 49 // Overridden from PlatformFont: |
| 49 virtual Font DeriveFont(int size_delta, int style) const OVERRIDE; | 50 virtual Font DeriveFont(int size_delta, int style) const OVERRIDE; |
| 50 virtual int GetHeight() const OVERRIDE; | 51 virtual int GetHeight() const OVERRIDE; |
| 51 virtual int GetBaseline() const OVERRIDE; | 52 virtual int GetBaseline() const OVERRIDE; |
| 52 virtual int GetCapHeight() const OVERRIDE; | 53 virtual int GetCapHeight() const OVERRIDE; |
| 53 virtual int GetExpectedTextWidth(int length) const OVERRIDE; | 54 virtual int GetExpectedTextWidth(int length) const OVERRIDE; |
| 54 virtual int GetStyle() const OVERRIDE; | 55 virtual int GetStyle() const OVERRIDE; |
| 55 virtual std::string GetFontName() const OVERRIDE; | 56 virtual std::string GetFontName() const OVERRIDE; |
| 56 virtual std::string GetActualFontNameForTesting() const OVERRIDE; | 57 virtual std::string GetActualFontNameForTesting() const OVERRIDE; |
| 57 virtual int GetFontSize() const OVERRIDE; | 58 virtual int GetFontSize() const OVERRIDE; |
| 59 virtual const FontRenderParams& GetFontRenderParams() const OVERRIDE; |
| 58 virtual NativeFont GetNativeFont() const OVERRIDE; | 60 virtual NativeFont GetNativeFont() const OVERRIDE; |
| 59 | 61 |
| 60 private: | 62 private: |
| 61 // Create a new instance of this object with the specified properties. Called | 63 // Create a new instance of this object with the specified properties. Called |
| 62 // from DeriveFont. | 64 // from DeriveFont. |
| 63 PlatformFontPango(const skia::RefPtr<SkTypeface>& typeface, | 65 PlatformFontPango(const skia::RefPtr<SkTypeface>& typeface, |
| 64 const std::string& name, | 66 const std::string& name, |
| 65 int size, | 67 int size_pixels, |
| 66 int style); | 68 int style, |
| 69 const FontRenderParams& params); |
| 67 virtual ~PlatformFontPango(); | 70 virtual ~PlatformFontPango(); |
| 68 | 71 |
| 69 // Initializes this object based on the passed-in details. If |typeface| is | 72 // Initializes this object based on the passed-in details. If |typeface| is |
| 70 // empty, a new typeface will be loaded. | 73 // empty, a new typeface will be loaded. |
| 71 void InitFromDetails( | 74 void InitFromDetails( |
| 72 const skia::RefPtr<SkTypeface>& typeface, | 75 const skia::RefPtr<SkTypeface>& typeface, |
| 73 const std::string& font_family, | 76 const std::string& font_family, |
| 74 int font_size, | 77 int font_size_pixels, |
| 75 int style); | 78 int style, |
| 79 const FontRenderParams& params); |
| 76 | 80 |
| 77 // Initializes this object as a copy of another PlatformFontPango. | 81 // Initializes this object as a copy of another PlatformFontPango. |
| 78 void InitFromPlatformFont(const PlatformFontPango* other); | 82 void InitFromPlatformFont(const PlatformFontPango* other); |
| 79 | 83 |
| 80 // Potentially slow call to get pango metrics (average width, underline info). | 84 // Potentially slow call to get pango metrics (average width, underline info). |
| 81 void InitPangoMetrics(); | 85 void InitPangoMetrics(); |
| 82 | 86 |
| 83 // Setup a Skia context to use the current typeface. | 87 // Setup a Skia context to use the current typeface. |
| 84 void PaintSetup(SkPaint* paint) const; | 88 void PaintSetup(SkPaint* paint) const; |
| 85 | 89 |
| 86 // Make |this| a copy of |other|. | 90 // Make |this| a copy of |other|. |
| 87 void CopyFont(const Font& other); | 91 void CopyFont(const Font& other); |
| 88 | 92 |
| 89 // The average width of a character, initialized and cached if needed. | 93 // The average width of a character, initialized and cached if needed. |
| 90 double GetAverageWidth() const; | 94 double GetAverageWidth() const; |
| 91 | 95 |
| 92 skia::RefPtr<SkTypeface> typeface_; | 96 skia::RefPtr<SkTypeface> typeface_; |
| 93 | 97 |
| 94 // Additional information about the face | 98 // Additional information about the face. |
| 95 // Skia actually expects a family name and not a font name. | 99 // Skia actually expects a family name and not a font name. |
| 96 std::string font_family_; | 100 std::string font_family_; |
| 97 int font_size_pixels_; | 101 int font_size_pixels_; |
| 98 int style_; | 102 int style_; |
| 99 | 103 |
| 104 // Information describing how the font should be rendered. |
| 105 FontRenderParams font_render_params_; |
| 106 |
| 100 // Cached metrics, generated at construction. | 107 // Cached metrics, generated at construction. |
| 101 int ascent_pixels_; | 108 int ascent_pixels_; |
| 102 int height_pixels_; | 109 int height_pixels_; |
| 103 int cap_height_pixels_; | 110 int cap_height_pixels_; |
| 104 | 111 |
| 105 // The pango metrics are much more expensive so we wait until we need them | 112 // The pango metrics are much more expensive so we wait until we need them |
| 106 // to compute them. | 113 // to compute them. |
| 107 bool pango_metrics_inited_; | 114 bool pango_metrics_inited_; |
| 108 double average_width_pixels_; | 115 double average_width_pixels_; |
| 109 double underline_position_pixels_; | 116 double underline_position_pixels_; |
| 110 double underline_thickness_pixels_; | 117 double underline_thickness_pixels_; |
| 111 | 118 |
| 112 // The default font, used for the default constructor. | 119 // The default font, used for the default constructor. |
| 113 static Font* default_font_; | 120 static Font* default_font_; |
| 114 | 121 |
| 115 #if defined(OS_CHROMEOS) | 122 #if defined(OS_CHROMEOS) |
| 116 static std::string* default_font_description_; | 123 static std::string* default_font_description_; |
| 117 #endif | 124 #endif |
| 118 | 125 |
| 119 DISALLOW_COPY_AND_ASSIGN(PlatformFontPango); | 126 DISALLOW_COPY_AND_ASSIGN(PlatformFontPango); |
| 120 }; | 127 }; |
| 121 | 128 |
| 122 } // namespace gfx | 129 } // namespace gfx |
| 123 | 130 |
| 124 #endif // UI_GFX_PLATFORM_FONT_PANGO_H_ | 131 #endif // UI_GFX_PLATFORM_FONT_PANGO_H_ |
| OLD | NEW |