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

Unified Diff: tools/PictureRenderer.cpp

Issue 273783004: add --readJsonSummaryPath to render_pictures (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: make BitmapAndDigest lazily compute the bitmap Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/PictureRenderer.h ('k') | tools/image_expectations.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/PictureRenderer.cpp
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
index b5dc0fc93dad973a2d763731e46d195aeb836e92..74567001e6a1c545aaf936decf4612770ad9f0e8 100644
--- a/tools/PictureRenderer.cpp
+++ b/tools/PictureRenderer.cpp
@@ -275,7 +275,7 @@ uint32_t PictureRenderer::recordFlags() {
* @return bool True if the operation completed successfully.
*/
static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& inputFilename,
- ImageResultsSummary *jsonSummaryPtr, bool useChecksumBasedFilenames,
+ ImageResultsAndExpectations *jsonSummaryPtr, bool useChecksumBasedFilenames,
const int* tileNumberPtr=NULL) {
SkASSERT(canvas != NULL);
if (NULL == canvas) {
@@ -284,14 +284,11 @@ static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& i
SkBitmap bitmap;
SkISize size = canvas->getDeviceSize();
- sk_tools::setup_bitmap(&bitmap, size.width(), size.height());
-
- // Make sure we only compute the bitmap hash once (at most).
- uint64_t hash;
- bool generatedHash = false;
+ setup_bitmap(&bitmap, size.width(), size.height());
canvas->readPixels(&bitmap, 0, 0);
- sk_tools::force_all_opaque(bitmap);
+ force_all_opaque(bitmap);
+ BitmapAndDigest bitmapAndDigest(bitmap);
SkString escapedInputFilename(inputFilename);
replace_char(&escapedInputFilename, '.', '_');
@@ -299,18 +296,13 @@ static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& i
// TODO(epoger): what about including the config type within outputFilename? That way,
// we could combine results of different config types without conflicting filenames.
SkString outputFilename;
+ const ImageDigest *imageDigestPtr = bitmapAndDigest.getImageDigestPtr();
epoger 2014/05/20 19:41:57 I think this probably accounts for the measured pe
const char *outputSubdirPtr = NULL;
if (useChecksumBasedFilenames) {
- SkASSERT(!generatedHash);
- SkAssertResult(SkBitmapHasher::ComputeDigest(bitmap, &hash));
- generatedHash = true;
-
outputSubdirPtr = escapedInputFilename.c_str();
- // TODO(epoger): The string constant below will be removed when I land
- // the second part of https://codereview.chromium.org/261313004/
- // ('add --readJsonSummaryPath to render_pictures')
- outputFilename.set("bitmap-64bitMD5_");
- outputFilename.appendU64(hash);
+ outputFilename.set(imageDigestPtr->getHashType());
+ outputFilename.append("_");
+ outputFilename.appendU64(imageDigestPtr->getHashValue());
} else {
outputFilename.set(escapedInputFilename);
if (NULL != tileNumberPtr) {
@@ -321,11 +313,7 @@ static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& i
outputFilename.append(".png");
if (NULL != jsonSummaryPtr) {
- if (!generatedHash) {
- SkAssertResult(SkBitmapHasher::ComputeDigest(bitmap, &hash));
- generatedHash = true;
- }
-
+ const ImageDigest *imageDigestPtr = bitmapAndDigest.getImageDigestPtr();
SkString outputRelativePath;
if (outputSubdirPtr) {
outputRelativePath.set(outputSubdirPtr);
@@ -336,7 +324,7 @@ static bool write(SkCanvas* canvas, const SkString& outputDir, const SkString& i
}
jsonSummaryPtr->add(inputFilename.c_str(), outputRelativePath.c_str(),
- hash, tileNumberPtr);
+ *imageDigestPtr, tileNumberPtr);
}
if (outputDir.isEmpty()) {
@@ -707,7 +695,8 @@ class CloneData : public SkRunnable {
public:
CloneData(SkPicture* clone, SkCanvas* canvas, SkTDArray<SkRect>& rects, int start, int end,
- SkRunnable* done, ImageResultsSummary* jsonSummaryPtr, bool useChecksumBasedFilenames)
+ SkRunnable* done, ImageResultsAndExpectations* jsonSummaryPtr,
+ bool useChecksumBasedFilenames)
: fClone(clone)
, fCanvas(canvas)
, fRects(rects)
@@ -778,7 +767,7 @@ private:
// and only set to false upon failure to write to a PNG.
SkRunnable* fDone;
SkBitmap* fBitmap;
- ImageResultsSummary* fJsonSummaryPtr;
+ ImageResultsAndExpectations* fJsonSummaryPtr;
bool fUseChecksumBasedFilenames;
};
« no previous file with comments | « tools/PictureRenderer.h ('k') | tools/image_expectations.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698