// Copyright (c) 2012 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. #import #include "ui/gfx/canvas_skia.h" #include "base/logging.h" #include "base/sys_string_conversions.h" #include "third_party/skia/include/core/SkTypeface.h" #include "ui/gfx/font.h" // Note: This is a temporary Skia-based implementation of the ui/gfx text // rendering routines for views/aura. It replaces the stale Cocoa-based // implementation. A future |canvas_skia_skia.cc| implementation will supersede // this and the other platform-specific implmenentations. // Most drawing options, such as alignment and multi-line, are not implemented // here. namespace { SkTypeface::Style FontTypefaceStyle(const gfx::Font& font) { int style = 0; if (font.GetStyle() & gfx::Font::BOLD) style |= SkTypeface::kBold; if (font.GetStyle() & gfx::Font::ITALIC) style |= SkTypeface::kItalic; return static_cast(style); } } // namespace namespace gfx { // static void CanvasSkia::SizeStringInt(const string16& text, const gfx::Font& font, int* width, int* height, int flags) { NSFont* native_font = font.GetNativeFont(); NSString* ns_string = base::SysUTF16ToNSString(text); NSDictionary* attributes = [NSDictionary dictionaryWithObject:native_font forKey:NSFontAttributeName]; NSSize string_size = [ns_string sizeWithAttributes:attributes]; *width = string_size.width; *height = font.GetHeight(); } void CanvasSkia::DrawStringInt(const string16& text, const gfx::Font& font, const SkColor& color, int x, int y, int w, int h, int flags) { SkTypeface* typeface = SkTypeface::CreateFromName(font.GetFontName().c_str(), FontTypefaceStyle(font)); SkPaint paint; paint.setTypeface(typeface); typeface->unref(); paint.setColor(color); canvas_->drawText(text.c_str(), text.size() * sizeof(string16::value_type), x, y + h, paint); } void CanvasSkia::DrawStringWithHalo(const string16& text, const gfx::Font& font, const SkColor& text_color, const SkColor& halo_color, int x, int y, int w, int h, int flags) { } } // namespace gfx