Index: skia/ext/vector_platform_device_linux.cc |
=================================================================== |
--- skia/ext/vector_platform_device_linux.cc (revision 25608) |
+++ skia/ext/vector_platform_device_linux.cc (working copy) |
@@ -4,48 +4,41 @@ |
#include "skia/ext/vector_platform_device.h" |
-// TODO(myhuang): We have to decide or allow the user the choose the type |
-// of the surface in the future. |
-#include <cairo-pdf.h> |
+#include <cairo.h> |
#include "third_party/skia/include/core/SkTypeface.h" |
namespace skia { |
-VectorPlatformDevice* VectorPlatformDevice::create(int width, int height) { |
+VectorPlatformDevice* VectorPlatformDevice::create(PlatformSurface context, |
+ int width, int height) { |
+ SkASSERT(cairo_status(context) == CAIRO_STATUS_SUCCESS); |
SkASSERT(width > 0); |
SkASSERT(height > 0); |
- // TODO(myhuang): Can we get rid of the bitmap? In this vetorial device, |
- // the content of this bitmap is meaningless. However, it does occupy |
+ // TODO(myhuang): Can we get rid of the bitmap? In this vectorial device, |
+ // the content of this bitmap might be meaningless. However, it does occupy |
// lots of memory space. |
SkBitmap bitmap; |
bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height); |
- return new VectorPlatformDevice(bitmap); |
+ return new VectorPlatformDevice(context, bitmap); |
} |
-VectorPlatformDevice::VectorPlatformDevice(const SkBitmap& bitmap) |
- : PlatformDevice(bitmap) { |
+VectorPlatformDevice::VectorPlatformDevice(PlatformSurface context, |
+ const SkBitmap& bitmap) |
+ : PlatformDevice(bitmap), context_(context) { |
SkASSERT(bitmap.getConfig() == SkBitmap::kARGB_8888_Config); |
- // FIXME(myhuang): At this moment, we write the PDF file to the disk |
- // for testing when we run chromium without sanboxing. |
- surface_ = cairo_pdf_surface_create("chrome_printing_test.pdf", |
- width(), height()); |
- SkASSERT(surface_); |
- context_ = cairo_create(surface_); |
- SkASSERT(context_); |
+ // Increase the reference count to keep the context alive. |
+ cairo_reference(context_); |
transform_.reset(); |
} |
VectorPlatformDevice::~VectorPlatformDevice() { |
- SkASSERT(surface_); |
- SkASSERT(context_); |
- |
+ // Un-ref |context_| since we referenced it in the constructor. |
cairo_destroy(context_); |
- cairo_surface_destroy(surface_); |
} |
void VectorPlatformDevice::drawBitmap(const SkDraw& draw, |
@@ -163,7 +156,7 @@ |
current_points[3].fX, current_points[3].fY); |
} break; |
- case SkPath::kClose_Verb: { // iter.next returns 1 point (the last point) |
+ case SkPath::kClose_Verb: { // iter.next returns 1 point (the last pt). |
cairo_close_path(context_); |
} break; |