#ifndef DMQuiltTask_DEFINED
#define DMQuiltTask_DEFINED

#include "DMTask.h"
#include "SkBitmap.h"
#include "SkString.h"
#include "SkTemplates.h"
#include "gm.h"

// Records a GM through an SkPicture, draws it in tiles, and compares against the reference bitmap.

namespace DM {

class QuiltTask : public CpuTask {
public:
    enum BBH {
        kNone_BBH,
        kRTree_BBH,
        kQuadTree_BBH,
        kTileGrid_BBH,
    };
    enum Backend {
        kDefault_Backend,
        kSkRecord_Backend,
    };

    QuiltTask(const Task& parent,  // QuiltTask must be a child task.  Pass its parent here.
              skiagm::GM*,         // GM to run through a picture.  Takes ownership.
              SkBitmap reference,  // Bitmap to compare picture replay results to.
              BBH, Backend);

    virtual void draw() SK_OVERRIDE;
    virtual bool shouldSkip() const SK_OVERRIDE;
    virtual SkString name() const SK_OVERRIDE { return fName; }

private:
    const BBH fBBH;
    const Backend fBackend;
    const SkString fName;
    SkAutoTDelete<skiagm::GM> fGM;
    const SkBitmap fReference;
};

}  // namespace DM

#endif  // DMReplayTask_DEFINED
