aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMJsonWriter.cpp
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2015-01-27 14:46:26 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-01-27 14:46:26 -0800
commit62bd1a69ea49318aa5022151262c842887e0ecf4 (patch)
tree2670b2993dc0692d7881c103b75242d113265e81 /dm/DMJsonWriter.cpp
parent6dbfb21a6c88af6d94e8c823c3ad559f1a41b493 (diff)
add -r to DM
$ out/Debug/dm -w good $ out/Debug/dm -r good -w bad && echo "hooray no diffs!" BUG=skia: Review URL: https://codereview.chromium.org/863093003
Diffstat (limited to 'dm/DMJsonWriter.cpp')
-rw-r--r--dm/DMJsonWriter.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/dm/DMJsonWriter.cpp b/dm/DMJsonWriter.cpp
index 8aea814aed..56c1301df1 100644
--- a/dm/DMJsonWriter.cpp
+++ b/dm/DMJsonWriter.cpp
@@ -8,6 +8,7 @@
#include "DMJsonWriter.h"
#include "SkCommonFlags.h"
+#include "SkData.h"
#include "SkJSONCPP.h"
#include "SkOSFile.h"
#include "SkStream.h"
@@ -79,4 +80,31 @@ void JsonWriter::DumpJson() {
stream.flush();
}
+bool JsonWriter::ReadJson(const char* path, void(*callback)(BitmapResult)) {
+ SkAutoTUnref<SkData> json(SkData::NewFromFileName(path));
+ if (!json) {
+ return false;
+ }
+
+ Json::Reader reader;
+ Json::Value root;
+ const char* data = (const char*)json->data();
+ if (!reader.parse(data, data+json->size(), root)) {
+ return false;
+ }
+
+ const Json::Value& results = root["results"];
+ BitmapResult br;
+ for (unsigned i = 0; i < results.size(); i++) {
+ const Json::Value& r = results[i];
+ br.name = r["key"]["name"].asCString();
+ br.config = r["key"]["config"].asCString();
+ br.sourceType = r["key"]["source_type"].asCString();
+ br.ext = r["ext"].asCString();
+ br.md5 = r["md5"].asCString();
+ callback(br);
+ }
+ return true;
+}
+
} // namespace DM