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

Side by Side Diff: ui/gfx/canvas_skia_linux.cc

Issue 6879013: skia::PlatformCanvas is being deprecated. Going forward we will use gfx::Canvas wherever we need ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 8 months 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 | « ui/gfx/canvas_skia.cc ('k') | ui/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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "ui/gfx/canvas_skia.h" 5 #include "ui/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>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "ui/gfx/blit.h"
14 #include "ui/gfx/font.h" 15 #include "ui/gfx/font.h"
15 #include "ui/gfx/gtk_util.h" 16 #include "ui/gfx/gtk_util.h"
16 #include "ui/gfx/platform_font_gtk.h" 17 #include "ui/gfx/platform_font_gtk.h"
17 #include "ui/gfx/rect.h" 18 #include "ui/gfx/rect.h"
18 19
19 namespace { 20 namespace {
20 21
21 const gunichar kAcceleratorChar = '&'; 22 const gunichar kAcceleratorChar = '&';
22 23
23 // Font settings that we initialize once and then use when drawing text in 24 // Font settings that we initialize once and then use when drawing text in
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 font_(font), 202 font_(font),
202 canvas_(canvas), 203 canvas_(canvas),
203 cr_(NULL), 204 cr_(NULL),
204 layout_(NULL), 205 layout_(NULL),
205 text_x_(bounds.x()), 206 text_x_(bounds.x()),
206 text_y_(bounds.y()), 207 text_y_(bounds.y()),
207 text_width_(0), 208 text_width_(0),
208 text_height_(0) { 209 text_height_(0) {
209 DCHECK(!bounds_.IsEmpty()); 210 DCHECK(!bounds_.IsEmpty());
210 211
211 cr_ = canvas_->beginPlatformPaint(); 212 cr_ = canvas_->BeginPlatformPaint();
212 layout_ = pango_cairo_create_layout(cr_); 213 layout_ = pango_cairo_create_layout(cr_);
213 214
214 SetupPangoLayout(layout_, text, font, bounds_.width(), flags_); 215 SetupPangoLayout(layout_, text, font, bounds_.width(), 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_);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 SkColorGetR(text_color) / 255.0, 256 SkColorGetR(text_color) / 255.0,
256 SkColorGetG(text_color) / 255.0, 257 SkColorGetG(text_color) / 255.0,
257 SkColorGetB(text_color) / 255.0, 258 SkColorGetB(text_color) / 255.0,
258 SkColorGetA(text_color) / 255.0); 259 SkColorGetA(text_color) / 255.0);
259 cairo_move_to(cr_, text_x_, text_y_); 260 cairo_move_to(cr_, text_x_, text_y_);
260 pango_cairo_show_layout(cr_, layout_); 261 pango_cairo_show_layout(cr_, layout_);
261 } 262 }
262 263
263 void DrawStringContext::DrawWithHalo(const SkColor& text_color, 264 void DrawStringContext::DrawWithHalo(const SkColor& text_color,
264 const SkColor& halo_color) { 265 const SkColor& halo_color) {
265 gfx::CanvasSkia text_canvas(bounds_.width() + 2, bounds_.height() + 2, false); 266 gfx::CanvasSkia text_canvas;
267 text_canvas.Init(bounds_.width() + 2, bounds_.height() + 2, false);
266 text_canvas.FillRectInt(static_cast<SkColor>(0), 268 text_canvas.FillRectInt(static_cast<SkColor>(0),
267 0, 0, bounds_.width() + 2, bounds_.height() + 2); 269 0, 0, bounds_.width() + 2, bounds_.height() + 2);
268 270
269 cairo_t* text_cr = text_canvas.beginPlatformPaint(); 271 cairo_t* text_cr = text_canvas.BeginPlatformPaint();
270 272
271 cairo_move_to(text_cr, 2, 1); 273 cairo_move_to(text_cr, 2, 1);
272 pango_cairo_layout_path(text_cr, layout_); 274 pango_cairo_layout_path(text_cr, layout_);
273 275
274 cairo_set_source_rgba(text_cr, 276 cairo_set_source_rgba(text_cr,
275 SkColorGetR(halo_color) / 255.0, 277 SkColorGetR(halo_color) / 255.0,
276 SkColorGetG(halo_color) / 255.0, 278 SkColorGetG(halo_color) / 255.0,
277 SkColorGetB(halo_color) / 255.0, 279 SkColorGetB(halo_color) / 255.0,
278 SkColorGetA(halo_color) / 255.0); 280 SkColorGetA(halo_color) / 255.0);
279 cairo_set_line_width(text_cr, 2.0); 281 cairo_set_line_width(text_cr, 2.0);
280 cairo_set_line_join(text_cr, CAIRO_LINE_JOIN_ROUND); 282 cairo_set_line_join(text_cr, CAIRO_LINE_JOIN_ROUND);
281 cairo_stroke_preserve(text_cr); 283 cairo_stroke_preserve(text_cr);
282 284
283 cairo_set_operator(text_cr, CAIRO_OPERATOR_SOURCE); 285 cairo_set_operator(text_cr, CAIRO_OPERATOR_SOURCE);
284 cairo_set_source_rgba(text_cr, 286 cairo_set_source_rgba(text_cr,
285 SkColorGetR(text_color) / 255.0, 287 SkColorGetR(text_color) / 255.0,
286 SkColorGetG(text_color) / 255.0, 288 SkColorGetG(text_color) / 255.0,
287 SkColorGetB(text_color) / 255.0, 289 SkColorGetB(text_color) / 255.0,
288 SkColorGetA(text_color) / 255.0); 290 SkColorGetA(text_color) / 255.0);
289 cairo_fill(text_cr); 291 cairo_fill(text_cr);
290 292
291 text_canvas.endPlatformPaint(); 293 text_canvas.EndPlatformPaint();
292 294
293 const SkBitmap& text_bitmap = const_cast<SkBitmap&>( 295 const SkBitmap& text_bitmap = const_cast<SkBitmap&>(
294 text_canvas.getTopPlatformDevice().accessBitmap(false)); 296 text_canvas.skia_canvas()->getTopDevice()->accessBitmap(false));
295 canvas_->DrawBitmapInt(text_bitmap, text_x_ - 1, text_y_ - 1); 297 canvas_->DrawBitmapInt(text_bitmap, text_x_ - 1, text_y_ - 1);
296 } 298 }
297 299
298 } // namespace 300 } // namespace
299 301
300 namespace gfx { 302 namespace gfx {
301 303
302 CanvasSkia::CanvasSkia(int width, int height, bool is_opaque)
303 : skia::PlatformCanvas(width, height, is_opaque) {
304 }
305
306 CanvasSkia::CanvasSkia() : skia::PlatformCanvas() {
307 }
308
309 CanvasSkia::~CanvasSkia() {
310 }
311
312 // static 304 // static
313 void CanvasSkia::SizeStringInt(const string16& text, 305 void CanvasSkia::SizeStringInt(const string16& text,
314 const gfx::Font& font, 306 const gfx::Font& font,
315 int* width, int* height, 307 int* width, int* height,
316 int flags) { 308 int flags) {
317 int org_width = *width; 309 int org_width = *width;
318 cairo_surface_t* surface = 310 cairo_surface_t* surface =
319 cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0); 311 cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 0, 0);
320 cairo_t* cr = cairo_create(surface); 312 cairo_t* cr = cairo_create(surface);
321 PangoLayout* layout = pango_cairo_create_layout(cr); 313 PangoLayout* layout = pango_cairo_create_layout(cr);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 DrawStringContext context(this, text, font, bounds, bounds, flags); 364 DrawStringContext context(this, text, font, bounds, bounds, flags);
373 context.Draw(color); 365 context.Draw(color);
374 } 366 }
375 367
376 void CanvasSkia::DrawGdkPixbuf(GdkPixbuf* pixbuf, int x, int y) { 368 void CanvasSkia::DrawGdkPixbuf(GdkPixbuf* pixbuf, int x, int y) {
377 if (!pixbuf) { 369 if (!pixbuf) {
378 NOTREACHED(); 370 NOTREACHED();
379 return; 371 return;
380 } 372 }
381 373
382 cairo_t* cr = beginPlatformPaint(); 374 cairo_t* cr = BeginPlatformPaint();
383 gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y); 375 gdk_cairo_set_source_pixbuf(cr, pixbuf, x, y);
384 cairo_paint(cr); 376 cairo_paint(cr);
385 } 377 }
386 378
387 ui::TextureID CanvasSkia::GetTextureID() { 379 ui::TextureID CanvasSkia::GetTextureID() {
388 // TODO(wjmaclean) 380 // TODO(wjmaclean)
389 return 0; 381 return 0;
390 } 382 }
391 383
384 void CanvasSkia::BlitToNativeContext(const Rect& src_rect,
385 const Point& dst_origin,
386 NativeDrawingContext dst_context) {
387 BlitContextToContext(
388 dst_context,
389 Rect(dst_origin, src_rect.size()),
390 BeginPlatformPaint(),
391 src_rect.origin());
392 EndPlatformPaint();
393 }
394
392 } // namespace gfx 395 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/canvas_skia.cc ('k') | ui/gfx/canvas_skia_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698