1e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#ifndef DMRecordTask_DEFINED
2e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#define DMRecordTask_DEFINED
3e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
4e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#include "DMTask.h"
5e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#include "SkBitmap.h"
690b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org#include "SkPicture.h"
7e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#include "SkString.h"
8e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#include "SkTemplates.h"
9e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#include "gm.h"
10e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
1190b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org// Records a GM or SKP through an SkRecord, draws it, and compares against the reference bitmap.
12e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
13e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.orgnamespace DM {
14e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
15e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.orgclass RecordTask : public CpuTask {
16e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
17e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.orgpublic:
1890b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    enum Mode {
1990b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org        kNoOptimize_Mode,
2090b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org        kOptimize_Mode,
2190b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    };
2290b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    RecordTask(const Task& parent, skiagm::GM*, SkBitmap reference, Mode);
2390b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    RecordTask(const Task& parent, SkPicture*,  SkBitmap reference, Mode);
24e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
25e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org    virtual void draw() SK_OVERRIDE;
26e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org    virtual bool shouldSkip() const SK_OVERRIDE;
27e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org    virtual SkString name() const SK_OVERRIDE { return fName; }
28e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
29e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.orgprivate:
3090b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    bool fOptimize;
31e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org    const SkString fName;
3290b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    SkAutoTUnref<SkPicture> fPicture;
33e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org    SkAutoTDelete<skiagm::GM> fGM;
34e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org    const SkBitmap fReference;
35e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org};
36e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
37e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org}  // namespace DM
38e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org
39e3ff558a4baf4cb924e7513a81c8073ddae385fccommit-bot@chromium.org#endif  // DMRecordTask_DEFINED
40