Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: dm/DMWriteTask.cpp

Issue 702513003: Separate JSON functions from DMWriteTask. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Modify comment to be more accurate. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « dm/DMWriteTask.h ('k') | gyp/dm.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "DMWriteTask.h" 1 #include "DMWriteTask.h"
2 2
3 #include "DMJsonWriter.h"
3 #include "DMUtil.h" 4 #include "DMUtil.h"
4 #include "SkColorPriv.h" 5 #include "SkColorPriv.h"
5 #include "SkCommonFlags.h" 6 #include "SkCommonFlags.h"
6 #include "SkData.h" 7 #include "SkData.h"
7 #include "SkImageEncoder.h" 8 #include "SkImageEncoder.h"
8 #include "SkMD5.h" 9 #include "SkMD5.h"
9 #include "SkMallocPixelRef.h" 10 #include "SkMallocPixelRef.h"
10 #include "SkOSFile.h" 11 #include "SkOSFile.h"
11 #include "SkStream.h" 12 #include "SkStream.h"
12 #include "SkString.h" 13 #include "SkString.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 static bool write_asset(SkStreamAsset* input, SkWStream* output) { 85 static bool write_asset(SkStreamAsset* input, SkWStream* output) {
85 return input->rewind() && output->writeStream(input, input->getLength()); 86 return input->rewind() && output->writeStream(input, input->getLength());
86 } 87 }
87 88
88 static SkString get_md5(SkStreamAsset* stream) { 89 static SkString get_md5(SkStreamAsset* stream) {
89 SkMD5 hasher; 90 SkMD5 hasher;
90 write_asset(stream, &hasher); 91 write_asset(stream, &hasher);
91 return get_md5_string(&hasher); 92 return get_md5_string(&hasher);
92 } 93 }
93 94
94 struct JsonData {
95 SkString name; // E.g. "ninepatch-stretch", "desk-gws_skp"
96 SkString config; // "gpu", "8888"
97 SkString mode; // "direct", "default-tilegrid", "pipe"
98 SkString sourceType; // "GM", "SKP"
99 SkString md5; // In ASCII, so 32 bytes long.
100 };
101 SkTArray<JsonData> gJsonData;
102 SK_DECLARE_STATIC_MUTEX(gJsonDataLock);
103
104 void WriteTask::draw() { 95 void WriteTask::draw() {
105 SkString md5; 96 SkString md5;
106 { 97 {
107 SkAutoLockPixels lock(fBitmap); 98 SkAutoLockPixels lock(fBitmap);
108 md5 = fData ? get_md5(fData) 99 md5 = fData ? get_md5(fData)
109 : get_md5(fBitmap.getPixels(), fBitmap.getSize()); 100 : get_md5(fBitmap.getPixels(), fBitmap.getSize());
110 } 101 }
111 102
112 SkASSERT(fSuffixes.count() > 0); 103 SkASSERT(fSuffixes.count() > 0);
113 SkString config = fSuffixes.back(); 104 SkString config = fSuffixes.back();
114 SkString mode("direct"); 105 SkString mode("direct");
115 if (fSuffixes.count() > 1) { 106 if (fSuffixes.count() > 1) {
116 mode = fSuffixes.fromBack(1); 107 mode = fSuffixes.fromBack(1);
117 } 108 }
118 109
119 JsonData entry = { fBaseName, config, mode, fSourceType, md5 };
120 { 110 {
121 SkAutoMutexAcquire lock(&gJsonDataLock); 111 const JsonWriter::BitmapResult entry = { fBaseName,
122 gJsonData.push_back(entry); 112 config,
113 mode,
114 fSourceType,
115 md5 };
116 JsonWriter::AddBitmapResult(entry);
123 } 117 }
124 118
125 SkString dir(FLAGS_writePath[0]); 119 SkString dir(FLAGS_writePath[0]);
126 #if defined(SK_BUILD_FOR_IOS) 120 #if defined(SK_BUILD_FOR_IOS)
127 if (dir.equals("@")) { 121 if (dir.equals("@")) {
128 dir.set(FLAGS_resourcePath[0]); 122 dir.set(FLAGS_resourcePath[0]);
129 } 123 }
130 #endif 124 #endif
131 this->makeDirOrFail(dir); 125 this->makeDirOrFail(dir);
132 126
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 name.appendf("%s/", fSuffixes[i].c_str()); 165 name.appendf("%s/", fSuffixes[i].c_str());
172 } 166 }
173 name.append(fBaseName.c_str()); 167 name.append(fBaseName.c_str());
174 return name; 168 return name;
175 } 169 }
176 170
177 bool WriteTask::shouldSkip() const { 171 bool WriteTask::shouldSkip() const {
178 return FLAGS_writePath.isEmpty(); 172 return FLAGS_writePath.isEmpty();
179 } 173 }
180 174
181 void WriteTask::DumpJson() {
182 if (FLAGS_writePath.isEmpty()) {
183 return;
184 }
185
186 Json::Value root;
187
188 for (int i = 1; i < FLAGS_properties.count(); i += 2) {
189 root[FLAGS_properties[i-1]] = FLAGS_properties[i];
190 }
191 for (int i = 1; i < FLAGS_key.count(); i += 2) {
192 root["key"][FLAGS_key[i-1]] = FLAGS_key[i];
193 }
194
195 {
196 SkAutoMutexAcquire lock(&gJsonDataLock);
197 for (int i = 0; i < gJsonData.count(); i++) {
198 Json::Value result;
199 result["key"]["name"] = gJsonData[i].name.c_str();
200 result["key"]["config"] = gJsonData[i].config.c_str();
201 result["key"]["mode"] = gJsonData[i].mode.c_str();
202 result["options"]["source_type"] = gJsonData[i].sourceType.c_str();
203 result["md5"] = gJsonData[i].md5.c_str();
204
205 root["results"].append(result);
206 }
207 }
208
209 SkString path = SkOSPath::Join(FLAGS_writePath[0], "dm.json");
210 SkFILEWStream stream(path.c_str());
211 stream.writeText(Json::StyledWriter().write(root).c_str());
212 stream.flush();
213 }
214
215 } // namespace DM 175 } // namespace DM
OLDNEW
« no previous file with comments | « dm/DMWriteTask.h ('k') | gyp/dm.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698