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