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

Side by Side Diff: app/gfx/canvas_linux.cc

Issue 338029: Got the about panel to have its text lined up correctly.
Patch Set: Added pango font metrics cache Created 11 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
« no previous file with comments | « no previous file | app/gfx/font.h » ('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 "app/gfx/canvas.h" 5 #include "app/gfx/canvas.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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 SkColorGetR(color) / 255.0, 178 SkColorGetR(color) / 255.0,
179 SkColorGetG(color) / 255.0, 179 SkColorGetG(color) / 255.0,
180 SkColorGetB(color) / 255.0); 180 SkColorGetB(color) / 255.0);
181 181
182 std::string utf8 = WideToUTF8(text); 182 std::string utf8 = WideToUTF8(text);
183 pango_layout_set_text(layout, utf8.data(), utf8.size()); 183 pango_layout_set_text(layout, utf8.data(), utf8.size());
184 184
185 int width, height; 185 int width, height;
186 pango_layout_get_pixel_size(layout, &width, &height); 186 pango_layout_get_pixel_size(layout, &width, &height);
187 187
188 cairo_rectangle(cr, x, y, width, height);
189 cairo_clip(cr);
190
188 if (flags & Canvas::TEXT_VALIGN_TOP) { 191 if (flags & Canvas::TEXT_VALIGN_TOP) {
189 // Cairo should draw from the top left corner already. 192 // Cairo should draw from the top left corner already.
190 } else if (flags & Canvas::TEXT_VALIGN_BOTTOM) { 193 } else if (flags & Canvas::TEXT_VALIGN_BOTTOM) {
191 y += (h - height); 194 y += (h - height);
192 } else { 195 } else {
193 // Vertically centered. 196 // Vertically centered.
194 y += ((h - height) / 2); 197 y += ((h - height) / 2);
195 } 198 }
196 199
197 cairo_rectangle(cr, x, y, w, h);
198 cairo_clip(cr);
199
200 cairo_move_to(cr, x, y); 200 cairo_move_to(cr, x, y);
201 pango_cairo_show_layout(cr, layout); 201 pango_cairo_show_layout(cr, layout);
202 if (font.style() & gfx::Font::UNDERLINED) {
203 double underline_y =
204 static_cast<double>(y) + height + font.underline_position();
205 cairo_set_line_width(cr, font.underline_thickness());
206 cairo_move_to(cr, x, underline_y);
207 cairo_line_to(cr, x + width, underline_y);
208 cairo_stroke(cr);
209 }
202 cairo_restore(cr); 210 cairo_restore(cr);
203 211
204 g_object_unref(layout); 212 g_object_unref(layout);
205 // NOTE: beginPlatformPaint returned its surface, we shouldn't destroy it. 213 // NOTE: beginPlatformPaint returned its surface, we shouldn't destroy it.
206 } 214 }
207 215
208 void Canvas::DrawGdkPixbuf(GdkPixbuf* pixbuf, int x, int y) { 216 void Canvas::DrawGdkPixbuf(GdkPixbuf* pixbuf, int x, int y) {
209 if (!pixbuf) { 217 if (!pixbuf) {
210 NOTREACHED(); 218 NOTREACHED();
211 return; 219 return;
212 } 220 }
213 221
214 cairo_t* cr = beginPlatformPaint(); 222 cairo_t* cr = beginPlatformPaint();
215 gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y); 223 gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y);
216 cairo_paint(cr); 224 cairo_paint(cr);
217 } 225 }
218 226
219 } // namespace gfx 227 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | app/gfx/font.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698