158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger/* 258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Copyright 2013 Google Inc. 358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * 458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * found in the LICENSE file. 658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger */ 758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#ifndef SkDifferentPixelsMetric_DEFINED 958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#define SkDifferentPixelsMetric_DEFINED 1058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#include "SkTDArray.h" 1258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#if SK_SUPPORT_OPENCL 1458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#include "SkCLImageDiffer.h" 1558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#else 1658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#include "SkImageDiffer.h" 1758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 1858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 1958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger/** 2058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * A differ that measures the percentage of different corresponding pixels. If the two images are 2158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * not the same size or have no pixels, the result will always be zero. 2258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger */ 2358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDifferentPixelsMetric : 2458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#if SK_SUPPORT_OPENCL 2558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger public SkCLImageDiffer { 2658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#else 2758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger public SkImageDiffer { 2858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 2958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerpublic: 30910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger virtual const char* getName() const SK_OVERRIDE; 31910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger virtual bool diff(SkBitmap* baseline, SkBitmap* test, bool computeMask, 32910f694aefb0b671dd8522a9afe9b6be645701c1Derek Sollenberger Result* result) const SK_OVERRIDE; 3358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 3458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprotected: 3558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#if SK_SUPPORT_OPENCL 3658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool onInit() SK_OVERRIDE; 3758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 3858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 3958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprivate: 4058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#if SK_SUPPORT_OPENCL 4158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger cl_kernel fKernel; 4258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 4358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger typedef SkCLImageDiffer INHERITED; 4458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#else 4558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger typedef SkImageDiffer INHERITED; 4658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 4758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger}; 4858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 4958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif 50