1a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org#ifndef DMQuiltTask_DEFINED
2a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org#define DMQuiltTask_DEFINED
309f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
409f25791091db15a61083169cfda9feda0e653f6mtklein@google.com#include "DMTask.h"
509f25791091db15a61083169cfda9feda0e653f6mtklein@google.com#include "SkBitmap.h"
609f25791091db15a61083169cfda9feda0e653f6mtklein@google.com#include "SkString.h"
709f25791091db15a61083169cfda9feda0e653f6mtklein@google.com#include "SkTemplates.h"
809f25791091db15a61083169cfda9feda0e653f6mtklein@google.com#include "gm.h"
909f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
1009f25791091db15a61083169cfda9feda0e653f6mtklein@google.com// Records a GM through an SkPicture, draws it in tiles, and compares against the reference bitmap.
1109f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
1209f25791091db15a61083169cfda9feda0e653f6mtklein@google.comnamespace DM {
1309f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
14a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.orgclass QuiltTask : public CpuTask {
1509f25791091db15a61083169cfda9feda0e653f6mtklein@google.compublic:
165ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein    enum BBH {
175ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein        kNone_BBH,
185ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein        kRTree_BBH,
195ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein        kTileGrid_BBH,
205ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein    };
215ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein    enum Backend {
225ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein        kDefault_Backend,
235ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein        kSkRecord_Backend,
247cdc1ee11545a10708e857adf1d4a94a2f1e2a48mtklein    };
257cdc1ee11545a10708e857adf1d4a94a2f1e2a48mtklein
267cdc1ee11545a10708e857adf1d4a94a2f1e2a48mtklein    QuiltTask(const Task& parent,  // QuiltTask must be a child task.  Pass its parent here.
277cdc1ee11545a10708e857adf1d4a94a2f1e2a48mtklein              skiagm::GM*,         // GM to run through a picture.  Takes ownership.
287cdc1ee11545a10708e857adf1d4a94a2f1e2a48mtklein              SkBitmap reference,  // Bitmap to compare picture replay results to.
295ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein              BBH, Backend);
3009f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
3109f25791091db15a61083169cfda9feda0e653f6mtklein@google.com    virtual void draw() SK_OVERRIDE;
3209f25791091db15a61083169cfda9feda0e653f6mtklein@google.com    virtual bool shouldSkip() const SK_OVERRIDE;
3309f25791091db15a61083169cfda9feda0e653f6mtklein@google.com    virtual SkString name() const SK_OVERRIDE { return fName; }
3409f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
3509f25791091db15a61083169cfda9feda0e653f6mtklein@google.comprivate:
365ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein    const BBH fBBH;
375ad6ee1b2ce54f8e59b9f5a337c688a98a4b0f2amtklein    const Backend fBackend;
3809f25791091db15a61083169cfda9feda0e653f6mtklein@google.com    const SkString fName;
3909f25791091db15a61083169cfda9feda0e653f6mtklein@google.com    SkAutoTDelete<skiagm::GM> fGM;
4009f25791091db15a61083169cfda9feda0e653f6mtklein@google.com    const SkBitmap fReference;
4109f25791091db15a61083169cfda9feda0e653f6mtklein@google.com};
4209f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
4309f25791091db15a61083169cfda9feda0e653f6mtklein@google.com}  // namespace DM
4409f25791091db15a61083169cfda9feda0e653f6mtklein@google.com
4509f25791091db15a61083169cfda9feda0e653f6mtklein@google.com#endif  // DMReplayTask_DEFINED
46