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 |