diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-13 16:43:03 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-13 16:43:03 +0000 |
commit | c6ac841f51c0b884b38e917ac30b1dfde0dc43a7 (patch) | |
tree | 2b490ffa6795f72e7232d658b766785f0de64e38 /gfx/font_mac.mm | |
parent | 6b32b95cff99ee72fd7824237ae5070263e5c496 (diff) | |
download | chromium_src-c6ac841f51c0b884b38e917ac30b1dfde0dc43a7.zip chromium_src-c6ac841f51c0b884b38e917ac30b1dfde0dc43a7.tar.gz chromium_src-c6ac841f51c0b884b38e917ac30b1dfde0dc43a7.tar.bz2 |
Rework gfx::Font by moving platform-specific code into inner classes.
gfx::Font is a platform-neutral API shim that exists as a wrapper object to allow for the creation and lifetime of gfx::Font objects to remain consistent with past usage.
gfx::PlatformFont is an interface implemented by the platform-specific inner classes (gfx::PlatformFontWin,Mac,Gtk).
BUG=none
TEST=existing unittests
Review URL: http://codereview.chromium.org/3083022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56040 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gfx/font_mac.mm')
-rw-r--r-- | gfx/font_mac.mm | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/gfx/font_mac.mm b/gfx/font_mac.mm deleted file mode 100644 index e569a35..0000000 --- a/gfx/font_mac.mm +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "gfx/font.h" - -#include <Cocoa/Cocoa.h> - -#include "base/logging.h" -#include "base/scoped_nsobject.h" -#include "base/sys_string_conversions.h" -#include "gfx/canvas_skia.h" - -namespace gfx { - -// static -Font Font::CreateFont(const std::wstring& font_name, int font_size) { - return Font(font_name, font_size, NORMAL); -} - -Font::Font(const std::wstring& font_name, int font_size, int style) - : font_name_(font_name), - font_size_(font_size), - style_(style) { - calculateMetrics(); -} - -Font::Font() - : font_size_([NSFont systemFontSize]), - style_(NORMAL) { - NSFont* system_font = [NSFont systemFontOfSize:font_size_]; - font_name_ = base::SysNSStringToWide([system_font fontName]); - calculateMetrics(); -} - -void Font::calculateMetrics() { - NSFont* font = nativeFont(); - scoped_nsobject<NSLayoutManager> layout_manager( - [[NSLayoutManager alloc] init]); - height_ = [layout_manager defaultLineHeightForFont:font]; - ascent_ = [font ascender]; - avg_width_ = [font boundingRectForGlyph:[font glyphWithName:@"x"]].size.width; -} - -Font Font::DeriveFont(int size_delta, int style) const { - return Font(font_name_, font_size_ + size_delta, style); -} - -int Font::height() const { - return height_; -} - -int Font::baseline() const { - return ascent_; -} - -int Font::ave_char_width() const { - return avg_width_; -} - -int Font::GetStringWidth(const std::wstring& text) const { - int width = 0, height = 0; - CanvasSkia::SizeStringInt(text, *this, &width, &height, - gfx::Canvas::NO_ELLIPSIS); - return width; -} - -int Font::GetExpectedTextWidth(int length) const { - return length * avg_width_; -} - -int Font::style() const { - return style_; -} - -const std::wstring& Font::FontName() const { - return font_name_; -} - -int Font::FontSize() { - return font_size_; -} - -NativeFont Font::nativeFont() const { - // TODO(pinkerton): apply |style_| to font. http://crbug.com/34667 - // We could cache this, but then we'd have to conditionally change the - // dtor just for MacOS. Not sure if we want to/need to do that. - return [NSFont fontWithName:base::SysWideToNSString(font_name_) - size:font_size_]; -} - -} // namespace gfx |