Home | History | Annotate | Download | only in gfx
      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 "ui/gfx/platform_font.h"
     10 
     11 namespace gfx {
     12 
     13 class PlatformFontMac : public PlatformFont {
     14  public:
     15   PlatformFontMac();
     16   explicit PlatformFontMac(NativeFont native_font);
     17   PlatformFontMac(const std::string& font_name,
     18                   int font_size);
     19 
     20   // Overridden from PlatformFont:
     21   virtual Font DeriveFont(int size_delta, int style) const OVERRIDE;
     22   virtual int GetHeight() const OVERRIDE;
     23   virtual int GetBaseline() const OVERRIDE;
     24   virtual int GetAverageCharacterWidth() const OVERRIDE;
     25   virtual int GetStringWidth(const base::string16& text) const OVERRIDE;
     26   virtual int GetExpectedTextWidth(int length) const OVERRIDE;
     27   virtual int GetStyle() const OVERRIDE;
     28   virtual std::string GetFontName() const OVERRIDE;
     29   virtual int GetFontSize() const OVERRIDE;
     30   virtual NativeFont GetNativeFont() const OVERRIDE;
     31 
     32  private:
     33   PlatformFontMac(const std::string& font_name, int font_size, int style);
     34   virtual ~PlatformFontMac() {}
     35 
     36   // Initialize the object with the specified parameters.
     37   void InitWithNameSizeAndStyle(const std::string& font_name,
     38                                 int font_size,
     39                                 int style);
     40 
     41   // Calculate and cache the font metrics.
     42   void CalculateMetrics();
     43 
     44   std::string font_name_;
     45   int font_size_;
     46   int style_;
     47 
     48   // Cached metrics, generated at construction.
     49   int height_;
     50   int ascent_;
     51   int average_width_;
     52 
     53   DISALLOW_COPY_AND_ASSIGN(PlatformFontMac);
     54 };
     55 
     56 }  // namespace gfx
     57 
     58 #endif  // UI_GFX_PLATFORM_FONT_MAC_H_
     59