1#ifndef DMWriteTask_DEFINED 2#define DMWriteTask_DEFINED 3 4#include "DMTask.h" 5#include "SkBitmap.h" 6#include "SkJSONCPP.h" 7#include "SkStream.h" 8#include "SkString.h" 9#include "SkTArray.h" 10 11 12// Writes a bitmap to a file. 13 14namespace DM { 15 16class WriteTask : public CpuTask { 17 18public: 19 WriteTask(const Task& parent, // WriteTask must be a child task. 20 const char* sourceType, // E.g. "GM", "SKP". For humans. 21 SkBitmap bitmap); // Bitmap to encode to PNG and write to disk. 22 23 // Takes ownership of SkStreamAsset 24 WriteTask(const Task& parent, // WriteTask must be a child task. 25 const char* sourceType, // E.g. "GM", "SKP". For humans. 26 SkStreamAsset* data, // Pre-encoded data to write to disk. 27 const char* ext); // File extension. 28 29 virtual void draw() SK_OVERRIDE; 30 virtual bool shouldSkip() const SK_OVERRIDE; 31 virtual SkString name() const SK_OVERRIDE; 32 33 static void DumpJson(); 34 35private: 36 SkTArray<SkString> fSuffixes; 37 const SkString fBaseName; 38 const SkString fSourceType; 39 const SkBitmap fBitmap; 40 SkAutoTDelete<SkStreamAsset> fData; 41 const char* fExtension; 42 43 void makeDirOrFail(SkString dir); 44}; 45 46} // namespace DM 47 48#endif // DMWriteTask_DEFINED 49