int tool_main(int argc, char** argv) { SkAutoGraphics ag; SkTArray<SkString> inputs; sk_tools::PictureRenderer* renderer = NULL; SkString* outputDir = NULL; bool validate = false; int maxComponentDiff = 256; bool writeWholeImage = false; int clones = 0; parse_commandline(argc, argv, &inputs, renderer, outputDir, &validate, &maxComponentDiff, &writeWholeImage, &clones); SkASSERT(renderer); int failures = 0; for (int i = 0; i < inputs.count(); i ++) { failures += process_input(inputs[i], outputDir, *renderer, validate, maxComponentDiff, writeWholeImage, clones); } if (failures != 0) { SkDebugf("Failed to render %i pictures.\n", failures); return 1; } #if SK_SUPPORT_GPU #if GR_CACHE_STATS if (renderer->isUsingGpuDevice()) { GrContext* ctx = renderer->getGrContext(); ctx->printCacheStats(); } #endif #endif if (NULL != outputDir) { SkDELETE(outputDir); } SkDELETE(renderer); return 0; }
int tool_main(int argc, char** argv) { SkCommandLineFlags::SetUsage("Render .skp files."); SkCommandLineFlags::Parse(argc, argv); if (FLAGS_readPath.isEmpty()) { SkDebugf(".skp files or directories are required.\n"); exit(-1); } if (FLAGS_maxComponentDiff < 0 || FLAGS_maxComponentDiff > 256) { SkDebugf("--maxComponentDiff must be between 0 and 256\n"); exit(-1); } if (FLAGS_maxComponentDiff != 256 && !FLAGS_validate) { SkDebugf("--maxComponentDiff requires --validate\n"); exit(-1); } if (FLAGS_clone < 0) { SkDebugf("--clone must be >= 0. Was %i\n", FLAGS_clone); exit(-1); } if (FLAGS_writeEncodedImages) { if (FLAGS_writePath.isEmpty()) { SkDebugf("--writeEncodedImages requires --writePath\n"); exit(-1); } if (FLAGS_deferImageDecoding) { SkDebugf("--writeEncodedImages is not compatible with --deferImageDecoding\n"); exit(-1); } } SkString errorString; SkAutoTUnref<sk_tools::PictureRenderer> renderer(parseRenderer(errorString, kRender_PictureTool)); if (errorString.size() > 0) { SkDebugf("%s\n", errorString.c_str()); } if (renderer.get() == NULL) { exit(-1); } SkAutoGraphics ag; SkString outputDir; if (FLAGS_writePath.count() == 1) { outputDir.set(FLAGS_writePath[0]); } sk_tools::ImageResultsSummary jsonSummary; sk_tools::ImageResultsSummary* jsonSummaryPtr = NULL; if (FLAGS_writeJsonSummaryPath.count() == 1) { jsonSummaryPtr = &jsonSummary; } int failures = 0; for (int i = 0; i < FLAGS_readPath.count(); i ++) { failures += process_input(FLAGS_readPath[i], &outputDir, *renderer.get(), jsonSummaryPtr); } if (failures != 0) { SkDebugf("Failed to render %i pictures.\n", failures); return 1; } #if SK_SUPPORT_GPU #if GR_CACHE_STATS if (renderer->isUsingGpuDevice()) { GrContext* ctx = renderer->getGrContext(); ctx->printCacheStats(); #ifdef SK_DEVELOPER ctx->dumpFontCache(); #endif } #endif #endif if (FLAGS_writeJsonSummaryPath.count() == 1) { jsonSummary.writeToFile(FLAGS_writeJsonSummaryPath[0]); } return 0; }
int tool_main(int argc, char** argv) { SkCommandLineFlags::SetUsage("Render .skp files."); SkCommandLineFlags::Parse(argc, argv); if (FLAGS_readPath.isEmpty()) { SkDebugf(".skp files or directories are required.\n"); exit(-1); } if (FLAGS_maxComponentDiff < 0 || FLAGS_maxComponentDiff > 256) { SkDebugf("--maxComponentDiff must be between 0 and 256\n"); exit(-1); } if (FLAGS_maxComponentDiff != 256 && !FLAGS_validate) { SkDebugf("--maxComponentDiff requires --validate\n"); exit(-1); } if (FLAGS_writeEncodedImages) { if (FLAGS_writePath.isEmpty()) { SkDebugf("--writeEncodedImages requires --writePath\n"); exit(-1); } if (FLAGS_deferImageDecoding) { SkDebugf("--writeEncodedImages is not compatible with --deferImageDecoding\n"); exit(-1); } } SkString errorString; SkAutoTUnref<sk_tools::PictureRenderer> renderer(parseRenderer(errorString, kRender_PictureTool)); if (errorString.size() > 0) { SkDebugf("%s\n", errorString.c_str()); } if (renderer.get() == NULL) { exit(-1); } SkAutoGraphics ag; SkString writePath; if (FLAGS_writePath.count() == 1) { writePath.set(FLAGS_writePath[0]); } SkString mismatchPath; if (FLAGS_mismatchPath.count() == 1) { mismatchPath.set(FLAGS_mismatchPath[0]); } sk_tools::ImageResultsAndExpectations jsonSummary; sk_tools::ImageResultsAndExpectations* jsonSummaryPtr = NULL; if (FLAGS_writeJsonSummaryPath.count() == 1) { jsonSummaryPtr = &jsonSummary; if (FLAGS_readJsonSummaryPath.count() == 1) { SkASSERT(jsonSummary.readExpectationsFile(FLAGS_readJsonSummaryPath[0])); } } int failures = 0; for (int i = 0; i < FLAGS_readPath.count(); i ++) { failures += process_input(FLAGS_readPath[i], &writePath, &mismatchPath, *renderer.get(), jsonSummaryPtr); } if (failures != 0) { SkDebugf("Failed to render %i pictures.\n", failures); return 1; } #if GR_CACHE_STATS && SK_SUPPORT_GPU if (renderer->isUsingGpuDevice()) { GrContext* ctx = renderer->getGrContext(); ctx->printCacheStats(); } #endif #if GR_GPU_STATS && SK_SUPPORT_GPU if (FLAGS_gpuStats && renderer->isUsingGpuDevice()) { renderer->getGrContext()->printGpuStats(); } #endif if (FLAGS_writeJsonSummaryPath.count() == 1) { // If there were any descriptions on the command line, insert them now. for (int i=0; i<FLAGS_descriptions.count(); i++) { SkTArray<SkString> tokens; SkStrSplit(FLAGS_descriptions[i], "=", &tokens); SkASSERT(tokens.count() == 2); jsonSummary.addDescription(tokens[0].c_str(), tokens[1].c_str()); } if (FLAGS_imageBaseGSUrl.count() == 1) { jsonSummary.setImageBaseGSUrl(FLAGS_imageBaseGSUrl[0]); } jsonSummary.writeToFile(FLAGS_writeJsonSummaryPath[0]); } return 0; }