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,
     32                       const BitmapsToCreate& bitmapsToCreate,
     33                       Result* result) const SK_OVERRIDE;
     34 
     35 protected:
     36 #if SK_SUPPORT_OPENCL
     37     virtual bool onInit() SK_OVERRIDE;
     38 #endif
     39 
     40 private:
     41 #if SK_SUPPORT_OPENCL
     42     cl_kernel fKernel;
     43 
     44     typedef SkCLImageDiffer INHERITED;
     45 #else
     46     typedef SkImageDiffer INHERITED;
     47 #endif
     48 };
     49 
     50 #endif
     51