| Index: tools/PictureRenderer.cpp
|
| diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
|
| index e531a30dc065a7fa12fd2b6a74501743bfad52e2..c712ae672fbfae196bc16504fef214b9d3bcbdd2 100644
|
| --- a/tools/PictureRenderer.cpp
|
| +++ b/tools/PictureRenderer.cpp
|
| @@ -323,26 +323,17 @@ uint32_t PictureRenderer::recordFlags() {
|
| }
|
|
|
| /**
|
| - * Write the canvas to the specified path.
|
| + * Write the canvas to an image file and/or JSON summary.
|
| *
|
| * @param canvas Must be non-null. Canvas to be written to a file.
|
| - * @param outputDir If nonempty, write the binary image to a file within this directory.
|
| + * @param outputDir If nonempty, write the binary image to a file within this directory;
|
| + * if empty, don't write out the image at all.
|
| * @param inputFilename If we are writing out a binary image, use this to build its filename.
|
| - * @param jsonSummaryPtr If not null, add image results to this summary.
|
| + * @param jsonSummaryPtr If not null, add image results (checksum) to this summary.
|
| * @param useChecksumBasedFilenames If true, use checksum-based filenames when writing to disk.
|
| * @param tileNumberPtr If not null, which tile number this image contains.
|
| - * @return bool True if the Canvas is written to a file.
|
| *
|
| - * TODO(epoger): Right now, all canvases must pass through this function in order to be appended
|
| - * to the ImageResultsSummary. We need some way to add bitmaps to the ImageResultsSummary
|
| - * even if --writePath has not been specified (and thus this function is not called).
|
| - *
|
| - * One fix would be to pass in these path elements separately, and allow this function to be
|
| - * called even if --writePath was not specified...
|
| - * const char *outputDir // NULL if we don't want to write image files to disk
|
| - * const char *filename // name we use within JSON summary, and as the filename within outputDir
|
| - *
|
| - * UPDATE: Now that outputDir and inputFilename are passed separately, we should be able to do that.
|
| + * @return bool True if the operation completed successfully.
|
| */
|
| static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& inputFilename,
|
| ImageResultsSummary *jsonSummaryPtr, bool useChecksumBasedFilenames,
|
| @@ -407,8 +398,10 @@ static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& i
|
| hash, tileNumberPtr);
|
| }
|
|
|
| - SkASSERT(!outputDir.isEmpty()); // TODO(epoger): we want to remove this constraint,
|
| - // as noted above
|
| + if (outputDir.isEmpty()) {
|
| + return true;
|
| + }
|
| +
|
| SkString dirPath;
|
| if (outputSubdirPtr) {
|
| dirPath = SkOSPath::SkPathJoin(outputDir.c_str(), outputSubdirPtr);
|
| @@ -470,16 +463,13 @@ bool PipePictureRenderer::render(SkBitmap** out) {
|
| pipeCanvas->drawPicture(*fPicture);
|
| writer.endRecording();
|
| fCanvas->flush();
|
| - if (!fOutputDir.isEmpty()) {
|
| - return write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| - fUseChecksumBasedFilenames);
|
| - }
|
| if (NULL != out) {
|
| *out = SkNEW(SkBitmap);
|
| setup_bitmap(*out, fPicture->width(), fPicture->height());
|
| fCanvas->readPixels(*out, 0, 0);
|
| }
|
| - return true;
|
| + return write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| + fUseChecksumBasedFilenames);
|
| }
|
|
|
| SkString PipePictureRenderer::getConfigNameInternal() {
|
| @@ -503,18 +493,13 @@ bool SimplePictureRenderer::render(SkBitmap** out) {
|
|
|
| fCanvas->drawPicture(*fPicture);
|
| fCanvas->flush();
|
| - if (!fOutputDir.isEmpty()) {
|
| - return write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| - fUseChecksumBasedFilenames);
|
| - }
|
| -
|
| if (NULL != out) {
|
| *out = SkNEW(SkBitmap);
|
| setup_bitmap(*out, fPicture->width(), fPicture->height());
|
| fCanvas->readPixels(*out, 0, 0);
|
| }
|
| -
|
| - return true;
|
| + return write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| + fUseChecksumBasedFilenames);
|
| }
|
|
|
| SkString SimplePictureRenderer::getConfigNameInternal() {
|
| @@ -722,10 +707,8 @@ bool TiledPictureRenderer::render(SkBitmap** out) {
|
| bool success = true;
|
| for (int i = 0; i < fTileRects.count(); ++i) {
|
| draw_tile_to_canvas(fCanvas, fTileRects[i], fPicture);
|
| - if (!fOutputDir.isEmpty()) {
|
| - success &= write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| - fUseChecksumBasedFilenames, &i);
|
| - }
|
| + success &= write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| + fUseChecksumBasedFilenames, &i);
|
| if (NULL != out) {
|
| if (fCanvas->readPixels(&bitmap, 0, 0)) {
|
| // Add this tile to the entire bitmap.
|
| @@ -807,9 +790,8 @@ public:
|
|
|
| for (int i = fStart; i < fEnd; i++) {
|
| draw_tile_to_canvas(fCanvas, fRects[i], fClone);
|
| - if ((!fOutputDir.isEmpty())
|
| - && !write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| - fUseChecksumBasedFilenames, &i)
|
| + if (!write(fCanvas, fOutputDir, fInputFilename, fJsonSummaryPtr,
|
| + fUseChecksumBasedFilenames, &i)
|
| && fSuccess != NULL) {
|
| *fSuccess = false;
|
| // If one tile fails to write to a file, do not continue drawing the rest.
|
|
|