1d0f1642e8
DM's striking off into its own JSON world. This gets strawman implementations in place for writing and reading a JSON file mapping test name to hashes. For what it's worth, I basically want to change _all_ these pieces, - MD5 is slow and we can replace it with something faster, - JSON schema needs room to grow more data, - it'd be nice to hash once instead of twice when reading and writing, - this code wants lots of refactoring, but this gives us a starting platform to work on these bits at our leisure. E.x. file for now: mtklein@mtklein ~/skia (dm)> cat good/dm.json { "3x3bitmaprect_565" : "fc70d985fbfbe70e3a3c9dc626d4f5bc", "3x3bitmaprect_8888" : "df1591dde35907399734ea19feb76663", "3x3bitmaprect_gpu" : "df1591dde35907399734ea19feb76663", "aaclip_565" : "1862798689b838a7ab0dc0652b9ace3a", "aaclip_8888" : "47bb314329f0ce243f1d83fd583decb7", "aaclip_gpu" : "75f72412d0ef4815770202d297246e7d", ... BUG=skia: R=jcgregorio@google.com, stephana@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/546873002
58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
#ifndef DMWriteTask_DEFINED
|
|
#define DMWriteTask_DEFINED
|
|
|
|
#include "DMExpectations.h"
|
|
#include "DMTask.h"
|
|
#include "SkBitmap.h"
|
|
#include "SkJSONCPP.h"
|
|
#include "SkStream.h"
|
|
#include "SkString.h"
|
|
#include "SkTArray.h"
|
|
|
|
|
|
// Writes a bitmap to a file.
|
|
|
|
namespace DM {
|
|
|
|
class WriteTask : public CpuTask {
|
|
|
|
public:
|
|
WriteTask(const Task& parent, // WriteTask must be a child task.
|
|
SkBitmap bitmap); // Bitmap to encode to PNG and write to disk.
|
|
|
|
// Takes ownership of SkStreamAsset
|
|
WriteTask(const Task& parent, // WriteTask must be a child task.
|
|
SkStreamAsset* data, // Pre-encoded data to write to disk.
|
|
const char* ext); // File extension.
|
|
|
|
virtual void draw() SK_OVERRIDE;
|
|
virtual bool shouldSkip() const SK_OVERRIDE;
|
|
virtual SkString name() const SK_OVERRIDE;
|
|
|
|
// Reads JSON file WriteTask wrote under root and compares the bitmap with checksums inside.
|
|
class Expectations : public DM::Expectations {
|
|
public:
|
|
static Expectations* Create(const char*);
|
|
bool check(const Task& task, SkBitmap bitmap) const SK_OVERRIDE;
|
|
private:
|
|
Expectations() {}
|
|
Json::Value fJson;
|
|
};
|
|
|
|
static void DumpJson();
|
|
|
|
private:
|
|
SkTArray<SkString> fSuffixes;
|
|
const SkString fFullName;
|
|
const SkString fBaseName;
|
|
const SkBitmap fBitmap;
|
|
SkAutoTDelete<SkStreamAsset> fData;
|
|
const char* fExtension;
|
|
|
|
void makeDirOrFail(SkString dir);
|
|
};
|
|
|
|
} // namespace DM
|
|
|
|
#endif // DMWriteTask_DEFINED
|