| Index: dm/DMPDFTask.cpp
|
| diff --git a/dm/DMPDFTask.cpp b/dm/DMPDFTask.cpp
|
| index e50e9ecb70fcaa194e7e20668b29bbe1615a5855..ecca1300c88f540c01d902eaa586e0ab8220ec94 100644
|
| --- a/dm/DMPDFTask.cpp
|
| +++ b/dm/DMPDFTask.cpp
|
| @@ -6,7 +6,6 @@
|
| */
|
|
|
| #include "DMPDFTask.h"
|
| -#include "DMExpectationsTask.h"
|
| #include "DMPDFRasterizeTask.h"
|
| #include "DMUtil.h"
|
| #include "DMWriteTask.h"
|
| @@ -21,16 +20,24 @@ DEFINE_bool(pdf, false, "PDF backend master switch.");
|
|
|
| namespace DM {
|
|
|
| -PDFTask::PDFTask(const char* suffix,
|
| +PDFTask::PDFTask(const char* config,
|
| Reporter* reporter,
|
| TaskRunner* taskRunner,
|
| - const Expectations& expectations,
|
| skiagm::GMRegistry::Factory factory,
|
| RasterizePdfProc rasterizePdfProc)
|
| : CpuTask(reporter, taskRunner)
|
| , fGM(factory(NULL))
|
| - , fName(UnderJoin(fGM->getName(), suffix))
|
| - , fExpectations(expectations)
|
| + , fName(UnderJoin(fGM->getName(), config))
|
| + , fRasterize(rasterizePdfProc) {}
|
| +
|
| +PDFTask::PDFTask(Reporter* reporter,
|
| + TaskRunner* taskRunner,
|
| + SkPicture* picture,
|
| + SkString filename,
|
| + RasterizePdfProc rasterizePdfProc)
|
| + : CpuTask(reporter, taskRunner)
|
| + , fPicture(SkRef(picture))
|
| + , fName(UnderJoin(FileToTaskName(filename).c_str(), "pdf"))
|
| , fRasterize(rasterizePdfProc) {}
|
|
|
| namespace {
|
| @@ -59,17 +66,24 @@ private:
|
| } // namespace
|
|
|
| void PDFTask::draw() {
|
| - SinglePagePDF pdf(fGM->width(), fGM->height());
|
| - //TODO(mtklein): GM doesn't do this. Why not?
|
| - //pdf.canvas()->concat(fGM->getInitialTransform());
|
| - fGM->draw(pdf.canvas());
|
| + SkAutoTUnref<SkData> pdfData;
|
| + bool rasterize = true;
|
| + if (fGM.get()) {
|
| + rasterize = 0 == (fGM->getFlags() & skiagm::GM::kSkipPDFRasterization_Flag);
|
| + SinglePagePDF pdf(fGM->width(), fGM->height());
|
| + //TODO(mtklein): GM doesn't do this. Why not?
|
| + //pdf.canvas()->concat(fGM->getInitialTransform());
|
| + fGM->draw(pdf.canvas());
|
| + pdfData.reset(pdf.end());
|
| + } else {
|
| + SinglePagePDF pdf(SkIntToScalar(fPicture->width()), SkIntToScalar(fPicture->height()));
|
| + fPicture->draw(pdf.canvas());
|
| + pdfData.reset(pdf.end());
|
| + }
|
|
|
| - SkAutoTUnref<SkData> pdfData(pdf.end());
|
| SkASSERT(pdfData.get());
|
| -
|
| - if (!(fGM->getFlags() & skiagm::GM::kSkipPDFRasterization_Flag)) {
|
| - this->spawnChild(SkNEW_ARGS(PDFRasterizeTask,
|
| - (*this, pdfData.get(), fExpectations, fRasterize)));
|
| + if (rasterize) {
|
| + this->spawnChild(SkNEW_ARGS(PDFRasterizeTask, (*this, pdfData.get(), fRasterize)));
|
| }
|
| this->spawnChild(SkNEW_ARGS(WriteTask, (*this, pdfData.get(), ".pdf")));
|
| }
|
| @@ -78,7 +92,7 @@ bool PDFTask::shouldSkip() const {
|
| if (!FLAGS_pdf) {
|
| return true;
|
| }
|
| - if (fGM->getFlags() & skiagm::GM::kSkipPDF_Flag) {
|
| + if (fGM.get() && 0 != (fGM->getFlags() & skiagm::GM::kSkipPDF_Flag)) {
|
| return true;
|
| }
|
| return false;
|
|
|