1#ifndef DMPDFTask_DEFINED
2#define DMPDFTask_DEFINED
3
4#include "DMExpectations.h"
5#include "DMPDFRasterizeTask.h"
6#include "DMTask.h"
7#include "SkBitmap.h"
8#include "SkPicture.h"
9#include "SkString.h"
10#include "SkTemplates.h"
11#include "gm.h"
12
13namespace DM {
14
15// This task renders a GM or SKP using Skia's PDF backend.
16// If rasterizePdfProc is non-NULL, it will spawn a PDFRasterizeTask.
17class PDFTask : public CpuTask {
18public:
19    PDFTask(const char*,
20            Reporter*,
21            TaskRunner*,
22            skiagm::GMRegistry::Factory,
23            RasterizePdfProc);
24
25    PDFTask(Reporter*,
26            TaskRunner*,
27            SkPicture*,
28            SkString name,
29            RasterizePdfProc);
30
31    virtual void draw() SK_OVERRIDE;
32
33    virtual bool shouldSkip() const SK_OVERRIDE;
34
35    virtual SkString name() const SK_OVERRIDE { return fName; }
36
37private:
38    // One of these two will be set.
39    SkAutoTDelete<skiagm::GM> fGM;
40    SkAutoTUnref<SkPicture> fPicture;
41
42    const SkString fName;
43    RasterizePdfProc fRasterize;
44};
45
46}  // namespace DM
47
48#endif  // DMPDFTask_DEFINED
49