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_IOS_H_
6#define UI_GFX_PLATFORM_FONT_IOS_H_
7
8#include "ui/gfx/platform_font.h"
9
10namespace gfx {
11
12class PlatformFontIOS : public PlatformFont {
13 public:
14  PlatformFontIOS();
15  explicit PlatformFontIOS(NativeFont native_font);
16  PlatformFontIOS(const std::string& font_name,
17                  int font_size);
18
19  // Overridden from PlatformFont:
20  virtual Font DeriveFont(int size_delta, int style) const OVERRIDE;
21  virtual int GetHeight() const OVERRIDE;
22  virtual int GetBaseline() const OVERRIDE;
23  virtual int GetCapHeight() const OVERRIDE;
24  virtual int GetExpectedTextWidth(int length) const OVERRIDE;
25  virtual int GetStyle() const OVERRIDE;
26  virtual std::string GetFontName() const OVERRIDE;
27  virtual std::string GetActualFontNameForTesting() const OVERRIDE;
28  virtual int GetFontSize() const OVERRIDE;
29  virtual const FontRenderParams& GetFontRenderParams() const OVERRIDE;
30  virtual NativeFont GetNativeFont() const OVERRIDE;
31
32 private:
33  PlatformFontIOS(const std::string& font_name, int font_size, int style);
34  virtual ~PlatformFontIOS() {}
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 cap_height_;
52  int average_width_;
53
54  DISALLOW_COPY_AND_ASSIGN(PlatformFontIOS);
55};
56
57}  // namespace gfx
58
59#endif  // UI_GFX_PLATFORM_FONT_IOS_H_
60