130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#ifndef DMPDFTask_DEFINED
230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#define DMPDFTask_DEFINED
330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
4e4d3e605f74a23d050abad29909af421d8b1cf1amtklein#include "DMPDFRasterizeTask.h"
530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "DMTask.h"
630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkBitmap.h"
7e4d3e605f74a23d050abad29909af421d8b1cf1amtklein#include "SkPicture.h"
830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkString.h"
930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "SkTemplates.h"
1030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#include "gm.h"
1130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
1230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinnamespace DM {
1330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
14e4d3e605f74a23d050abad29909af421d8b1cf1amtklein// This task renders a GM or SKP using Skia's PDF backend.
1530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein// If rasterizePdfProc is non-NULL, it will spawn a PDFRasterizeTask.
1630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinclass PDFTask : public CpuTask {
1730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinpublic:
18e4d3e605f74a23d050abad29909af421d8b1cf1amtklein    PDFTask(const char*,
1930bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein            Reporter*,
2030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein            TaskRunner*,
2130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein            skiagm::GMRegistry::Factory,
2230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein            RasterizePdfProc);
2330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
24e4d3e605f74a23d050abad29909af421d8b1cf1amtklein    PDFTask(Reporter*,
25e4d3e605f74a23d050abad29909af421d8b1cf1amtklein            TaskRunner*,
26d3e474e20c6f0f24ddb6b2643e92975d60190daamtklein            const SkPicture*,
27e4d3e605f74a23d050abad29909af421d8b1cf1amtklein            SkString name,
28e4d3e605f74a23d050abad29909af421d8b1cf1amtklein            RasterizePdfProc);
29e4d3e605f74a23d050abad29909af421d8b1cf1amtklein
3030bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    virtual void draw() SK_OVERRIDE;
3130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
3230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    virtual bool shouldSkip() const SK_OVERRIDE;
3330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
3430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    virtual SkString name() const SK_OVERRIDE { return fName; }
3530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
3630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtkleinprivate:
37e4d3e605f74a23d050abad29909af421d8b1cf1amtklein    // One of these two will be set.
3830bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    SkAutoTDelete<skiagm::GM> fGM;
39d3e474e20c6f0f24ddb6b2643e92975d60190daamtklein    SkAutoTUnref<const SkPicture> fPicture;
40e4d3e605f74a23d050abad29909af421d8b1cf1amtklein
4130bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    const SkString fName;
4230bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein    RasterizePdfProc fRasterize;
4330bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein};
4430bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
4530bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein}  // namespace DM
4630bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein
4730bf3e2ffcb78fc76e5a62b2ca67638e0411cba9mtklein#endif  // DMPDFTask_DEFINED
48