Index: gm/gmmain.cpp |
=================================================================== |
--- gm/gmmain.cpp (revision 8638) |
+++ gm/gmmain.cpp (working copy) |
@@ -18,7 +18,7 @@ |
#include "gm_expectations.h" |
#include "system_preferences.h" |
#include "SkBitmap.h" |
-#include "SkBitmapChecksummer.h" |
+#include "SkBitmapHasher.h" |
#include "SkColorPriv.h" |
#include "SkCommandLineFlags.h" |
#include "SkData.h" |
@@ -401,24 +401,24 @@ |
* will be written to, or compared against, PNG files. |
* PRO: Preserve/compare alpha channel info for the non-PNG cases |
* (comparing different renderModes in-memory) |
- * CON: The bitmaps (and checksums) for these non-PNG cases would be |
+ * CON: The bitmaps (and hash digests) for these non-PNG cases would be |
* different than those for the PNG-compared cases, and in the |
* case of a failed renderMode comparison, how would we write the |
* image to disk for examination? |
* |
- * 2. Always compute image checksums from PNG format (either |
+ * 2. Always compute image hash digests from PNG format (either |
* directly from the the bytes of a PNG file, or capturing the |
* bytes we would have written to disk if we were writing the |
* bitmap out as a PNG). |
* PRO: I think this would allow us to never force opaque, and to |
* the extent that alpha channel data can be preserved in a PNG |
* file, we could observe it. |
- * CON: If we read a bitmap from disk, we need to take its checksum |
+ * CON: If we read a bitmap from disk, we need to take its hash digest |
* from the source PNG (we can't compute it from the bitmap we |
* read out of the PNG, because we will have already premultiplied |
* the alpha). |
* CON: Seems wasteful to convert a bitmap to PNG format just to take |
- * its checksum. (Although we're wasting lots of effort already |
+ * its hash digest. (Although we're wasting lots of effort already |
* calling force_all_opaque().) |
* |
* 3. Make the alpha premultiply/unpremultiply routines 100% consistent, |
@@ -428,7 +428,7 @@ |
* |
* 4. Perform a "close enough" comparison of bitmaps (+/- 1 bit in each |
* channel), rather than demanding absolute equality. |
- * CON: Can't do this with checksums. |
+ * CON: Can't do this with hash digests. |
*/ |
static void complete_bitmap(SkBitmap* bitmap) { |
force_all_opaque(*bitmap); |
@@ -690,7 +690,7 @@ |
} |
/** |
- * Compares actual checksum to expectations, returning the set of errors |
+ * Compares actual hash digest to expectations, returning the set of errors |
* (if any) that we saw along the way. |
* |
* If fMismatchPath has been set, and there are pixel diffs, then the |
@@ -713,14 +713,19 @@ |
const char renderModeDescriptor[], |
bool addToJsonSummary) { |
ErrorCombination errors; |
- Checksum actualChecksum = SkBitmapChecksummer::Compute64(actualBitmap); |
+ SkHashDigest actualBitmapHash; |
+ // TODO(epoger): Better handling for error returned by ComputeDigest()? |
+ // For now, we just report a digest of 0 in error cases, like before. |
+ if (!SkBitmapHasher::ComputeDigest(actualBitmap, &actualBitmapHash)) { |
+ actualBitmapHash = 0; |
+ } |
SkString completeNameString = baseNameString; |
completeNameString.append(renderModeDescriptor); |
const char* completeName = completeNameString.c_str(); |
if (expectations.empty()) { |
errors.add(kMissingExpectations_ErrorType); |
- } else if (!expectations.match(actualChecksum)) { |
+ } else if (!expectations.match(actualBitmapHash)) { |
addToJsonSummary = true; |
// The error mode we record depends on whether this was running |
// in a non-standard renderMode. |
@@ -749,7 +754,7 @@ |
RecordTestResults(errors, baseNameString, renderModeDescriptor); |
if (addToJsonSummary) { |
- add_actual_results_to_json_summary(completeName, actualChecksum, errors, |
+ add_actual_results_to_json_summary(completeName, actualBitmapHash, errors, |
expectations.ignoreFailure()); |
add_expected_results_to_json_summary(completeName, expectations); |
} |
@@ -762,12 +767,12 @@ |
* depending on status. |
*/ |
void add_actual_results_to_json_summary(const char testName[], |
- Checksum actualChecksum, |
+ const SkHashDigest& actualBitmapHash, |
ErrorCombination result, |
bool ignoreFailure) { |
Json::Value actualResults; |
actualResults[kJsonKey_ActualResults_AnyStatus_Checksum] = |
- asJsonValue(actualChecksum); |
+ asJsonValue(actualBitmapHash); |
if (result.isEmpty()) { |
this->fJsonActualResults_Succeeded[testName] = actualResults; |
} else { |
@@ -783,7 +788,7 @@ |
} else { |
if (result.includes(kMissingExpectations_ErrorType)) { |
// TODO: What about the case where there IS an |
- // expected image checksum, but that gm test |
+ // expected image hash digest, but that gm test |
// doesn't actually run? For now, those cases |
// will always be ignored, because gm only looks |
// at expectations that correspond to gm tests |
@@ -841,14 +846,14 @@ |
if (expectationsSource && (gRec.fFlags & kRead_ConfigFlag)) { |
/* |
* Get the expected results for this test, as one or more allowed |
- * checksums. The current implementation of expectationsSource |
- * get this by computing the checksum of a single PNG file on disk. |
+ * hash digests. The current implementation of expectationsSource |
+ * get this by computing the hash digest of a single PNG file on disk. |
* |
* TODO(epoger): This relies on the fact that |
* force_all_opaque() was called on the bitmap before it |
* was written to disk as a PNG in the first place. If |
- * not, the checksum returned here may not match the |
- * checksum of actualBitmap, which *has* been run through |
+ * not, the hash digest returned here may not match the |
+ * hash digest of actualBitmap, which *has* been run through |
* force_all_opaque(). |
* See comments above complete_bitmap() for more detail. |
*/ |
@@ -858,9 +863,13 @@ |
} else { |
// If we are running without expectations, we still want to |
// record the actual results. |
- Checksum actualChecksum = |
- SkBitmapChecksummer::Compute64(actualBitmap); |
- add_actual_results_to_json_summary(name.c_str(), actualChecksum, |
+ SkHashDigest actualBitmapHash; |
+ // TODO(epoger): Better handling for error returned by ComputeDigest()? |
+ // For now, we just report a digest of 0 in error cases, like before. |
+ if (!SkBitmapHasher::ComputeDigest(actualBitmap, &actualBitmapHash)) { |
+ actualBitmapHash = 0; |
+ } |
+ add_actual_results_to_json_summary(name.c_str(), actualBitmapHash, |
ErrorCombination(kMissingExpectations_ErrorType), |
false); |
RecordTestResults(ErrorCombination(kMissingExpectations_ErrorType), name, ""); |
@@ -1105,7 +1114,7 @@ |
int fTestsRun; |
SkTDict<int> fRenderModesEncountered; |
- // Where to read expectations (expected image checksums, etc.) from. |
+ // Where to read expectations (expected image hash digests, etc.) from. |
// If unset, we don't do comparisons. |
SkAutoTUnref<ExpectationsSource> fExpectationsSource; |