summaryrefslogtreecommitdiffstats
path: root/tests/shared/compareimage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/shared/compareimage.cpp')
-rw-r--r--tests/shared/compareimage.cpp165
1 files changed, 0 insertions, 165 deletions
diff --git a/tests/shared/compareimage.cpp b/tests/shared/compareimage.cpp
deleted file mode 100644
index 74bf95db..00000000
--- a/tests/shared/compareimage.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "compareimage.h"
-
-//#define DEBUG_QIMAGECOMPARE
-
-#ifdef DEBUG_QIMAGECOMPARE
-#include <QDebug>
-#endif
-
-// qProportionDifferentRGBPixels compares two images and returns a float
-// between 0.0 and 1.0 indicating the proportion of pixels with a difference
-// greater than the relevant threshold in RGB space, where 0.0 indicates that
-// every pixel matches, and 1.0 indicates that no pixels match.
-//
-// For example, the RGB colors 0x0088ff and 0x000000 have a red difference
-// of 0, a green difference of 0x88, and a blue difference of 0xff. If any
-// of these values is greater than the corresponding threshold, the pixel
-// would be considered "different".
-//
-// If the images are different sizes, the function compares those pixels that
-// fall in the overlapping area. If one image is simply smaller than the
-// other, this will be the size of the smaller image.
-
-float qProportionDifferentRGBPixels(const QImage& img1, const QImage& img2, int redThreshold, int greenThreshold, int blueThreshold, int alphaThreshold)
-{
- int result = 0;
-
- int width = qMin(img1.width(), img2.width());
- int height = qMin(img1.height(), img2.height());
- int pixelcount = 0;
-
-#ifdef DEBUG_QIMAGECOMPARE
- int sumDiff = 0;
- QImage *resultImage = new QImage (width,height,QImage::Format_RGB16);
-#endif
-
-
- for (int y = 0; y < height; y++)
- {
- for (int x = 0; x < width; x++)
- {
- QColor pix1 = img1.pixel(x,y);
- QColor pix2 = img2.pixel(x,y);
- int redDiff = qMax(pix1.red(),pix2.red()) - qMin(pix1.red(),pix2.red());
- int greenDiff = qMax(pix1.green(),pix2.green()) - qMin(pix1.green(),pix2.green());
- int blueDiff = qMax(pix1.blue(),pix2.blue()) - qMin(pix1.blue(),pix2.blue());
- int alphaDiff = qMax(pix1.alpha(),pix2.alpha()) - qMin(pix1.alpha(),pix2.alpha());
-
-#ifdef DEBUG_QIMAGECOMPARE
- QColor colorDiff;
- colorDiff.setRed(redDiff);
- colorDiff.setGreen(greenDiff);
- colorDiff.setBlue(blueDiff);
- colorDiff.setAlpha(255-alphaDiff);
- sumDiff += redDiff+greenDiff+blueDiff;
-#endif
-
- pixelcount++;
- if (redDiff > redThreshold
- || greenDiff > greenThreshold
- || blueDiff > blueThreshold
- || alphaDiff > alphaThreshold)
- {
- result++;
-#ifdef DEBUG_QIMAGECOMPARE
- resultImage->setPixel(x,y, colorDiff.rgba());
-#endif
- }
- }
- }
-#ifdef DEBUG_QIMAGECOMPARE
- qDebug() << "qimageCompare result was: " << result << "/"<<pixelcount<<" = "<< (int)(((float)result/(float)pixelcount)*100) << "%";
- qDebug() << "Sum of absolute differences was:"<< sumDiff;
- qDebug() << "Average difference per pixel was:" << (float)sumDiff/(float)pixelcount;
-#endif
- return (float)result/(float)pixelcount;
-};
-
-
-
-inline float qProportionDifferentRGBPixels(const QImage& img1, const QImage& img2, int threshold )
-{
- return qProportionDifferentRGBPixels(img1, img2, threshold, threshold, threshold);
-}
-
-bool qFuzzyCompare(const QImage& img1, const QImage& img2)
-{
- // The two images must have the same size.
- if (img1.width() != img2.width() || img1.height() != img2.height())
- return false;
-
-
- int count = 0;
- for (int y = 0; y < img1.height(); ++y) {
- for (int x = 0; x < img1.width(); ++x) {
- // Compare the top two bits of the red, green, and blue
- // values for equality. This should factor out rounding
- // errors due to 16-bit vs 32-bit conversions and so on.
- // We assume that the source images use primary colors.
- if ((img1.pixel(x, y) & 0x00C0C0C0) == (img2.pixel(x, y) & 0x00C0C0C0))
- ++count;
- }
- }
-
- // We consider the images the same if at least 95% of the
- // pixels have the same or very similar RGB values.
-
- // 64 is a rough approximation of bitwise & 0xC0
- return qProportionDifferentRGBPixels(img1, img2, 64) <= 0.05001;
- //return (count >= (img1.width() * img1.height() * 95 / 100));
-}
-
-bool qFuzzyCompare(const QImage& img1, const QColor& color)
-{
- int count = 0;
- for (int y = 0; y < img1.height(); ++y) {
- for (int x = 0; x < img1.width(); ++x) {
- if ((img1.pixel(x, y) & 0x00C0C0C0) == (color.rgb() & 0x00C0C0C0))
- ++count;
- }
- }
- return (count >= (img1.width() * img1.height() * 95 / 100));
-}
-
-