Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(351)

Side by Side Diff: gfx/canvas_skia_linux.cc

Issue 5158006: Convert SizeStringInt from taking a wstring to a string16. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mac Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gfx/canvas_skia.h ('k') | gfx/canvas_skia_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gfx/canvas_skia.h" 5 #include "gfx/canvas_skia.h"
6 6
7 #include <cairo/cairo.h> 7 #include <cairo/cairo.h>
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 #include <pango/pango.h> 9 #include <pango/pango.h>
10 #include <pango/pangocairo.h> 10 #include <pango/pangocairo.h>
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 83 }
84 84
85 if (hint_style) 85 if (hint_style)
86 g_free(hint_style); 86 g_free(hint_style);
87 if (rgba_style) 87 if (rgba_style)
88 g_free(rgba_style); 88 g_free(rgba_style);
89 } 89 }
90 90
91 // Pass a width > 0 to force wrapping and elliding. 91 // Pass a width > 0 to force wrapping and elliding.
92 static void SetupPangoLayout(PangoLayout* layout, 92 static void SetupPangoLayout(PangoLayout* layout,
93 const std::wstring& text, 93 const string16& text,
94 const gfx::Font& font, 94 const gfx::Font& font,
95 int width, 95 int width,
96 int flags) { 96 int flags) {
97 if (!cairo_font_options) 97 if (!cairo_font_options)
98 UpdateCairoFontOptions(); 98 UpdateCairoFontOptions();
99 // This needs to be done early on; it has no effect when called just before 99 // This needs to be done early on; it has no effect when called just before
100 // pango_cairo_show_layout(). 100 // pango_cairo_show_layout().
101 pango_cairo_context_set_font_options( 101 pango_cairo_context_set_font_options(
102 pango_layout_get_context(layout), cairo_font_options); 102 pango_layout_get_context(layout), cairo_font_options);
103 103
(...skipping 29 matching lines...) Expand all
133 if (resolution > 0) { 133 if (resolution > 0) {
134 pango_cairo_context_set_resolution(pango_layout_get_context(layout), 134 pango_cairo_context_set_resolution(pango_layout_get_context(layout),
135 resolution); 135 resolution);
136 } 136 }
137 137
138 PangoFontDescription* desc = font.GetNativeFont(); 138 PangoFontDescription* desc = font.GetNativeFont();
139 pango_layout_set_font_description(layout, desc); 139 pango_layout_set_font_description(layout, desc);
140 pango_font_description_free(desc); 140 pango_font_description_free(desc);
141 141
142 // Set text and accelerator character if needed. 142 // Set text and accelerator character if needed.
143 std::string utf8 = WideToUTF8(text); 143 std::string utf8 = UTF16ToUTF8(text);
144 if (flags & gfx::Canvas::SHOW_PREFIX) { 144 if (flags & gfx::Canvas::SHOW_PREFIX) {
145 // Escape the text string to be used as markup. 145 // Escape the text string to be used as markup.
146 gchar* escaped_text = g_markup_escape_text(utf8.c_str(), utf8.size()); 146 gchar* escaped_text = g_markup_escape_text(utf8.c_str(), utf8.size());
147 pango_layout_set_markup_with_accel(layout, 147 pango_layout_set_markup_with_accel(layout,
148 escaped_text, 148 escaped_text,
149 strlen(escaped_text), 149 strlen(escaped_text),
150 kAcceleratorChar, NULL); 150 kAcceleratorChar, NULL);
151 g_free(escaped_text); 151 g_free(escaped_text);
152 } else if (flags & gfx::Canvas::HIDE_PREFIX) { 152 } else if (flags & gfx::Canvas::HIDE_PREFIX) {
153 // Remove the ampersand character. 153 // Remove the ampersand character.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 layout_(NULL), 204 layout_(NULL),
205 text_x_(bounds.x()), 205 text_x_(bounds.x()),
206 text_y_(bounds.y()), 206 text_y_(bounds.y()),
207 text_width_(0), 207 text_width_(0),
208 text_height_(0) { 208 text_height_(0) {
209 DCHECK(!bounds_.IsEmpty()); 209 DCHECK(!bounds_.IsEmpty());
210 210
211 cr_ = canvas_->beginPlatformPaint(); 211 cr_ = canvas_->beginPlatformPaint();
212 layout_ = pango_cairo_create_layout(cr_); 212 layout_ = pango_cairo_create_layout(cr_);
213 213
214 SetupPangoLayout(layout_, text, font, bounds_.width(), flags_); 214 SetupPangoLayout(layout_, WideToUTF16Hack(text), font, bounds_.width(),
215 flags_);
215 216
216 pango_layout_set_height(layout_, bounds_.height() * PANGO_SCALE); 217 pango_layout_set_height(layout_, bounds_.height() * PANGO_SCALE);
217 218
218 cairo_save(cr_); 219 cairo_save(cr_);
219 220
220 cairo_rectangle(cr_, clip.x(), clip.y(), clip.width(), clip.height()); 221 cairo_rectangle(cr_, clip.x(), clip.y(), clip.width(), clip.height());
221 cairo_clip(cr_); 222 cairo_clip(cr_);
222 223
223 pango_layout_get_pixel_size(layout_, &text_width_, &text_height_); 224 pango_layout_get_pixel_size(layout_, &text_width_, &text_height_);
224 225
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 : skia::PlatformCanvas(width, height, is_opaque) { 303 : skia::PlatformCanvas(width, height, is_opaque) {
303 } 304 }
304 305
305 CanvasSkia::CanvasSkia() : skia::PlatformCanvas() { 306 CanvasSkia::CanvasSkia() : skia::PlatformCanvas() {
306 } 307 }
307 308
308 CanvasSkia::~CanvasSkia() { 309 CanvasSkia::~CanvasSkia() {
309 } 310 }
310 311
311 // static 312 // static
312 void CanvasSkia::SizeStringInt(const std::wstring& text, 313 void CanvasSkia::SizeStringInt(const string16& text,
313 const gfx::Font& font, 314 const gfx::Font& font,
314 int* width, int* height, 315 int* width, int* height,
315 int flags) { 316 int flags) {
316 int org_width = *width; 317 int org_width = *width;
317 cairo_surface_t* surface = 318 cairo_surface_t* surface =
318 cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0); 319 cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0);
319 cairo_t* cr = cairo_create(surface); 320 cairo_t* cr = cairo_create(surface);
320 PangoLayout* layout = pango_cairo_create_layout(cr); 321 PangoLayout* layout = pango_cairo_create_layout(cr);
321 322
322 SetupPangoLayout(layout, text, font, *width, flags); 323 SetupPangoLayout(layout, text, font, *width, flags);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 NOTREACHED(); 378 NOTREACHED();
378 return; 379 return;
379 } 380 }
380 381
381 cairo_t* cr = beginPlatformPaint(); 382 cairo_t* cr = beginPlatformPaint();
382 gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y); 383 gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y);
383 cairo_paint(cr); 384 cairo_paint(cr);
384 } 385 }
385 386
386 } // namespace gfx 387 } // namespace gfx
OLDNEW
« no previous file with comments | « gfx/canvas_skia.h ('k') | gfx/canvas_skia_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698