| Index: tools/PictureRenderer.h
|
| diff --git a/tools/PictureRenderer.h b/tools/PictureRenderer.h
|
| index 68374dfe41a0091899615ce4dcc384ee6a71e9b4..8192cacc0d5d28a6fca8996ab588b2f81d862a57 100644
|
| --- a/tools/PictureRenderer.h
|
| +++ b/tools/PictureRenderer.h
|
| @@ -44,6 +44,14 @@ class TiledPictureRenderer;
|
| class ImageResultsSummary {
|
| public:
|
| /**
|
| + * Adds this bitmap hash to the summary of results.
|
| + *
|
| + * @param testName name of the test
|
| + * @param hash hash to store
|
| + */
|
| + void add(const char *testName, uint64_t hash);
|
| +
|
| + /**
|
| * Adds this bitmap's hash to the summary of results.
|
| *
|
| * @param testName name of the test
|
| @@ -105,8 +113,16 @@ public:
|
|
|
| /**
|
| * Called with each new SkPicture to render.
|
| + *
|
| + * @param pict The SkPicture to render.
|
| + * @param outputDir The output directory within which this renderer should write files,
|
| + * or NULL if this renderer should not write files at all.
|
| + * @param inputFilename The name of the input file we are rendering.
|
| + * @param useChecksumBasedFilenames Whether to use checksum-based filenames when writing
|
| + * bitmap images to disk.
|
| */
|
| - virtual void init(SkPicture* pict);
|
| + virtual void init(SkPicture* pict, const SkString* outputDir,
|
| + const SkString* inputFilename, bool useChecksumBasedFilenames);
|
|
|
| /**
|
| * Set the viewport so that only the portion listed gets drawn.
|
| @@ -125,15 +141,20 @@ public:
|
| virtual void setup() {}
|
|
|
| /**
|
| - * Perform work that is to be timed. Typically this is rendering, but is also used for recording
|
| - * and preparing picture for playback by the subclasses which do those.
|
| - * If path is non-null, subclass implementations should call write().
|
| - * @param path If non-null, also write the output to the file specified by path. path should
|
| - * have no extension; it will be added by write().
|
| - * @return bool True if rendering succeeded and, if path is non-null, the output was
|
| - * successfully written to a file.
|
| + * Perform the work. If this is being called within the context of bench_pictures,
|
| + * this is the step that will be timed.
|
| + *
|
| + * Typically "the work" is rendering an SkPicture into a bitmap, but in some subclasses
|
| + * it is recording the source SkPicture into another SkPicture.
|
| + *
|
| + * If fOutputDir has been specified, the result of the work will be written to that dir.
|
| + *
|
| + * @param out If non-null, the implementing subclass MAY allocate an SkBitmap, copy the
|
| + * output image into it, and return it here. (Some subclasses ignore this parameter)
|
| + * @return bool True if rendering succeeded and, if fOutputDir had been specified, the output
|
| + * was successfully written to a file.
|
| */
|
| - virtual bool render(const SkString* path, SkBitmap** out = NULL) = 0;
|
| + virtual bool render(SkBitmap** out = NULL) = 0;
|
|
|
| /**
|
| * Called once finished with a particular SkPicture, before calling init again, and before
|
| @@ -371,11 +392,14 @@ public:
|
| protected:
|
| SkAutoTUnref<SkCanvas> fCanvas;
|
| SkPicture* fPicture;
|
| + bool fUseChecksumBasedFilenames;
|
| ImageResultsSummary* fJsonSummaryPtr;
|
| SkDeviceTypes fDeviceType;
|
| BBoxHierarchyType fBBoxHierarchyType;
|
| DrawFilterFlags fDrawFilters[SkDrawFilter::kTypeCount];
|
| SkString fDrawFiltersConfig;
|
| + SkString fOutputDir;
|
| + SkString fInputFilename;
|
| SkTileGridPicture::TileGridInfo fGridInfo; // used when fBBoxHierarchyType is TileGrid
|
|
|
| void buildBBoxHierarchy();
|
| @@ -402,6 +426,11 @@ protected:
|
| SkCanvas* setupCanvas();
|
| virtual SkCanvas* setupCanvas(int width, int height);
|
|
|
| + /**
|
| + * Copy src to dest; if src==NULL, set dest to empty string.
|
| + */
|
| + static void CopyString(SkString* dest, const SkString* src);
|
| +
|
| private:
|
| SkISize fViewport;
|
| SkScalar fScaleFactor;
|
| @@ -421,7 +450,7 @@ private:
|
| * to time.
|
| */
|
| class RecordPictureRenderer : public PictureRenderer {
|
| - virtual bool render(const SkString*, SkBitmap** out = NULL) SK_OVERRIDE;
|
| + virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
|
|
|
| virtual SkString getPerIterTimeFormat() SK_OVERRIDE { return SkString("%.4f"); }
|
|
|
| @@ -436,7 +465,7 @@ private:
|
|
|
| class PipePictureRenderer : public PictureRenderer {
|
| public:
|
| - virtual bool render(const SkString*, SkBitmap** out = NULL) SK_OVERRIDE;
|
| + virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
|
|
|
| private:
|
| virtual SkString getConfigNameInternal() SK_OVERRIDE;
|
| @@ -446,9 +475,10 @@ private:
|
|
|
| class SimplePictureRenderer : public PictureRenderer {
|
| public:
|
| - virtual void init(SkPicture* pict) SK_OVERRIDE;
|
| + virtual void init(SkPicture* pict, const SkString* outputDir,
|
| + const SkString* inputFilename, bool useChecksumBasedFilenames) SK_OVERRIDE;
|
|
|
| - virtual bool render(const SkString*, SkBitmap** out = NULL) SK_OVERRIDE;
|
| + virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
|
|
|
| private:
|
| virtual SkString getConfigNameInternal() SK_OVERRIDE;
|
| @@ -460,14 +490,16 @@ class TiledPictureRenderer : public PictureRenderer {
|
| public:
|
| TiledPictureRenderer();
|
|
|
| - virtual void init(SkPicture* pict) SK_OVERRIDE;
|
| + virtual void init(SkPicture* pict, const SkString* outputDir,
|
| + const SkString* inputFilename, bool useChecksumBasedFilenames) SK_OVERRIDE;
|
|
|
| /**
|
| - * Renders to tiles, rather than a single canvas. If a path is provided, a separate file is
|
| + * Renders to tiles, rather than a single canvas.
|
| + * If fOutputDir was provided, a separate file is
|
| * created for each tile, named "path0.png", "path1.png", etc.
|
| * Multithreaded mode currently does not support writing to a file.
|
| */
|
| - virtual bool render(const SkString* path, SkBitmap** out = NULL) SK_OVERRIDE;
|
| + virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
|
|
|
| virtual void end() SK_OVERRIDE;
|
|
|
| @@ -583,12 +615,13 @@ public:
|
|
|
| ~MultiCorePictureRenderer();
|
|
|
| - virtual void init(SkPicture* pict) SK_OVERRIDE;
|
| + virtual void init(SkPicture* pict, const SkString* outputDir,
|
| + const SkString* inputFilename, bool useChecksumBasedFilenames) SK_OVERRIDE;
|
|
|
| /**
|
| * Behaves like TiledPictureRenderer::render(), only using multiple threads.
|
| */
|
| - virtual bool render(const SkString* path, SkBitmap** out = NULL) SK_OVERRIDE;
|
| + virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
|
|
|
| virtual void end() SK_OVERRIDE;
|
|
|
| @@ -615,7 +648,7 @@ class PlaybackCreationRenderer : public PictureRenderer {
|
| public:
|
| virtual void setup() SK_OVERRIDE;
|
|
|
| - virtual bool render(const SkString*, SkBitmap** out = NULL) SK_OVERRIDE;
|
| + virtual bool render(SkBitmap** out = NULL) SK_OVERRIDE;
|
|
|
| virtual SkString getPerIterTimeFormat() SK_OVERRIDE { return SkString("%.4f"); }
|
|
|
|
|