1d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#ifndef DMReplayTask_DEFINED
2d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#define DMReplayTask_DEFINED
3d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
4d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "DMTask.h"
5d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkBitmap.h"
6d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkString.h"
7d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "SkTemplates.h"
8d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#include "gm.h"
9d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
1066bb3d1f5e451f8501f5c28d1dc28fcef6e908e1commit-bot@chromium.org// Records a GM through an SkPicture, draws it, and compares against the reference bitmap.
11d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
12d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comnamespace DM {
13d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
14ef57b7e65330d5f794a513630517907500f1c1d0commit-bot@chromium.orgclass ReplayTask : public CpuTask {
15d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
16d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.compublic:
1790b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    enum Mode {
1890b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org        kNormal_Mode,
1990b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org        kRTree_Mode,
2090b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    };
21c1362424b864ee3ae7aa44971985e5481057363acommit-bot@chromium.org    ReplayTask(const Task& parent,  // ReplayTask must be a child task.  Pass its parent here.
22d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com               skiagm::GM*,         // GM to run through a picture.  Takes ownership.
23d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com               SkBitmap reference,  // Bitmap to compare picture replay results to.
2490b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org               Mode);
25d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
26d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com    virtual void draw() SK_OVERRIDE;
27d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com    virtual bool shouldSkip() const SK_OVERRIDE;
28d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com    virtual SkString name() const SK_OVERRIDE { return fName; }
29d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
30d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.comprivate:
3190b5a2a653b312ff9bcd7102412da2dbeb52368ccommit-bot@chromium.org    const bool fUseRTree;
32d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com    const SkString fName;
33d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com    SkAutoTDelete<skiagm::GM> fGM;
3466bb3d1f5e451f8501f5c28d1dc28fcef6e908e1commit-bot@chromium.org    const SkBitmap fReference;
35d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com};
36d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
37d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com}  // namespace DM
38d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com
39d36522d12d3e71958e50683a7eef43dc2a47d96dmtklein@google.com#endif  // DMReplayTask_DEFINED
40