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 3 // found in the LICENSE file. 4 5 #ifndef UI_GFX_PLATFORM_FONT_MAC_H_ 6 #define UI_GFX_PLATFORM_FONT_MAC_H_ 7 8 #include "base/compiler_specific.h" 9 #include "base/mac/scoped_nsobject.h" 10 #include "ui/gfx/platform_font.h" 11 12 namespace gfx { 13 14 class PlatformFontMac : public PlatformFont { 15 public: 16 PlatformFontMac(); 17 explicit PlatformFontMac(NativeFont native_font); 18 PlatformFontMac(const std::string& font_name, 19 int font_size); 20 21 // Overridden from PlatformFont: 22 virtual Font DeriveFont(int size_delta, int style) const OVERRIDE; 23 virtual int GetHeight() const OVERRIDE; 24 virtual int GetBaseline() const OVERRIDE; 25 virtual int GetCapHeight() const OVERRIDE; 26 virtual int GetAverageCharacterWidth() const OVERRIDE; 27 virtual int GetStringWidth(const base::string16& text) const OVERRIDE; 28 virtual int GetExpectedTextWidth(int length) const OVERRIDE; 29 virtual int GetStyle() const OVERRIDE; 30 virtual std::string GetFontName() const OVERRIDE; 31 virtual std::string GetActualFontNameForTesting() const OVERRIDE; 32 virtual int GetFontSize() const OVERRIDE; 33 virtual NativeFont GetNativeFont() const OVERRIDE; 34 35 private: 36 PlatformFontMac(const std::string& font_name, int font_size, int font_style); 37 virtual ~PlatformFontMac(); 38 39 // Calculates and caches the font metrics. 40 void CalculateMetrics(); 41 42 // The NSFont instance for this object. If this object was constructed from an 43 // NSFont instance, this holds that NSFont instance. Otherwise this NSFont 44 // instance is constructed from the name, size, and style, and if there is no 45 // active font that matched those criteria, this object may be nil. 46 base::scoped_nsobject<NSFont> native_font_; 47 48 // The name/size/style trio that specify the font. Initialized in the 49 // constructors. 50 std::string font_name_; // Corresponds to -[NSFont fontFamily]. 51 int font_size_; 52 int font_style_; 53 54 // Cached metrics, generated in CalculateMetrics(). 55 int height_; 56 int ascent_; 57 int cap_height_; 58 int average_width_; 59 60 DISALLOW_COPY_AND_ASSIGN(PlatformFontMac); 61 }; 62 63 } // namespace gfx 64 65 #endif // UI_GFX_PLATFORM_FONT_MAC_H_ 66