Home | History | Annotate | Download | only in skpdiff
      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 SkDifferentPixelsMetric_DEFINED
      9 #define SkDifferentPixelsMetric_DEFINED
     10 
     11 #include "SkTDArray.h"
     12 
     13 #if SK_SUPPORT_OPENCL
     14 #include "SkCLImageDiffer.h"
     15 #else
     16 #include "SkImageDiffer.h"
     17 #endif
     18 
     19 /**
     20  * A differ that measures the percentage of different corresponding pixels. If the two images are
     21  * not the same size or have no pixels, the result will always be zero.
     22  */
     23 class SkDifferentPixelsMetric :
     24 #if SK_SUPPORT_OPENCL
     25     public SkCLImageDiffer {
     26 #else
     27     public SkImageDiffer {
     28 #endif
     29 public:
     30     virtual const char* getName() const SK_OVERRIDE;
     31     virtual bool diff(SkBitmap* baseline, SkBitmap* test, bool computeMask,
     32                       Result* result) const SK_OVERRIDE;
     33 
     34 protected:
     35 #if SK_SUPPORT_OPENCL
     36     virtual bool onInit() SK_OVERRIDE;
     37 #endif
     38 
     39 private:
     40 #if SK_SUPPORT_OPENCL
     41     cl_kernel fKernel;
     42 
     43     typedef SkCLImageDiffer INHERITED;
     44 #else
     45     typedef SkImageDiffer INHERITED;
     46 #endif
     47 };
     48 
     49 #endif
     50