When user specifies an output path with -w, only output files from main
render (don't output -replay and -serialize files into separate
directories).
If main render fails, don't test -replay or -serialize.
Also fix misnamed variable, line-wrap.
git-svn-id: http://skia.googlecode.com/svn/trunk@1560 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index ea205e3..37c3ee3 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -120,7 +120,7 @@
}
static bool compare(const SkBitmap& target, const SkBitmap& base,
- const SkString& name, const char* modeDescriptor,
+ const SkString& name, const char* renderModeDescriptor,
SkBitmap* diff) {
SkBitmap copy;
const SkBitmap* bm = ⌖
@@ -134,8 +134,9 @@
const int w = bm->width();
const int h = bm->height();
if (w != base.width() || h != base.height()) {
- SkDebugf("---- %s dimensions mismatch for %s base [%d %d] current [%d %d]\n",
- modeDescriptor, name.c_str(),
+ SkDebugf(
+"---- %s dimensions mismatch for %s base [%d %d] current [%d %d]\n",
+ renderModeDescriptor, name.c_str(),
base.width(), base.height(), w, h);
return false;
}
@@ -148,8 +149,9 @@
SkPMColor c0 = *base.getAddr32(x, y);
SkPMColor c1 = *bm->getAddr32(x, y);
if (c0 != c1) {
- SkDebugf("----- %s pixel mismatch for %s at [%d %d] base 0x%08X current 0x%08X\n",
- modeDescriptor, name.c_str(), x, y, c0, c1);
+ SkDebugf(
+"----- %s pixel mismatch for %s at [%d %d] base 0x%08X current 0x%08X\n",
+ renderModeDescriptor, name.c_str(), x, y, c0, c1);
if (diff) {
diff->setConfig(SkBitmap::kARGB_8888_Config, w, h);
@@ -250,17 +252,17 @@
static bool write_reference_image(const ConfigData& gRec,
const char writePath [],
- const char writePathSuffix [],
+ const char renderModeDescriptor [],
const SkString& name,
SkBitmap& bitmap,
SkDynamicMemoryWStream* pdf) {
SkString path;
bool success = false;
if (gRec.fBackend != kPDF_Backend) {
- path = make_filename(writePath, writePathSuffix, name, "png");
+ path = make_filename(writePath, renderModeDescriptor, name, "png");
success = write_bitmap(path, bitmap);
} else if (pdf) {
- path = make_filename(writePath, writePathSuffix, name, "pdf");
+ path = make_filename(writePath, renderModeDescriptor, name, "pdf");
success = write_pdf(path, *pdf);
}
if (!success) {
@@ -273,7 +275,7 @@
const SkString& name,
SkBitmap &bitmap,
const char diffPath [],
- const char modeDescriptor []) {
+ const char renderModeDescriptor []) {
SkString path = make_filename(readPath, "", name, "png");
SkBitmap orig;
bool success = SkImageDecoder::DecodeFile(path.c_str(), &orig,
@@ -281,7 +283,7 @@
SkImageDecoder::kDecodePixels_Mode, NULL);
if (success) {
SkBitmap diffBitmap;
- success = compare(bitmap, orig, name, modeDescriptor,
+ success = compare(bitmap, orig, name, renderModeDescriptor,
diffPath ? &diffBitmap : NULL);
if (!success && diffPath) {
SkString diffName = make_filename(diffPath, "", name, ".diff.png");
@@ -299,18 +301,18 @@
const char writePath [],
const char readPath [],
const char diffPath [],
- const char writePathSuffix [],
+ const char renderModeDescriptor [],
SkBitmap& bitmap,
SkDynamicMemoryWStream* pdf) {
SkString name = make_name(gm->shortName(), gRec.fName);
if (writePath) {
- write_reference_image(gRec, writePath, writePathSuffix,
+ write_reference_image(gRec, writePath, renderModeDescriptor,
name, bitmap, pdf);
// TODO: Figure out a way to compare PDFs.
} else if (readPath && gRec.fBackend != kPDF_Backend) {
return compare_to_reference_image(readPath, name, bitmap,
- diffPath, writePathSuffix);
+ diffPath, renderModeDescriptor);
}
return true;
}
@@ -377,7 +379,6 @@
static bool test_picture_playback(GM* gm,
const ConfigData& gRec,
- const char writePath [],
const char readPath [],
const char diffPath []) {
SkPicture* pict = generate_new_picture(gm);
@@ -386,7 +387,7 @@
if (kRaster_Backend == gRec.fBackend) {
SkBitmap bitmap;
generate_image_from_picture(gm, gRec, pict, &bitmap);
- return handle_test_results(gm, gRec, writePath, readPath, diffPath,
+ return handle_test_results(gm, gRec, NULL, readPath, diffPath,
"-replay", bitmap, NULL);
}
return true;
@@ -394,7 +395,6 @@
static bool test_picture_serialization(GM* gm,
const ConfigData& gRec,
- const char writePath [],
const char readPath [],
const char diffPath []) {
SkPicture* pict = generate_new_picture(gm);
@@ -405,7 +405,7 @@
if (kRaster_Backend == gRec.fBackend) {
SkBitmap bitmap;
generate_image_from_picture(gm, gRec, repict, &bitmap);
- return handle_test_results(gm, gRec, writePath, readPath, diffPath,
+ return handle_test_results(gm, gRec, NULL, readPath, diffPath,
"-serialize", bitmap, NULL);
}
return true;
@@ -493,29 +493,31 @@
// Accumulate success of all tests so we can flag error in any
// one with the return value.
- bool testSuccess = true;
+ bool overallSuccess = true;
while ((gm = iter.next()) != NULL) {
SkISize size = gm->getISize();
SkDebugf("drawing... %s [%d %d]\n", gm->shortName(),
size.width(), size.height());
for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
- testSuccess &= test_drawing(gm, gRec[i],
+ bool testSuccess = test_drawing(gm, gRec[i],
writePath, readPath, diffPath, context);
+ overallSuccess &= testSuccess;
- if (doReplay) {
- testSuccess &= test_picture_playback(gm, gRec[i],
- writePath, readPath, diffPath);
+ if (doReplay && testSuccess) {
+ testSuccess = test_picture_playback(gm, gRec[i],
+ readPath, diffPath);
+ overallSuccess &= testSuccess;
}
- if (doSerialize) {
- testSuccess &= test_picture_serialization(gm, gRec[i],
- writePath, readPath, diffPath);
+ if (doSerialize && testSuccess) {
+ overallSuccess &= test_picture_serialization(gm, gRec[i],
+ readPath, diffPath);
}
}
SkDELETE(gm);
}
- if (false == testSuccess) {
+ if (false == overallSuccess) {
return -1;
}
return 0;