Home | History | Annotate | Download | only in dm
      1 #ifndef DMQuiltTask_DEFINED
      2 #define DMQuiltTask_DEFINED
      3 
      4 #include "DMTask.h"
      5 #include "SkBitmap.h"
      6 #include "SkString.h"
      7 #include "SkTemplates.h"
      8 #include "gm.h"
      9 
     10 // Records a GM through an SkPicture, draws it in tiles, and compares against the reference bitmap.
     11 
     12 namespace DM {
     13 
     14 class QuiltTask : public CpuTask {
     15 public:
     16     enum BBH {
     17         kNone_BBH,
     18         kRTree_BBH,
     19         kTileGrid_BBH,
     20     };
     21     enum Backend {
     22         kDefault_Backend,
     23         kSkRecord_Backend,
     24     };
     25 
     26     QuiltTask(const Task& parent,  // QuiltTask must be a child task.  Pass its parent here.
     27               skiagm::GM*,         // GM to run through a picture.  Takes ownership.
     28               SkBitmap reference,  // Bitmap to compare picture replay results to.
     29               BBH, Backend);
     30 
     31     virtual void draw() SK_OVERRIDE;
     32     virtual bool shouldSkip() const SK_OVERRIDE;
     33     virtual SkString name() const SK_OVERRIDE { return fName; }
     34 
     35 private:
     36     const BBH fBBH;
     37     const Backend fBackend;
     38     const SkString fName;
     39     SkAutoTDelete<skiagm::GM> fGM;
     40     const SkBitmap fReference;
     41 };
     42 
     43 }  // namespace DM
     44 
     45 #endif  // DMReplayTask_DEFINED
     46