OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright 2013 Google Inc. | |
3 * | |
4 * Use of this source code is governed by a BSD-style license that can be | |
5 * found in the LICENSE file. | |
6 */ | |
7 | |
8 #ifndef SkImageDiffer_DEFINED | |
9 #define SkImageDiffer_DEFINED | |
10 | |
11 #include "SkBitmap.h" | |
12 | |
13 /** | |
14 * Encapsulates an image difference metric algorithm that can be potentially run
asynchronously. | |
15 */ | |
16 class SkImageDiffer { | |
17 public: | |
18 SkImageDiffer(); | |
19 virtual ~SkImageDiffer(); | |
20 | |
21 static const double RESULT_CORRECT; | |
22 static const double RESULT_INCORRECT; | |
23 | |
24 struct Result { | |
25 double result; | |
26 int poiCount; | |
27 // TODO(djsollen): Figure out a way that the differ can report which of
the | |
28 // optional fields it has filled in. See https://bug.skia.org/2712 ('al
low | |
29 // skpdiff to report different sets of result fields for different compa
rison algorithms') | |
30 SkBitmap poiAlphaMask; // optional | |
31 SkBitmap rgbDiffBitmap; // optional | |
32 SkBitmap whiteDiffBitmap; // optional | |
33 int maxRedDiff; // optional | |
34 int maxGreenDiff; // optional | |
35 int maxBlueDiff; // optional | |
36 double timeElapsed; // optional | |
37 }; | |
38 | |
39 // A bitfield indicating which bitmap types we want a differ to create. | |
40 // | |
41 // TODO(epoger): Remove whiteDiffBitmap, because alphaMask can provide | |
42 // the same functionality and more. | |
43 // It will be a little bit tricky, because the rebaseline_server client | |
44 // and server side code will both need to change to use the alphaMask. | |
45 struct BitmapsToCreate { | |
46 bool alphaMask; | |
47 bool rgbDiff; | |
48 bool whiteDiff; | |
49 }; | |
50 | |
51 /** | |
52 * Gets a unique and descriptive name of this differ | |
53 * @return A statically allocated null terminated string that is the name of
this differ | |
54 */ | |
55 virtual const char* getName() const = 0; | |
56 | |
57 /** | |
58 * Gets if this differ needs to be initialized with and OpenCL device and co
ntext. | |
59 */ | |
60 virtual bool requiresOpenCL() const { return false; } | |
61 | |
62 /** | |
63 * diff on a pair of bitmaps. | |
64 * @param baseline The correct bitmap | |
65 * @param test The bitmap whose difference is being tested | |
66 * @param bitmapsToCreate Which bitmaps the differ should attempt to creat
e | |
67 * @return true on success, and false in the case of failure | |
68 */ | |
69 virtual bool diff(SkBitmap* baseline, SkBitmap* test, const BitmapsToCreate&
bitmapsToCreate, | |
70 Result* result) const = 0; | |
71 }; | |
72 | |
73 #endif | |
OLD | NEW |