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

Side by Side Diff: skia/ext/vector_canvas_linux.cc

Issue 3590011: Update use of SkCanvas and SkDevice to match change in Skia (Closed)
Patch Set: Bump deps again to bring in fix for memory leak Created 10 years, 2 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
« no previous file with comments | « skia/ext/vector_canvas.cc ('k') | skia/ext/vector_canvas_win.cc » ('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 "skia/ext/vector_canvas.h" 5 #include "skia/ext/vector_canvas.h"
6 6
7 #include "skia/ext/bitmap_platform_device.h"
8 #include "skia/ext/vector_platform_device.h" 7 #include "skia/ext/vector_platform_device.h"
9 8
10 namespace skia { 9 namespace skia {
11 10
12 VectorCanvas::VectorCanvas(cairo_t* context, int width, int height) { 11 VectorCanvas::VectorCanvas(cairo_t* context, int width, int height) {
13 bool initialized = initialize(context, width, height); 12 bool initialized = initialize(context, width, height);
14 13
15 SkASSERT(initialized); 14 SkASSERT(initialized);
16 } 15 }
17 16
18 bool VectorCanvas::initialize(cairo_t* context, int width, int height) { 17 bool VectorCanvas::initialize(cairo_t* context, int width, int height) {
19 SkDevice* device = createPlatformDevice(context, width, height, true); 18 SkDevice* device = SkVectorPlatformDeviceFactory::CreateDevice(context, width,
19 height, true);
20 if (!device) 20 if (!device)
21 return false; 21 return false;
22 22
23 setDevice(device); 23 setDevice(device);
24 device->unref(); // was created with refcount 1, and setDevice also refs 24 device->unref(); // was created with refcount 1, and setDevice also refs
25 return true; 25 return true;
26 } 26 }
27 27
28 SkDevice* VectorCanvas::createDevice(SkBitmap::Config config,
29 int width, int height,
30 bool is_opaque, bool isForLayer) {
31 SkASSERT(config == SkBitmap::kARGB_8888_Config);
32 return createPlatformDevice(NULL, width, height, is_opaque);
33 }
34
35 SkDevice* VectorCanvas::createPlatformDevice(cairo_t* context,
36 int width,
37 int height,
38 bool is_opaque) {
39 // TODO(myhuang): Here we might also have similar issues as those on Windows
40 // (vector_canvas_win.cc, http://crbug.com/18382 & http://crbug.com/18383).
41 // Please note that is_opaque is true when we use this class for printing.
42 // Fallback to bitmap when context is NULL.
43 if (!is_opaque || NULL == context) {
44 return BitmapPlatformDevice::Create(width, height, is_opaque);
45 }
46
47 PlatformDevice* device =
48 VectorPlatformDevice::create(context, width, height);
49 return device;
50 }
51
52 } // namespace skia 28 } // namespace skia
53
OLDNEW
« no previous file with comments | « skia/ext/vector_canvas.cc ('k') | skia/ext/vector_canvas_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698