blob: d45705f4f3fb1cf65a44121f31c5d27f08a06b9b [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3% %
4% %
5% %
6% CCCC OOO M M PPPP AAA RRRR EEEEE %
7% C O O MM MM P P A A R R E %
8% C O O M M M PPPP AAAAA RRRR EEE %
9% C O O M M P A A R R E %
10% CCCC OOO M M P A A R R EEEEE %
11% %
12% %
13% Image Comparison Utility %
14% %
15% %
16% Software Design %
cristyde984cd2013-12-01 14:49:27 +000017% Cristy %
cristy3ed852e2009-09-05 21:47:34 +000018% December 2003 %
19% %
20% %
cristyfe676ee2013-11-18 13:03:38 +000021% Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization %
cristy3ed852e2009-09-05 21:47:34 +000022% dedicated to making software imaging solutions freely available. %
23% %
24% You may not use this file except in compliance with the License. You may %
25% obtain a copy of the License at %
26% %
27% http://www.imagemagick.org/script/license.php %
28% %
29% Unless required by applicable law or agreed to in writing, software %
30% distributed under the License is distributed on an "AS IS" BASIS, %
31% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %
32% See the License for the specific language governing permissions and %
33% limitations under the License. %
34% %
35%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36%
37% The compare utility mathematically and visually annotates the difference
38% between an image and its reconstruction.
39%
40*/
41
42/*
43 Include declarations.
44*/
cristyee678102011-07-01 23:32:11 +000045#include "MagickWand/studio.h"
46#include "MagickWand/MagickWand.h"
cristy3ed852e2009-09-05 21:47:34 +000047
48/*
49%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50% %
51% %
52% %
53% M a i n %
54% %
55% %
56% %
57%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
58%
59%
60*/
cristy9c88feb2011-09-21 13:06:09 +000061static int CompareMain(int argc,char **argv)
cristy3ed852e2009-09-05 21:47:34 +000062{
63 char
cristy3980b0d2009-10-25 14:37:13 +000064 *metadata;
cristy3ed852e2009-09-05 21:47:34 +000065
cristyebd71f42013-09-13 22:35:48 +000066 const char
67 *option;
68
cristy3ed852e2009-09-05 21:47:34 +000069 ExceptionInfo
70 *exception;
71
72 ImageInfo
73 *image_info;
74
75 MagickBooleanType
cristyebd71f42013-09-13 22:35:48 +000076 dissimilar,
cristy3ed852e2009-09-05 21:47:34 +000077 status;
78
cristy3ed852e2009-09-05 21:47:34 +000079 MagickCoreGenesis(*argv,MagickTrue);
80 exception=AcquireExceptionInfo();
cristy3980b0d2009-10-25 14:37:13 +000081 image_info=AcquireImageInfo();
82 metadata=(char *) NULL;
cristy8a9106f2011-07-05 14:39:26 +000083 status=MagickCommandGenesis(image_info,CompareImagesCommand,argc,argv,
cristy3980b0d2009-10-25 14:37:13 +000084 &metadata,exception);
85 if (metadata != (char *) NULL)
86 metadata=DestroyString(metadata);
cristyebd71f42013-09-13 22:35:48 +000087 option=GetImageOption(image_info,"compare:dissimilar");
88 dissimilar=IsStringTrue(option);
cristy3980b0d2009-10-25 14:37:13 +000089 image_info=DestroyImageInfo(image_info);
cristy3ed852e2009-09-05 21:47:34 +000090 exception=DestroyExceptionInfo(exception);
91 MagickCoreTerminus();
cristyebd71f42013-09-13 22:35:48 +000092 if (dissimilar != MagickFalse)
93 return(1);
94 return(status == MagickFalse ? 0 : 2);
cristy3ed852e2009-09-05 21:47:34 +000095}
cristy66f9c3c2011-08-13 17:12:28 +000096
cristy07a3cca2012-12-10 13:09:10 +000097#if !defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__)
cristy66f9c3c2011-08-13 17:12:28 +000098int main(int argc,char **argv)
99{
100 return(CompareMain(argc,argv));
101}
102#else
103int wmain(int argc,wchar_t *argv[])
104{
105 char
106 **utf8;
107
108 int
109 status;
110
111 register int
112 i;
113
114 utf8=NTArgvToUTF8(argc,argv);
115 status=CompareMain(argc,utf8);
116 for (i=0; i < argc; i++)
117 utf8[i]=DestroyString(utf8[i]);
118 utf8=(char **) RelinquishMagickMemory(utf8);
cristyebd71f42013-09-13 22:35:48 +0000119 return(status == MagickFalse ? 0 : 1);
cristy66f9c3c2011-08-13 17:12:28 +0000120}
121#endif