OLD | NEW |
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 | |
OLD | NEW |