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

Side by Side Diff: gm/gmmain.cpp

Issue 14890017: GM: include filename extension (.png) of each output file in JSON summary (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: sync_to_r9118 Created 7 years, 7 months 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 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 /* 8 /*
9 * Code for the "gm" (Golden Master) rendering comparison tool. 9 * Code for the "gm" (Golden Master) rendering comparison tool.
10 * 10 *
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 count += 1; 114 count += 1;
115 reg = reg->next(); 115 reg = reg->next();
116 } 116 }
117 return count; 117 return count;
118 } 118 }
119 119
120 private: 120 private:
121 const GMRegistry* fReg; 121 const GMRegistry* fReg;
122 }; 122 };
123 123
124 // TODO(epoger): Right now, various places in this code assume that all the
125 // image files read/written by GM use this file extension.
126 // Search for references to this constant to find these assumptions.
127 const static char kPNG_FileExtension[] = "png";
128
124 enum Backend { 129 enum Backend {
125 kRaster_Backend, 130 kRaster_Backend,
126 kGPU_Backend, 131 kGPU_Backend,
127 kPDF_Backend, 132 kPDF_Backend,
128 kXPS_Backend, 133 kXPS_Backend,
129 }; 134 };
130 135
131 enum BbhType { 136 enum BbhType {
132 kNone_BbhType, 137 kNone_BbhType,
133 kRTree_BbhType, 138 kRTree_BbhType,
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 ErrorCombination write_reference_image(const ConfigData& gRec, const char wr itePath [], 605 ErrorCombination write_reference_image(const ConfigData& gRec, const char wr itePath [],
601 const char renderModeDescriptor [], c onst SkString& name, 606 const char renderModeDescriptor [], c onst SkString& name,
602 SkBitmap& bitmap, SkDynamicMemoryWStr eam* document) { 607 SkBitmap& bitmap, SkDynamicMemoryWStr eam* document) {
603 SkString path; 608 SkString path;
604 bool success = false; 609 bool success = false;
605 if (gRec.fBackend == kRaster_Backend || 610 if (gRec.fBackend == kRaster_Backend ||
606 gRec.fBackend == kGPU_Backend || 611 gRec.fBackend == kGPU_Backend ||
607 (gRec.fBackend == kPDF_Backend && CAN_IMAGE_PDF)) { 612 (gRec.fBackend == kPDF_Backend && CAN_IMAGE_PDF)) {
608 613
609 path = make_filename(writePath, renderModeDescriptor, name.c_str(), 614 path = make_filename(writePath, renderModeDescriptor, name.c_str(),
610 "png"); 615 kPNG_FileExtension);
611 success = write_bitmap(path, bitmap); 616 success = write_bitmap(path, bitmap);
612 } 617 }
613 if (kPDF_Backend == gRec.fBackend) { 618 if (kPDF_Backend == gRec.fBackend) {
614 path = make_filename(writePath, renderModeDescriptor, name.c_str(), 619 path = make_filename(writePath, renderModeDescriptor, name.c_str(),
615 "pdf"); 620 "pdf");
616 success = write_document(path, *document); 621 success = write_document(path, *document);
617 } 622 }
618 if (kXPS_Backend == gRec.fBackend) { 623 if (kXPS_Backend == gRec.fBackend) {
619 path = make_filename(writePath, renderModeDescriptor, name.c_str(), 624 path = make_filename(writePath, renderModeDescriptor, name.c_str(),
620 "xps"); 625 "xps");
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 bool addToJsonSummary) { 725 bool addToJsonSummary) {
721 ErrorCombination errors; 726 ErrorCombination errors;
722 SkHashDigest actualBitmapHash; 727 SkHashDigest actualBitmapHash;
723 // TODO(epoger): Better handling for error returned by ComputeDigest()? 728 // TODO(epoger): Better handling for error returned by ComputeDigest()?
724 // For now, we just report a digest of 0 in error cases, like before. 729 // For now, we just report a digest of 0 in error cases, like before.
725 if (!SkBitmapHasher::ComputeDigest(actualBitmap, &actualBitmapHash)) { 730 if (!SkBitmapHasher::ComputeDigest(actualBitmap, &actualBitmapHash)) {
726 actualBitmapHash = 0; 731 actualBitmapHash = 0;
727 } 732 }
728 SkString completeNameString = baseNameString; 733 SkString completeNameString = baseNameString;
729 completeNameString.append(renderModeDescriptor); 734 completeNameString.append(renderModeDescriptor);
735 completeNameString.append(".");
736 completeNameString.append(kPNG_FileExtension);
730 const char* completeName = completeNameString.c_str(); 737 const char* completeName = completeNameString.c_str();
731 738
732 if (expectations.empty()) { 739 if (expectations.empty()) {
733 errors.add(kMissingExpectations_ErrorType); 740 errors.add(kMissingExpectations_ErrorType);
734 } else if (!expectations.match(actualBitmapHash)) { 741 } else if (!expectations.match(actualBitmapHash)) {
735 addToJsonSummary = true; 742 addToJsonSummary = true;
736 // The error mode we record depends on whether this was running 743 // The error mode we record depends on whether this was running
737 // in a non-standard renderMode. 744 // in a non-standard renderMode.
738 if ('\0' == *renderModeDescriptor) { 745 if ('\0' == *renderModeDescriptor) {
739 errors.add(kExpectationsMismatch_ErrorType); 746 errors.add(kExpectationsMismatch_ErrorType);
740 } else { 747 } else {
741 errors.add(kRenderModeMismatch_ErrorType); 748 errors.add(kRenderModeMismatch_ErrorType);
742 } 749 }
743 750
744 // Write out the "actuals" for any mismatches, if we have 751 // Write out the "actuals" for any mismatches, if we have
745 // been directed to do so. 752 // been directed to do so.
746 if (fMismatchPath) { 753 if (fMismatchPath) {
747 SkString path = 754 SkString path =
748 make_filename(fMismatchPath, renderModeDescriptor, 755 make_filename(fMismatchPath, renderModeDescriptor,
749 baseNameString.c_str(), "png"); 756 baseNameString.c_str(), kPNG_FileExtension);
750 write_bitmap(path, actualBitmap); 757 write_bitmap(path, actualBitmap);
751 } 758 }
752 759
753 // If we have access to a single expected bitmap, log more 760 // If we have access to a single expected bitmap, log more
754 // detail about the mismatch. 761 // detail about the mismatch.
755 const SkBitmap *expectedBitmapPtr = expectations.asBitmap(); 762 const SkBitmap *expectedBitmapPtr = expectations.asBitmap();
756 if (NULL != expectedBitmapPtr) { 763 if (NULL != expectedBitmapPtr) {
757 report_bitmap_diffs(*expectedBitmapPtr, actualBitmap, completeNa me); 764 report_bitmap_diffs(*expectedBitmapPtr, actualBitmap, completeNa me);
758 } 765 }
759 } 766 }
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 * get this by computing the hash digest of a single PNG file on dis k. 853 * get this by computing the hash digest of a single PNG file on dis k.
847 * 854 *
848 * TODO(epoger): This relies on the fact that 855 * TODO(epoger): This relies on the fact that
849 * force_all_opaque() was called on the bitmap before it 856 * force_all_opaque() was called on the bitmap before it
850 * was written to disk as a PNG in the first place. If 857 * was written to disk as a PNG in the first place. If
851 * not, the hash digest returned here may not match the 858 * not, the hash digest returned here may not match the
852 * hash digest of actualBitmap, which *has* been run through 859 * hash digest of actualBitmap, which *has* been run through
853 * force_all_opaque(). 860 * force_all_opaque().
854 * See comments above complete_bitmap() for more detail. 861 * See comments above complete_bitmap() for more detail.
855 */ 862 */
856 Expectations expectations = expectationsSource->get(name.c_str()); 863 SkString nameWithExtension(name);
864 nameWithExtension.append(".");
865 nameWithExtension.append(kPNG_FileExtension);
866 Expectations expectations = expectationsSource->get(nameWithExtensio n.c_str());
857 errors.add(compare_to_expectations(expectations, actualBitmap, 867 errors.add(compare_to_expectations(expectations, actualBitmap,
858 name, "", true)); 868 name, "", true));
859 } else { 869 } else {
860 // If we are running without expectations, we still want to 870 // If we are running without expectations, we still want to
861 // record the actual results. 871 // record the actual results.
862 SkHashDigest actualBitmapHash; 872 SkHashDigest actualBitmapHash;
863 // TODO(epoger): Better handling for error returned by ComputeDigest ()? 873 // TODO(epoger): Better handling for error returned by ComputeDigest ()?
864 // For now, we just report a digest of 0 in error cases, like before . 874 // For now, we just report a digest of 0 in error cases, like before .
865 if (!SkBitmapHasher::ComputeDigest(actualBitmap, &actualBitmapHash)) { 875 if (!SkBitmapHasher::ComputeDigest(actualBitmap, &actualBitmapHash)) {
866 actualBitmapHash = 0; 876 actualBitmapHash = 0;
867 } 877 }
868 add_actual_results_to_json_summary(name.c_str(), actualBitmapHash, 878 SkString nameWithExtension(name);
879 nameWithExtension.append(".");
880 nameWithExtension.append(kPNG_FileExtension);
881 add_actual_results_to_json_summary(nameWithExtension.c_str(), actual BitmapHash,
869 ErrorCombination(kMissingExpectat ions_ErrorType), 882 ErrorCombination(kMissingExpectat ions_ErrorType),
870 false); 883 false);
871 RecordTestResults(ErrorCombination(kMissingExpectations_ErrorType), name, ""); 884 RecordTestResults(ErrorCombination(kMissingExpectations_ErrorType), name, "");
872 } 885 }
873 886
874 // TODO: Consider moving this into compare_to_expectations(), 887 // TODO: Consider moving this into compare_to_expectations(),
875 // similar to fMismatchPath... for now, we don't do that, because 888 // similar to fMismatchPath... for now, we don't do that, because
876 // we don't want to write out the actual bitmaps for all 889 // we don't want to write out the actual bitmaps for all
877 // renderModes of all tests! That would be a lot of files. 890 // renderModes of all tests! That would be a lot of files.
878 if (writePath && (gRec.fFlags & kWrite_ConfigFlag)) { 891 if (writePath && (gRec.fFlags & kWrite_ConfigFlag)) {
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after
2032 if (FLAGS_forceBWtext) { 2045 if (FLAGS_forceBWtext) {
2033 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); 2046 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
2034 } 2047 }
2035 } 2048 }
2036 2049
2037 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 2050 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
2038 int main(int argc, char * const argv[]) { 2051 int main(int argc, char * const argv[]) {
2039 return tool_main(argc, (char**) argv); 2052 return tool_main(argc, (char**) argv);
2040 } 2053 }
2041 #endif 2054 #endif
OLDNEW
« no previous file with comments | « gm/gm_expectations.cpp ('k') | gm/tests/outputs/compared-against-different-pixels-images/output-expected/json-summary.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698