aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMJsonWriter.cpp
diff options
context:
space:
mode:
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