00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_COLOR_PRIVATE_H
00019 #define MAGICKCORE_COLOR_PRIVATE_H
00020
00021 #include "MagickCore/image.h"
00022 #include "MagickCore/image-private.h"
00023
00024 #if defined(__cplusplus) || defined(c_plusplus)
00025 extern "C" {
00026 #endif
00027
00028 extern MagickPrivate MagickBooleanType
00029 ColorComponentGenesis(void),
00030 IsEquivalentAlpha(const Image *,const PixelInfo *,const PixelInfo *),
00031 IsEquivalentIntensity(const Image *,const PixelInfo *,const PixelInfo *);
00032
00033 extern MagickPrivate void
00034 ColorComponentTerminus(void);
00035
00036 static inline MagickBooleanType GetColorRange(const char *color,
00037 PixelInfo *start,PixelInfo *stop,ExceptionInfo *exception)
00038 {
00039 char
00040 start_color[MagickPathExtent] = "white",
00041 stop_color[MagickPathExtent] = "black";
00042
00043 MagickBooleanType
00044 status;
00045
00046 if (*color != '\0')
00047 {
00048 register char
00049 *p;
00050
00051 (void) CopyMagickString(start_color,color,MagickPathExtent);
00052 for (p=start_color; (*p != '-') && (*p != '\0'); p++)
00053 if (*p == '(')
00054 {
00055 for (p++; (*p != ')') && (*p != '\0'); p++);
00056 if (*p == '\0')
00057 break;
00058 }
00059 if (*p == '-')
00060 (void) CopyMagickString(stop_color,p+1,MagickPathExtent);
00061 *p='\0';
00062 }
00063 status=QueryColorCompliance(start_color,AllCompliance,start,exception);
00064 if (status == MagickFalse)
00065 return(status);
00066 return(QueryColorCompliance(stop_color,AllCompliance,stop,exception));
00067 }
00068
00069 static inline double GetFuzzyColorDistance(const Image *p,const Image *q)
00070 {
00071 double
00072 fuzz;
00073
00074 fuzz=(double) MagickMax(MagickMax(p->fuzz,q->fuzz),(MagickRealType)
00075 MagickSQ1_2);
00076 return(fuzz*fuzz);
00077 }
00078
00079 #if defined(__cplusplus) || defined(c_plusplus)
00080 }
00081 #endif
00082
00083 #endif