| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkBitmap.h" | 8 #include "SkBitmap.h" |
| 9 #include "SkImageDecoder.h" | 9 #include "SkImageDecoder.h" |
| 10 #include "SkOSFile.h" | 10 #include "SkOSFile.h" |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 SkDebugf("Baseline and test patterns do not yield corresponding number o
f files\n"); | 254 SkDebugf("Baseline and test patterns do not yield corresponding number o
f files\n"); |
| 255 return; | 255 return; |
| 256 } | 256 } |
| 257 | 257 |
| 258 sk_parallel_for(baselineEntries.count(), [&](int i) { | 258 sk_parallel_for(baselineEntries.count(), [&](int i) { |
| 259 this->addDiff(baselineEntries[i].c_str(), testEntries[i].c_str()); | 259 this->addDiff(baselineEntries[i].c_str(), testEntries[i].c_str()); |
| 260 }); | 260 }); |
| 261 } | 261 } |
| 262 | 262 |
| 263 void SkDiffContext::outputRecords(SkWStream& stream, bool useJSONP) { | 263 void SkDiffContext::outputRecords(SkWStream& stream, bool useJSONP) { |
| 264 SkTLList<DiffRecord>::Iter iter(fRecords, SkTLList<DiffRecord>::Iter::kHead_
IterStart); | 264 RecordList::Iter iter(fRecords, RecordList::Iter::kHead_IterStart); |
| 265 DiffRecord* currentRecord = iter.get(); | 265 DiffRecord* currentRecord = iter.get(); |
| 266 | 266 |
| 267 if (useJSONP) { | 267 if (useJSONP) { |
| 268 stream.writeText("var SkPDiffRecords = {\n"); | 268 stream.writeText("var SkPDiffRecords = {\n"); |
| 269 } else { | 269 } else { |
| 270 stream.writeText("{\n"); | 270 stream.writeText("{\n"); |
| 271 } | 271 } |
| 272 | 272 |
| 273 // TODO(djsollen): Would it be better to use the jsoncpp library to write ou
t the JSON? | 273 // TODO(djsollen): Would it be better to use the jsoncpp library to write ou
t the JSON? |
| 274 // This manual approach is probably more efficient, but it sure is ugly. | 274 // This manual approach is probably more efficient, but it sure is ugly. |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 stream.writeText("}\n"); | 366 stream.writeText("}\n"); |
| 367 } | 367 } |
| 368 } | 368 } |
| 369 | 369 |
| 370 void SkDiffContext::outputCsv(SkWStream& stream) { | 370 void SkDiffContext::outputCsv(SkWStream& stream) { |
| 371 SkTDict<int> columns(2); | 371 SkTDict<int> columns(2); |
| 372 int cntColumns = 0; | 372 int cntColumns = 0; |
| 373 | 373 |
| 374 stream.writeText("key"); | 374 stream.writeText("key"); |
| 375 | 375 |
| 376 SkTLList<DiffRecord>::Iter iter(fRecords, SkTLList<DiffRecord>::Iter::kHead_
IterStart); | 376 RecordList::Iter iter(fRecords, RecordList::Iter::kHead_IterStart); |
| 377 DiffRecord* currentRecord = iter.get(); | 377 DiffRecord* currentRecord = iter.get(); |
| 378 | 378 |
| 379 // Write CSV header and create a dictionary of all columns. | 379 // Write CSV header and create a dictionary of all columns. |
| 380 while (currentRecord) { | 380 while (currentRecord) { |
| 381 for (int diffIndex = 0; diffIndex < currentRecord->fDiffs.count(); diffI
ndex++) { | 381 for (int diffIndex = 0; diffIndex < currentRecord->fDiffs.count(); diffI
ndex++) { |
| 382 DiffData& data = currentRecord->fDiffs[diffIndex]; | 382 DiffData& data = currentRecord->fDiffs[diffIndex]; |
| 383 if (!columns.find(data.fDiffName)) { | 383 if (!columns.find(data.fDiffName)) { |
| 384 columns.set(data.fDiffName, cntColumns); | 384 columns.set(data.fDiffName, cntColumns); |
| 385 stream.writeText(", "); | 385 stream.writeText(", "); |
| 386 stream.writeText(data.fDiffName); | 386 stream.writeText(data.fDiffName); |
| 387 cntColumns++; | 387 cntColumns++; |
| 388 } | 388 } |
| 389 } | 389 } |
| 390 currentRecord = iter.next(); | 390 currentRecord = iter.next(); |
| 391 } | 391 } |
| 392 stream.writeText("\n"); | 392 stream.writeText("\n"); |
| 393 | 393 |
| 394 double values[100]; | 394 double values[100]; |
| 395 SkASSERT(cntColumns < 100); // Make the array larger, if we ever have so ma
ny diff types. | 395 SkASSERT(cntColumns < 100); // Make the array larger, if we ever have so ma
ny diff types. |
| 396 | 396 |
| 397 SkTLList<DiffRecord>::Iter iter2(fRecords, SkTLList<DiffRecord>::Iter::kHead
_IterStart); | 397 RecordList::Iter iter2(fRecords, RecordList::Iter::kHead_IterStart); |
| 398 currentRecord = iter2.get(); | 398 currentRecord = iter2.get(); |
| 399 while (currentRecord) { | 399 while (currentRecord) { |
| 400 for (int i = 0; i < cntColumns; i++) { | 400 for (int i = 0; i < cntColumns; i++) { |
| 401 values[i] = -1; | 401 values[i] = -1; |
| 402 } | 402 } |
| 403 | 403 |
| 404 for (int diffIndex = 0; diffIndex < currentRecord->fDiffs.count(); diffI
ndex++) { | 404 for (int diffIndex = 0; diffIndex < currentRecord->fDiffs.count(); diffI
ndex++) { |
| 405 DiffData& data = currentRecord->fDiffs[diffIndex]; | 405 DiffData& data = currentRecord->fDiffs[diffIndex]; |
| 406 int index = -1; | 406 int index = -1; |
| 407 SkAssertResult(columns.find(data.fDiffName, &index)); | 407 SkAssertResult(columns.find(data.fDiffName, &index)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 420 for (int i = 0; i < cntColumns; i++) { | 420 for (int i = 0; i < cntColumns; i++) { |
| 421 SkString str; | 421 SkString str; |
| 422 str.printf(", %f", values[i]); | 422 str.printf(", %f", values[i]); |
| 423 stream.writeText(str.c_str()); | 423 stream.writeText(str.c_str()); |
| 424 } | 424 } |
| 425 stream.writeText("\n"); | 425 stream.writeText("\n"); |
| 426 | 426 |
| 427 currentRecord = iter2.next(); | 427 currentRecord = iter2.next(); |
| 428 } | 428 } |
| 429 } | 429 } |
| OLD | NEW |