| 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 "SkCommandLineFlags.h" |  | 
| 10 #include "SkImageDecoder.h" | 9 #include "SkImageDecoder.h" | 
| 11 #include "SkOSFile.h" | 10 #include "SkOSFile.h" | 
| 12 #include "SkStream.h" | 11 #include "SkStream.h" | 
| 13 | 12 | 
| 14 #include "SkDiffContext.h" | 13 #include "SkDiffContext.h" | 
| 15 #include "SkImageDiffer.h" | 14 #include "SkImageDiffer.h" | 
| 16 #include "skpdiff_util.h" | 15 #include "skpdiff_util.h" | 
| 17 | 16 | 
| 18 DECLARE_string(csv); |  | 
| 19 |  | 
| 20 SkDiffContext::SkDiffContext() { | 17 SkDiffContext::SkDiffContext() { | 
| 21     fRecords = NULL; | 18     fRecords = NULL; | 
| 22     fDiffers = NULL; | 19     fDiffers = NULL; | 
| 23     fDifferCount = 0; | 20     fDifferCount = 0; | 
| 24 } | 21 } | 
| 25 | 22 | 
| 26 SkDiffContext::~SkDiffContext() { | 23 SkDiffContext::~SkDiffContext() { | 
| 27     // Delete the record linked list | 24     // Delete the record linked list | 
| 28     DiffRecord* currentRecord = fRecords; | 25     DiffRecord* currentRecord = fRecords; | 
| 29     while (NULL != currentRecord) { | 26     while (NULL != currentRecord) { | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 64         return; | 61         return; | 
| 65     } | 62     } | 
| 66 | 63 | 
| 67     // Setup a record for this diff | 64     // Setup a record for this diff | 
| 68     DiffRecord* newRecord = SkNEW(DiffRecord); | 65     DiffRecord* newRecord = SkNEW(DiffRecord); | 
| 69     newRecord->fBaselinePath = baselinePath; | 66     newRecord->fBaselinePath = baselinePath; | 
| 70     newRecord->fTestPath = testPath; | 67     newRecord->fTestPath = testPath; | 
| 71     newRecord->fNext = fRecords; | 68     newRecord->fNext = fRecords; | 
| 72     fRecords = newRecord; | 69     fRecords = newRecord; | 
| 73 | 70 | 
| 74     FILE* csvFile = NULL; |  | 
| 75     if (!FLAGS_csv.isEmpty()) { |  | 
| 76         csvFile = fopen(FLAGS_csv[0], "a"); |  | 
| 77         SkASSERT(csvFile); |  | 
| 78         if (ftell(csvFile) == 0) { |  | 
| 79             fprintf(csvFile, "%s", "skp"); |  | 
| 80             for (int differIndex = 0; differIndex < fDifferCount; differIndex++)
      { |  | 
| 81                 SkImageDiffer* differ = fDiffers[differIndex]; |  | 
| 82                 fprintf(csvFile, ", %s", differ->getName()); |  | 
| 83             } |  | 
| 84             fprintf(csvFile, "\n"); |  | 
| 85         } |  | 
| 86     } |  | 
| 87 |  | 
| 88     if (csvFile) { |  | 
| 89         const char* filename = baselinePath + strlen(baselinePath) - 1; |  | 
| 90         while (filename > baselinePath && *(filename - 1) != '/') { |  | 
| 91             filename--; |  | 
| 92         } |  | 
| 93         fprintf(csvFile, "%s", filename); |  | 
| 94     } |  | 
| 95 |  | 
| 96     // Perform each diff | 71     // Perform each diff | 
| 97     for (int differIndex = 0; differIndex < fDifferCount; differIndex++) { | 72     for (int differIndex = 0; differIndex < fDifferCount; differIndex++) { | 
| 98         SkImageDiffer* differ = fDiffers[differIndex]; | 73         SkImageDiffer* differ = fDiffers[differIndex]; | 
| 99         int diffID = differ->queueDiff(&baselineBitmap, &testBitmap); | 74         int diffID = differ->queueDiff(&baselineBitmap, &testBitmap); | 
| 100         if (diffID >= 0) { | 75         if (diffID >= 0) { | 
| 101 | 76 | 
| 102             // Copy the results into data for this record | 77             // Copy the results into data for this record | 
| 103             DiffData& diffData = newRecord->fDiffs.push_back(); | 78             DiffData& diffData = newRecord->fDiffs.push_back(); | 
| 104 | 79 | 
| 105             diffData.fDiffName = differ->getName(); | 80             diffData.fDiffName = differ->getName(); | 
| 106             diffData.fResult = differ->getResult(diffID); | 81             diffData.fResult = differ->getResult(diffID); | 
| 107 | 82 | 
| 108             if (csvFile) { |  | 
| 109                 fprintf(csvFile, ", %f", diffData.fResult); |  | 
| 110             } |  | 
| 111 |  | 
| 112             int poiCount = differ->getPointsOfInterestCount(diffID); | 83             int poiCount = differ->getPointsOfInterestCount(diffID); | 
| 113             SkIPoint* poi = differ->getPointsOfInterest(diffID); | 84             SkIPoint* poi = differ->getPointsOfInterest(diffID); | 
| 114             diffData.fPointsOfInterest.append(poiCount, poi); | 85             diffData.fPointsOfInterest.append(poiCount, poi); | 
| 115 | 86 | 
| 116             // Because we are doing everything synchronously for now, we are don
     e with the diff | 87             // Because we are doing everything synchronously for now, we are don
     e with the diff | 
| 117             // after reading it. | 88             // after reading it. | 
| 118             differ->deleteDiff(diffID); | 89             differ->deleteDiff(diffID); | 
| 119         } else { |  | 
| 120             if (csvFile) { |  | 
| 121                 fprintf(csvFile, ", -1"); |  | 
| 122             } |  | 
| 123         } | 90         } | 
| 124     } | 91     } | 
| 125 |  | 
| 126     if (csvFile) { |  | 
| 127         fprintf(csvFile, "\n"); |  | 
| 128         fclose(csvFile); |  | 
| 129     } |  | 
| 130 } | 92 } | 
| 131 | 93 | 
| 132 | 94 | 
| 133 void SkDiffContext::diffDirectories(const char baselinePath[], const char testPa
     th[]) { | 95 void SkDiffContext::diffDirectories(const char baselinePath[], const char testPa
     th[]) { | 
| 134     // Get the files in the baseline, we will then look for those inside the tes
     t path | 96     // Get the files in the baseline, we will then look for those inside the tes
     t path | 
| 135     SkTArray<SkString> baselineEntries; | 97     SkTArray<SkString> baselineEntries; | 
| 136     if (!get_directory(baselinePath, &baselineEntries)) { | 98     if (!get_directory(baselinePath, &baselineEntries)) { | 
| 137         SkDebugf("Unable to open path \"%s\"\n", baselinePath); | 99         SkDebugf("Unable to open path \"%s\"\n", baselinePath); | 
| 138         return; | 100         return; | 
| 139     } | 101     } | 
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 261     } | 223     } | 
| 262     stream.writeText("    ]\n"); | 224     stream.writeText("    ]\n"); | 
| 263     if (useJSONP) { | 225     if (useJSONP) { | 
| 264         stream.writeText("};\n"); | 226         stream.writeText("};\n"); | 
| 265     } | 227     } | 
| 266     else | 228     else | 
| 267     { | 229     { | 
| 268         stream.writeText("}\n"); | 230         stream.writeText("}\n"); | 
| 269     } | 231     } | 
| 270 } | 232 } | 
| OLD | NEW | 
|---|