#ifndef DMPipeTask_DEFINED #define DMPipeTask_DEFINED #include "DMTask.h" #include "SkBitmap.h" #include "SkString.h" #include "SkTemplates.h" #include "gm.h" // Sends a GM through a pipe, draws it, and compares against the reference bitmap. namespace DM { class PipeTask : public CpuTask { public: enum Mode { kInProcess_Mode, kCrossProcess_Mode, kSharedAddress_Mode, }; PipeTask(const Task& parent, // PipeTask must be a child task. Pass its parent here. skiagm::GM*, // GM to run through a pipe. Takes ownership. SkBitmap reference, // Bitmap to compare pipe results to. Mode); virtual void draw() SK_OVERRIDE; virtual bool shouldSkip() const SK_OVERRIDE; virtual SkString name() const SK_OVERRIDE { return fName; } private: const uint32_t fFlags; const SkString fName; SkAutoTDelete<skiagm::GM> fGM; const SkBitmap fReference; }; } // namespace DM #endif // DMPipeTask_DEFINED