Chromium Code Reviews| Index: tools/PdfRenderer.cpp |
| diff --git a/tools/PdfRenderer.cpp b/tools/PdfRenderer.cpp |
| index 704cbeae518c93e28c2707f827e8a7b9db2de076..e05e6b12d433c639eea97d83015a70087339cfec 100644 |
| --- a/tools/PdfRenderer.cpp |
| +++ b/tools/PdfRenderer.cpp |
| @@ -13,7 +13,7 @@ |
| namespace sk_tools { |
| -void PdfRenderer::init(SkPicture* pict) { |
| +void PdfRenderer::init(SkPicture* pict, SkWStream* stream) { |
| SkASSERT(NULL == fPicture); |
| SkASSERT(NULL == fCanvas.get()); |
| if (fPicture != NULL || NULL != fCanvas.get()) { |
| @@ -26,44 +26,38 @@ void PdfRenderer::init(SkPicture* pict) { |
| } |
| fPicture = pict; |
| - fCanvas.reset(this->setupCanvas()); |
| + fCanvas.reset(this->setupCanvas(stream, pict->width(), pict->height())); |
| } |
| -SkCanvas* PdfRenderer::setupCanvas() { |
| - return this->setupCanvas(fPicture->width(), fPicture->height()); |
| -} |
| +SkCanvas* PdfRenderer::setupCanvas(SkWStream* stream, int width, int height) { |
| + fPdfDoc.reset(SkDocument::CreatePDF(stream, NULL, fEncoder)); |
| + |
| + SkSize pageSize = SkSize::Make(SkIntToScalar(width), SkIntToScalar(height)); |
| + SkCanvas* canvas = fPdfDoc->beginPage(pageSize); |
| + canvas->ref(); |
| -SkCanvas* PdfRenderer::setupCanvas(int width, int height) { |
| - SkISize pageSize = SkISize::Make(width, height); |
| - fPDFDevice = SkNEW_ARGS(SkPDFDevice, (pageSize, pageSize, SkMatrix::I())); |
| - fPDFDevice->setDCTEncoder(fEncoder); |
| - return SkNEW_ARGS(SkCanvas, (fPDFDevice)); |
| + return canvas; |
| } |
| void PdfRenderer::end() { |
| fPicture = NULL; |
| fCanvas.reset(NULL); |
| - if (fPDFDevice) { |
| - SkDELETE(fPDFDevice); |
| - fPDFDevice = NULL; |
| - } |
| + fPdfDoc.reset(NULL); |
| } |
| -void PdfRenderer::write(SkWStream* stream) const { |
| - SkPDFDocument doc; |
| - doc.appendPage(fPDFDevice); |
| - doc.emitPDF(stream); |
| -} |
| - |
| -void SimplePdfRenderer::render() { |
| +bool SimplePdfRenderer::render() { |
| SkASSERT(fCanvas.get() != NULL); |
| SkASSERT(fPicture != NULL); |
| if (NULL == fCanvas.get() || NULL == fPicture) { |
| - return; |
| + return false; |
| } |
| fCanvas->drawPicture(*fPicture); |
| fCanvas->flush(); |
| + |
| + // TODO(edisonn): SkDocument should report failure somehow! |
|
vandebo (ex-Chrome)
2013/09/27 15:50:17
Didn't you change close to return a bool, or does
edisonn
2013/10/04 19:40:37
Done.
|
| + fPdfDoc->close(); |
| + return true; |
| } |
| } |