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 12namespace DM { 13 14class PipeTask : public CpuTask { 15 16public: 17 enum Mode { 18 kInProcess_Mode, 19 kCrossProcess_Mode, 20 kSharedAddress_Mode, 21 }; 22 23 PipeTask(const Task& parent, // PipeTask must be a child task. Pass its parent here. 24 skiagm::GM*, // GM to run through a pipe. Takes ownership. 25 SkBitmap reference, // Bitmap to compare pipe results to. 26 Mode); 27 28 virtual void draw() SK_OVERRIDE; 29 virtual bool shouldSkip() const SK_OVERRIDE; 30 virtual SkString name() const SK_OVERRIDE { return fName; } 31 32private: 33 const uint32_t fFlags; 34 const SkString fName; 35 SkAutoTDelete<skiagm::GM> fGM; 36 const SkBitmap fReference; 37}; 38 39} // namespace DM 40 41#endif // DMPipeTask_DEFINED 42