Home | History | Annotate | Download | only in dm
      1 #ifndef DMPipeTask_DEFINED
      2 #define DMPipeTask_DEFINED
      3 
      4 #include "DMTask.h"
      5 #include "SkBitmap.h"
      6 #include "SkString.h"
      7 #include "SkTemplates.h"
      8 #include "gm.h"
      9 
     10 // Sends a GM through a pipe, draws it, and compares against the reference bitmap.
     11 
     12 namespace DM {
     13 
     14 class PipeTask : public Task {
     15 
     16 public:
     17     PipeTask(const Task& parent,        // PipeTask must be a child task.  Pass its parent here.
     18              skiagm::GM*,               // GM to run through a pipe.  Takes ownership.
     19              SkBitmap reference,        // Bitmap to compare pipe results to.
     20              bool crossProcess,         // Should we set up a cross process pipe?
     21              bool sharedAddressSpace);  // If cross process, should it assume shared address space?
     22 
     23     virtual void draw() SK_OVERRIDE;
     24     virtual bool usesGpu() const SK_OVERRIDE { return false; }
     25     virtual bool shouldSkip() const SK_OVERRIDE;
     26     virtual SkString name() const SK_OVERRIDE { return fName; }
     27 
     28 private:
     29     const uint32_t fFlags;
     30     const SkString fName;
     31     SkAutoTDelete<skiagm::GM> fGM;
     32     const SkBitmap fReference;
     33 };
     34 
     35 }  // namespace DM
     36 
     37 #endif  // DMPipeTask_DEFINED
     38