| 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 "CrashHandler.h" | 8 #include "CrashHandler.h" |
| 9 // #include "OverwriteLine.h" | 9 // #include "OverwriteLine.h" |
| 10 #include "Resources.h" | 10 #include "Resources.h" |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 static void writePict(const SkBitmap& bitmap, const char* outDir, const char* pn
gName) { | 430 static void writePict(const SkBitmap& bitmap, const char* outDir, const char* pn
gName) { |
| 431 SkString outFile = get_sum_path(outDir); | 431 SkString outFile = get_sum_path(outDir); |
| 432 outFile.appendf("%s%s", PATH_SLASH, pngName); | 432 outFile.appendf("%s%s", PATH_SLASH, pngName); |
| 433 if (!SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, SkImageEncoder::kPN
G_Type, 100)) { | 433 if (!SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, SkImageEncoder::kPN
G_Type, 100)) { |
| 434 SkDebugf("unable to encode gr %s (width=%d height=%d)\n", pngName, | 434 SkDebugf("unable to encode gr %s (width=%d height=%d)\n", pngName, |
| 435 bitmap.width(), bitmap.height()); | 435 bitmap.width(), bitmap.height()); |
| 436 } | 436 } |
| 437 } | 437 } |
| 438 | 438 |
| 439 void TestResult::testOne() { | 439 void TestResult::testOne() { |
| 440 SkPicture* pic = nullptr; | 440 sk_sp<SkPicture> pic; |
| 441 { | 441 { |
| 442 #if DEBUG_SHOW_TEST_NAME | 442 #if DEBUG_SHOW_TEST_NAME |
| 443 if (fTestStep == kCompareBits) { | 443 if (fTestStep == kCompareBits) { |
| 444 SkString testName(fFilename); | 444 SkString testName(fFilename); |
| 445 const char http[] = "http"; | 445 const char http[] = "http"; |
| 446 if (testName.startsWith(http)) { | 446 if (testName.startsWith(http)) { |
| 447 testName.remove(0, sizeof(http) - 1); | 447 testName.remove(0, sizeof(http) - 1); |
| 448 } | 448 } |
| 449 while (testName.startsWith("_")) { | 449 while (testName.startsWith("_")) { |
| 450 testName.remove(0, 1); | 450 testName.remove(0, 1); |
| 451 } | 451 } |
| 452 const char dotSkp[] = ".skp"; | 452 const char dotSkp[] = ".skp"; |
| 453 if (testName.endsWith(dotSkp)) { | 453 if (testName.endsWith(dotSkp)) { |
| 454 size_t len = testName.size(); | 454 size_t len = testName.size(); |
| 455 testName.remove(len - (sizeof(dotSkp) - 1), sizeof(dotSkp) - 1); | 455 testName.remove(len - (sizeof(dotSkp) - 1), sizeof(dotSkp) - 1); |
| 456 } | 456 } |
| 457 testName.prepend("skp"); | 457 testName.prepend("skp"); |
| 458 testName.append("1"); | 458 testName.append("1"); |
| 459 strncpy(DEBUG_FILENAME_STRING, testName.c_str(), DEBUG_FILENAME_STRI
NG_LENGTH); | 459 strncpy(DEBUG_FILENAME_STRING, testName.c_str(), DEBUG_FILENAME_STRI
NG_LENGTH); |
| 460 } else if (fTestStep == kEncodeFiles) { | 460 } else if (fTestStep == kEncodeFiles) { |
| 461 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); | 461 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); |
| 462 } | 462 } |
| 463 #endif | 463 #endif |
| 464 SkString path = get_in_path(fDirNo, fFilename); | 464 SkString path = get_in_path(fDirNo, fFilename); |
| 465 SkFILEStream stream(path.c_str()); | 465 SkFILEStream stream(path.c_str()); |
| 466 if (!stream.isValid()) { | 466 if (!stream.isValid()) { |
| 467 SkDebugf("invalid stream %s\n", path.c_str()); | 467 SkDebugf("invalid stream %s\n", path.c_str()); |
| 468 goto finish; | 468 return; |
| 469 } | 469 } |
| 470 pic = SkPicture::CreateFromStream(&stream); | 470 pic = SkPicture::MakeFromStream(&stream); |
| 471 if (!pic) { | 471 if (!pic) { |
| 472 SkDebugf("unable to decode %s\n", fFilename); | 472 SkDebugf("unable to decode %s\n", fFilename); |
| 473 goto finish; | 473 return; |
| 474 } | 474 } |
| 475 SkScalar width = pic->cullRect().width(); | 475 SkScalar width = pic->cullRect().width(); |
| 476 SkScalar height = pic->cullRect().height(); | 476 SkScalar height = pic->cullRect().height(); |
| 477 SkBitmap oldBitmap, opBitmap; | 477 SkBitmap oldBitmap, opBitmap; |
| 478 fScale = 1; | 478 fScale = 1; |
| 479 while (width / fScale > 32767 || height / fScale > 32767) { | 479 while (width / fScale > 32767 || height / fScale > 32767) { |
| 480 ++fScale; | 480 ++fScale; |
| 481 } | 481 } |
| 482 do { | 482 do { |
| 483 int dimX = SkScalarCeilToInt(width / fScale); | 483 int dimX = SkScalarCeilToInt(width / fScale); |
| 484 int dimY = SkScalarCeilToInt(height / fScale); | 484 int dimY = SkScalarCeilToInt(height / fScale); |
| 485 if (oldBitmap.tryAllocN32Pixels(dimX, dimY) && opBitmap.tryAllocN32P
ixels(dimX, dimY)) { | 485 if (oldBitmap.tryAllocN32Pixels(dimX, dimY) && opBitmap.tryAllocN32P
ixels(dimX, dimY)) { |
| 486 break; | 486 break; |
| 487 } | 487 } |
| 488 SkDebugf("-%d-", fScale); | 488 SkDebugf("-%d-", fScale); |
| 489 } while (++fScale < 256); | 489 } while (++fScale < 256); |
| 490 if (fScale >= 256) { | 490 if (fScale >= 256) { |
| 491 SkDebugf("unable to allocate bitmap for %s (w=%f h=%f)\n", fFilename
, | 491 SkDebugf("unable to allocate bitmap for %s (w=%f h=%f)\n", fFilename
, |
| 492 width, height); | 492 width, height); |
| 493 goto finish; | 493 return; |
| 494 } | 494 } |
| 495 oldBitmap.eraseColor(SK_ColorWHITE); | 495 oldBitmap.eraseColor(SK_ColorWHITE); |
| 496 SkCanvas oldCanvas(oldBitmap); | 496 SkCanvas oldCanvas(oldBitmap); |
| 497 oldCanvas.setAllowSimplifyClip(false); | 497 oldCanvas.setAllowSimplifyClip(false); |
| 498 opBitmap.eraseColor(SK_ColorWHITE); | 498 opBitmap.eraseColor(SK_ColorWHITE); |
| 499 SkCanvas opCanvas(opBitmap); | 499 SkCanvas opCanvas(opBitmap); |
| 500 opCanvas.setAllowSimplifyClip(true); | 500 opCanvas.setAllowSimplifyClip(true); |
| 501 drawPict(pic, &oldCanvas, fScale); | 501 drawPict(pic.get(), &oldCanvas, fScale); |
| 502 drawPict(pic, &opCanvas, fScale); | 502 drawPict(pic.get(), &opCanvas, fScale); |
| 503 if (fTestStep == kCompareBits) { | 503 if (fTestStep == kCompareBits) { |
| 504 fPixelError = similarBits(oldBitmap, opBitmap); | 504 fPixelError = similarBits(oldBitmap, opBitmap); |
| 505 int oldTime = timePict(pic, &oldCanvas); | 505 int oldTime = timePict(pic.get(), &oldCanvas); |
| 506 int opTime = timePict(pic, &opCanvas); | 506 int opTime = timePict(pic.get(), &opCanvas); |
| 507 fTime = SkTMax(0, oldTime - opTime); | 507 fTime = SkTMax(0, oldTime - opTime); |
| 508 } else if (fTestStep == kEncodeFiles) { | 508 } else if (fTestStep == kEncodeFiles) { |
| 509 SkString pngStr = make_png_name(fFilename); | 509 SkString pngStr = make_png_name(fFilename); |
| 510 const char* pngName = pngStr.c_str(); | 510 const char* pngName = pngStr.c_str(); |
| 511 writePict(oldBitmap, outOldDir, pngName); | 511 writePict(oldBitmap, outOldDir, pngName); |
| 512 writePict(opBitmap, outOpDir, pngName); | 512 writePict(opBitmap, outOpDir, pngName); |
| 513 } | 513 } |
| 514 } | 514 } |
| 515 finish: | |
| 516 if (pic) { | |
| 517 pic->unref(); | |
| 518 } | |
| 519 } | 515 } |
| 520 | 516 |
| 521 DEFINE_string2(match, m, "PathOpsSkpClipThreaded", | 517 DEFINE_string2(match, m, "PathOpsSkpClipThreaded", |
| 522 "[~][^]substring[$] [...] of test name to run.\n" | 518 "[~][^]substring[$] [...] of test name to run.\n" |
| 523 "Multiple matches may be separated by spaces.\n" | 519 "Multiple matches may be separated by spaces.\n" |
| 524 "~ causes a matching test to always be skipped\n" | 520 "~ causes a matching test to always be skipped\n" |
| 525 "^ requires the start of the test to match\n" | 521 "^ requires the start of the test to match\n" |
| 526 "$ requires the end of the test to match\n" | 522 "$ requires the end of the test to match\n" |
| 527 "^ and $ requires an exact match\n" | 523 "^ and $ requires an exact match\n" |
| 528 "If a test does not match any list entry,\n" | 524 "If a test does not match any list entry,\n" |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1097 } | 1093 } |
| 1098 } | 1094 } |
| 1099 return 0; | 1095 return 0; |
| 1100 } | 1096 } |
| 1101 | 1097 |
| 1102 #if !defined(SK_BUILD_FOR_IOS) | 1098 #if !defined(SK_BUILD_FOR_IOS) |
| 1103 int main(int argc, char * const argv[]) { | 1099 int main(int argc, char * const argv[]) { |
| 1104 return tool_main(argc, (char**) argv); | 1100 return tool_main(argc, (char**) argv); |
| 1105 } | 1101 } |
| 1106 #endif | 1102 #endif |
| OLD | NEW |