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 14 namespace DM { 15 16 class WriteTask : public CpuTask { 17 18 public: 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 35 private: 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