Home | History | Annotate | Download | only in dm
      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 
     13 namespace 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.
     17 class PDFTask : public CpuTask {
     18 public:
     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 
     37 private:
     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