diff options
author | Carl Worth <cworth@cworth.org> | 2006-12-14 03:49:31 -0800 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2006-12-14 07:58:01 -0800 |
commit | f175b23559f3ba759d222538fd28922c1cbe2196 (patch) | |
tree | 54827b3d3c4cc28ab6636ac5e5b9f0efbd87f3d5 /test/pdiff | |
parent | 18a4fa448fcdb6a72f427e997ee2b234f96a56f7 (diff) |
pdiff: Rename everything to .c and fix an last littele C++ isms.
The only things we had missed were a few new/delete pairs, and some
obvious header file fixups, (like not doing <string>).
Diffstat (limited to 'test/pdiff')
-rw-r--r-- | test/pdiff/CompareArgs.cpp | 114 | ||||
-rw-r--r-- | test/pdiff/Makefile.am | 6 | ||||
-rw-r--r-- | test/pdiff/args.c (renamed from test/pdiff/args.cpp) | 3 | ||||
-rw-r--r-- | test/pdiff/args.h | 2 | ||||
-rw-r--r-- | test/pdiff/lpyramid.c (renamed from test/pdiff/lpyramid.cpp) | 0 | ||||
-rw-r--r-- | test/pdiff/pdiff.c (renamed from test/pdiff/pdiff.cpp) | 64 | ||||
-rw-r--r-- | test/pdiff/pdiff.h | 16 | ||||
-rw-r--r-- | test/pdiff/perceptualdiff.c (renamed from test/pdiff/PerceptualDiff.cpp) | 2 |
8 files changed, 54 insertions, 153 deletions
diff --git a/test/pdiff/CompareArgs.cpp b/test/pdiff/CompareArgs.cpp deleted file mode 100644 index 3b58ff7d..00000000 --- a/test/pdiff/CompareArgs.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - Comapre Args - Copyright (C) 2006 Yangli Hector Yee - - This program is free software; you can redistribute it and/or modify it under the terms of the - GNU General Public License as published by the Free Software Foundation; either version 2 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with this program; - if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#include "CompareArgs.h" -#include <stdio.h> - -static const char* copyright = -"PerceptualDiff version 1.0, Copyright (C) 2006 Yangli Hector Yee\n\ -PerceptualDiff comes with ABSOLUTELY NO WARRANTY;\n\ -This is free software, and you are welcome\n\ -to redistribute it under certain conditions;\n\ -See the GPL page for details: http://www.gnu.org/copyleft/gpl.html\n\n"; - -static const char *usage = -"PeceptualDiff image1.tif image2.tif\n\n\ - Compares image1.tif and image2.tif using a perceptually based image metric\n\ - Options:\n\ -\t-verbose : Turns on verbose mode\n\ -\t-fov deg : Field of view in degrees (0.1 to 89.9)\n\ -\t-threshold p : #pixels p below which differences are ignored\n\ -\t-gamma g : Value to convert rgb into linear space (default 2.2)\n\ -\t-luminance l : White luminance (default 100.0 cdm^-2)\n\ -\n\ -\n Note: Input files can also be in the PNG format\ -\n"; - -CompareArgs::CompareArgs() -{ - surface_a = NULL; - surface_b = NULL; - Verbose = false; - FieldOfView = 45.0f; - Gamma = 2.2f; - ThresholdPixels = 100; - Luminance = 100.0f; -} - -CompareArgs::~CompareArgs() -{ - cairo_surface_destroy (surface_a); - cairo_surface_destroy (surface_b); -} - -bool CompareArgs::Parse_Args(int argc, char **argv) -{ - int i; - - if (argc < 3) { - fprintf (stderr, "%s", copyright); - fprintf (stderr, "%s", usage); - return false; - } - for (i = 0; i < argc; i++) { - if (i == 1) { - surface_a = cairo_image_surface_create_from_png (argv[1]); - if (cairo_surface_status (surface_a)) - { - fprintf (stderr, "FAIL: Cannot open %s: %s\n", - argv[1], cairo_status_to_string (cairo_surface_status (surface_a))); - return false; - } - } else if (i == 2) { - surface_b = cairo_image_surface_create_from_png (argv[2]); - if (cairo_surface_status (surface_b)) - { - fprintf (stderr, "FAIL: Cannot open %s: %s\n", - argv[2], cairo_status_to_string (cairo_surface_status (surface_b))); - return false; - } - } else { - if (strstr(argv[i], "-fov")) { - if (i + 1 < argc) { - FieldOfView = (float) atof(argv[i + 1]); - } - } else if (strstr(argv[i], "-verbose")) { - Verbose = true; - } else if (strstr(argv[i], "-threshold")) { - if (i + 1 < argc) { - ThresholdPixels = atoi(argv[i + 1]); - } - } else if (strstr(argv[i], "-gamma")) { - if (i + 1 < argc) { - Gamma = (float) atof(argv[i + 1]); - } - }else if (strstr(argv[i], "-luminance")) { - if (i + 1 < argc) { - Luminance = (float) atof(argv[i + 1]); - } - } - } - } /* i */ - return true; -} - -void CompareArgs::Print_Args() -{ - printf("Field of view is %f degrees\n", FieldOfView); - printf("Threshold pixels is %d pixels\n", ThresholdPixels); - printf("The Gamma is %f\n", Gamma); - printf("The Display's luminance is %f candela per meter squared\n", Luminance); -} diff --git a/test/pdiff/Makefile.am b/test/pdiff/Makefile.am index f53c8d2d..d72b2732 100644 --- a/test/pdiff/Makefile.am +++ b/test/pdiff/Makefile.am @@ -5,12 +5,12 @@ libpdiff_la_SOURCES = \ pdiff.h \ lpyramid.c \ lpyramid.h \ - pdiff.cpp + pdiff.c perceptualdiff_SOURCES = \ - args.cpp \ + args.c \ args.h \ - PerceptualDiff.cpp + perceptualdiff.c INCLUDES = -I$(top_srcdir)/src LDADD = libpdiff.la $(top_builddir)/src/libcairo.la diff --git a/test/pdiff/args.cpp b/test/pdiff/args.c index 9fbe23ed..0dfbea54 100644 --- a/test/pdiff/args.cpp +++ b/test/pdiff/args.c @@ -61,12 +61,13 @@ args_fini (args_t *args) bool args_parse (args_t *args, int argc, char **argv) { + int i; if (argc < 3) { fprintf (stderr, "%s", copyright); fprintf (stderr, "%s", usage); return false; } - for (int i = 0; i < argc; i++) { + for (i = 0; i < argc; i++) { if (i == 1) { args->surface_a = cairo_image_surface_create_from_png (argv[1]); if (cairo_surface_status (args->surface_a)) diff --git a/test/pdiff/args.h b/test/pdiff/args.h index 0197c902..aa6cf299 100644 --- a/test/pdiff/args.h +++ b/test/pdiff/args.h @@ -17,7 +17,7 @@ #ifndef _ARGS_H #define _ARGS_H -#include <cairo.h> +#include "pdiff.h" /* Args to pass into the comparison function */ typedef struct _args diff --git a/test/pdiff/lpyramid.cpp b/test/pdiff/lpyramid.c index 92915ab0..92915ab0 100644 --- a/test/pdiff/lpyramid.cpp +++ b/test/pdiff/lpyramid.c diff --git a/test/pdiff/pdiff.cpp b/test/pdiff/pdiff.c index 1609cdad..1b73e796 100644 --- a/test/pdiff/pdiff.cpp +++ b/test/pdiff/pdiff.c @@ -16,6 +16,8 @@ #include "lpyramid.h" #include <math.h> +#include <stdio.h> +#include <stdlib.h> #include <stdint.h> #include "pdiff.h" @@ -184,6 +186,18 @@ _get_blue (cairo_surface_t *surface, int i) return (((pixel & 0x000000ff) >> 0) * 255 + alpha / 2) / alpha; } +static void * +xmalloc (size_t size) +{ + void *buf; + + buf = malloc (size); + if (buf == NULL) { + fprintf (stderr, "Out of memory.\n"); + exit (1); + } +} + int pdiff_compare (cairo_surface_t *surface_a, cairo_surface_t *surface_b, @@ -196,19 +210,19 @@ pdiff_compare (cairo_surface_t *surface_a, unsigned int i; /* assuming colorspaces are in Adobe RGB (1998) convert to XYZ */ - float *aX = new float[dim]; - float *aY = new float[dim]; - float *aZ = new float[dim]; - float *bX = new float[dim]; - float *bY = new float[dim]; - float *bZ = new float[dim]; - float *aLum = new float[dim]; - float *bLum = new float[dim]; - - float *aA = new float[dim]; - float *bA = new float[dim]; - float *aB = new float[dim]; - float *bB = new float[dim]; + float *aX = xmalloc (dim * sizeof (float)); + float *aY = xmalloc (dim * sizeof (float)); + float *aZ = xmalloc (dim * sizeof (float)); + float *bX = xmalloc (dim * sizeof (float)); + float *bY = xmalloc (dim * sizeof (float)); + float *bZ = xmalloc (dim * sizeof (float)); + float *aLum = xmalloc (dim * sizeof (float)); + float *bLum = xmalloc (dim * sizeof (float)); + + float *aA = xmalloc (dim * sizeof (float)); + float *bA = xmalloc (dim * sizeof (float)); + float *aB = xmalloc (dim * sizeof (float)); + float *bB = xmalloc (dim * sizeof (float)); unsigned int x, y, w, h; @@ -328,20 +342,20 @@ pdiff_compare (cairo_surface_t *surface_a, } } - if (aX) delete[] aX; - if (aY) delete[] aY; - if (aZ) delete[] aZ; - if (bX) delete[] bX; - if (bY) delete[] bY; - if (bZ) delete[] bZ; - if (aLum) delete[] aLum; - if (bLum) delete[] bLum; + free (aX); + free (aY); + free (aZ); + free (bX); + free (bY); + free (bZ); + free (aLum); + free (bLum); lpyramid_destroy (la); lpyramid_destroy (lb); - if (aA) delete aA; - if (bA) delete bA; - if (aB) delete aB; - if (bB) delete bB; + free (aA); + free (bA); + free (aB); + free (bB); return pixels_failed; } diff --git a/test/pdiff/pdiff.h b/test/pdiff/pdiff.h index d20ae86d..b398cc6f 100644 --- a/test/pdiff/pdiff.h +++ b/test/pdiff/pdiff.h @@ -17,12 +17,16 @@ #ifndef _PDIFF_H #define _PDIFF_H -#ifdef __cplusplus -extern "C" { -#endif - #include <cairo.h> +typedef int bool; +#ifndef true +#define true 1 +#endif +#ifndef false +#define false 0 +#endif + /* Image comparison metric using Yee's method (and a cairo interface) * References: A Perceptual Metric for Production Testing, Hector Yee, Journal of Graphics Tools 2004 */ @@ -33,8 +37,4 @@ pdiff_compare (cairo_surface_t *surface_a, double luminance, double field_of_view); -#ifdef __cplusplus -} -#endif - #endif diff --git a/test/pdiff/PerceptualDiff.cpp b/test/pdiff/perceptualdiff.c index 1df3614a..953558e0 100644 --- a/test/pdiff/PerceptualDiff.cpp +++ b/test/pdiff/perceptualdiff.c @@ -17,9 +17,9 @@ */ #include <stdio.h> +#include <stdint.h> #include <string.h> #include <math.h> -#include <string> #include "lpyramid.h" #include "args.h" #include "pdiff.h" |