Home | History | Annotate | Download | only in dm
      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