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

Unified Diff: tools/skpdiff/SkImageDiffer.h

Issue 60833002: fix multithread related crashes in skpdiff (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: addressing comments Created 7 years, 1 month 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
Index: tools/skpdiff/SkImageDiffer.h
diff --git a/tools/skpdiff/SkImageDiffer.h b/tools/skpdiff/SkImageDiffer.h
index 2c1fa7e78853cdb3b15f7f97c79ce1719db45632..641bbe8f8f863b4610348b5b41573564e21fc88b 100644
--- a/tools/skpdiff/SkImageDiffer.h
+++ b/tools/skpdiff/SkImageDiffer.h
@@ -8,8 +8,7 @@
#ifndef SkImageDiffer_DEFINED
#define SkImageDiffer_DEFINED
-class SkBitmap;
-struct SkIPoint;
+#include "SkBitmap.h"
/**
* Encapsulates an image difference metric algorithm that can be potentially run asynchronously.
@@ -22,92 +21,33 @@ public:
static const double RESULT_CORRECT;
static const double RESULT_INCORRECT;
+ struct Result {
+ double result;
+ int poiCount;
+ SkBitmap poiAlphaMask; // optional
+ double timeElapsed; // optional
+ };
+
/**
* Gets a unique and descriptive name of this differ
* @return A statically allocated null terminated string that is the name of this differ
*/
- virtual const char* getName() = 0;
-
- /**
- * Gets if this differ is in a usable state
- * @return True if this differ can be used, false otherwise
- */
- bool isGood() { return fIsGood; }
+ virtual const char* getName() const = 0;
/**
* Gets if this differ needs to be initialized with and OpenCL device and context.
*/
- virtual bool requiresOpenCL() { return false; }
-
- /**
- * Enables the generation of an alpha mask for all points of interest.
- * @return True if the differ supports generating an alpha mask and false otherwise.
- */
- virtual bool enablePOIAlphaMask() { return false; }
-
- /**
- * Wraps a call to queueDiff by loading the given filenames into SkBitmaps
- * @param baseline The file path of the baseline image
- * @param test The file path of the test image
- * @return The results of queueDiff with the loaded bitmaps
- */
- int queueDiffOfFile(const char baseline[], const char test[]);
-
- /**
- * Queues a diff on a pair of bitmaps to be done at some future time.
- * @param baseline The correct bitmap
- * @param test The bitmap whose difference is being tested
- * @return An non-negative diff ID on success, a negative integer on failure.
- */
- virtual int queueDiff(SkBitmap* baseline, SkBitmap* test) = 0;
-
- /**
- * Gets whether a queued diff of the given id has finished
- * @param id The id of the queued diff to query
- * @return True if the queued diff is finished and has results, false otherwise
- */
- virtual bool isFinished(int id) = 0;
-
- /**
- * Deletes memory associated with a diff and its results. This may block execution until the
- * diff is finished,
- * @param id The id of the diff to query
- */
- virtual void deleteDiff(int id) = 0;
+ virtual bool requiresOpenCL() const { return false; }
/**
- * Gets the results of the queued diff of the given id. The results are only meaningful after
- * the queued diff has finished.
- * @param id The id of the queued diff to query
+ * diff on a pair of bitmaps.
+ * @param baseline The correct bitmap
+ * @param test The bitmap whose difference is being tested
+ * @param computeMask true if the differ is to attempt to create poiAlphaMask
+ * @return true on success, and false in the case of failure
*/
- virtual double getResult(int id) = 0;
-
- /**
- * Gets the number of points of interest for the diff of the given id. The results are only
- * meaningful after the queued diff has finished.
- * @param id The id of the queued diff to query
- */
- virtual int getPointsOfInterestCount(int id) = 0;
-
- /**
- * Gets an array of the points of interest for the diff of the given id. The results are only
- * meaningful after the queued diff has finished.
- * @param id The id of the queued diff to query
- */
- virtual SkIPoint* getPointsOfInterest(int id) = 0;
-
- /*
- * Gets a bitmap containing an alpha mask containing transparent pixels at the points of
- * interest for the diff of the given id. The results are only meaningful after the
- * queued diff has finished.
- * @param id The id of the queued diff to query
- */
- virtual SkBitmap* getPointsOfInterestAlphaMask(int id) { return NULL; }
-
-
-protected:
- bool fIsGood;
+ virtual bool diff(SkBitmap* baseline, SkBitmap* test, bool computeMask,
+ Result* result) const = 0;
};
-
#endif

Powered by Google App Engine
This is Rietveld 408576698