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