1#ifndef DMWriteTask_DEFINED 2#define DMWriteTask_DEFINED 3 4#include "DMExpectations.h" 5#include "DMTask.h" 6#include "SkBitmap.h" 7#include "SkString.h" 8#include "SkTArray.h" 9 10 11// Writes a bitmap to a file. 12 13namespace DM { 14 15class WriteTask : public CpuTask { 16 17public: 18 WriteTask(const Task& parent, // WriteTask must be a child task. 19 SkBitmap bitmap); // Bitmap to encode to PNG and write to disk. 20 21 WriteTask(const Task& parent, // WriteTask must be a child task. 22 SkData *data, // Pre-encoded data to write to disk. 23 const char* ext); // File extension. 24 25 virtual void draw() SK_OVERRIDE; 26 virtual bool shouldSkip() const SK_OVERRIDE; 27 virtual SkString name() const SK_OVERRIDE; 28 29 // Reads image files WriteTask wrote under root and compares them with bitmap. 30 class Expectations : public DM::Expectations { 31 public: 32 explicit Expectations(const char* root) : fRoot(root) {} 33 34 bool check(const Task& task, SkBitmap bitmap) const SK_OVERRIDE; 35 private: 36 const char* fRoot; 37 }; 38 39private: 40 SkTArray<SkString> fSuffixes; 41 const SkString fGmName; 42 const SkBitmap fBitmap; 43 SkAutoTUnref<SkData> fData; 44 const char* fExtension; 45 46 void makeDirOrFail(SkString dir); 47}; 48 49} // namespace DM 50 51#endif // DMWriteTask_DEFINED 52