39 #include "magick/studio.h" 40 #include "magick/configure.h" 41 #include "magick/exception.h" 42 #include "magick/exception-private.h" 43 #include "magick/hashmap.h" 44 #include "magick/locale_.h" 45 #include "magick/memory_.h" 46 #include "magick/option.h" 47 #include "magick/string_.h" 48 #include "magick/utility.h" 49 #include "magick/version.h" 50 #include "magick/version-private.h" 55 #define MagickURLFilename "index.html" 75 MagickExport
const char *GetMagickCopyright(
void)
77 return(MagickCopyright);
100 MagickExport
const char *GetMagickDelegates(
void)
103 #if defined(MAGICKCORE_AUTOTRACE_DELEGATE) 106 #if defined(MAGICKCORE_BZLIB_DELEGATE) 109 #if defined(MAGICKCORE_CAIRO_DELEGATE) 112 #if defined(MAGICKCORE_DJVU_DELEGATE) 115 #if defined(MAGICKCORE_DPS_DELEGATE) 118 #if defined(MAGICKCORE_EMF_DELEGATE) 121 #if defined(MAGICKCORE_FFTW_DELEGATE) 124 #if defined(MAGICKCORE_FLIF_DELEGATE) 127 #if defined(MAGICKCORE_FONTCONFIG_DELEGATE) 130 #if defined(MAGICKCORE_FPX_DELEGATE) 133 #if defined(MAGICKCORE_FREETYPE_DELEGATE) 136 #if defined(MAGICKCORE_GS_DELEGATE) || defined(MAGICKCORE_WINDOWS_SUPPORT) 139 #if defined(MAGICKCORE_GVC_DELEGATE) 142 #if defined(MAGICKCORE_HEIC_DELEGATE) 145 #if defined(MAGICKCORE_JBIG_DELEGATE) 148 #if defined(MAGICKCORE_JPEG_DELEGATE) && defined(MAGICKCORE_PNG_DELEGATE) 151 #if defined(MAGICKCORE_LIBOPENJP2_DELEGATE) 154 #if defined(MAGICKCORE_JPEG_DELEGATE) 157 #if defined(MAGICKCORE_LCMS_DELEGATE) 160 #if defined(MAGICKCORE_LQR_DELEGATE) 163 #if defined(MAGICKCORE_LTDL_DELEGATE) 166 #if defined(MAGICKCORE_LZMA_DELEGATE) 169 #if defined(MAGICKCORE_OPENEXR_DELEGATE) 172 #if defined(MAGICKCORE_PANGOCAIRO_DELEGATE) 175 #if defined(MAGICKCORE_PNG_DELEGATE) 178 #if defined(MAGICKCORE_DPS_DELEGATE) || defined(MAGICKCORE_GS_DELEGATE) || \ 179 defined(MAGICKCORE_WINDOWS_SUPPORT) 182 #if defined(MAGICKCORE_RAQM_DELEGATE) 185 #if defined(MAGICKCORE_RAW_R_DELEGATE) 188 #if defined(MAGICKCORE_RSVG_DELEGATE) 191 #if defined(MAGICKCORE_TIFF_DELEGATE) 194 #if defined(MAGICKCORE_WEBP_DELEGATE) 197 #if defined(MAGICKCORE_WMF_DELEGATE) || defined (MAGICKCORE_WMFLITE_DELEGATE) 200 #if defined(MAGICKCORE_X11_DELEGATE) 203 #if defined(MAGICKCORE_XML_DELEGATE) 206 #if defined(MAGICKCORE_ZLIB_DELEGATE) 232 MagickExport
const char *GetMagickFeatures(
void)
235 #if defined(MAGICKCORE_CIPHER_SUPPORT) 238 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG) 241 #if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(MAGICKCORE_HAVE_SOCKET) && defined(MAGICKCORE_THREAD_SUPPORT) 244 #if defined(MAGICKCORE_HDRI_SUPPORT) 247 #if defined(MAGICKCORE_BUILD_MODULES) || defined(_DLL) 250 #if defined(MAGICKCORE_OPENCL_SUPPORT) 253 #if defined(MAGICKCORE_OPENMP_SUPPORT) 255 #if _OPENMP == 199810 257 #elif _OPENMP == 200203 259 #elif _OPENMP == 200505 261 #elif _OPENMP == 200805 263 #elif _OPENMP == 201107 265 #elif _OPENMP == 201307 267 #elif _OPENMP == 201511 269 #elif _OPENMP == 201811 275 #if defined(MAGICKCORE_HAVE_TCMALLOC) 278 #if MAGICKCORE_ZERO_CONFIGURATION_SUPPORT 279 "Zero-configuration " 281 #if (MAGICKCORE_QUANTUM_DEPTH == 64) 282 "Q64 (experimental, not for production) " 305 MagickExport
char *GetMagickHomeURL(
void)
319 exception=AcquireExceptionInfo();
320 paths=GetConfigurePaths(MagickURLFilename,exception);
321 exception=DestroyExceptionInfo(exception);
323 return(ConstantString(MagickHomeURL));
324 element=(
const char *) GetNextValueInLinkedList(paths);
325 while (element != (
const char *) NULL)
327 (void) FormatLocaleString(path,MaxTextExtent,
"%s%s%s",element,
328 DirectorySeparator,MagickURLFilename);
329 if (IsPathAccessible(path) != MagickFalse)
331 paths=DestroyLinkedList(paths,RelinquishMagickMemory);
332 return(ConstantString(path));
334 element=(
const char *) GetNextValueInLinkedList(paths);
336 paths=DestroyLinkedList(paths,RelinquishMagickMemory);
337 return(ConstantString(MagickHomeURL));
358 MagickExport
const char *GetMagickLicense(
void)
360 return(MagickAuthoritativeLicense);
383 MagickExport
const char *GetMagickPackageName(
void)
385 return(MagickPackageName);
410 MagickExport
const char *GetMagickQuantumDepth(
size_t *depth)
412 if (depth != (
size_t *) NULL)
413 *depth=(size_t) MAGICKCORE_QUANTUM_DEPTH;
414 return(MagickQuantumDepth);
439 MagickExport
const char *GetMagickQuantumRange(
size_t *range)
441 if (range != (
size_t *) NULL)
442 *range=(size_t) QuantumRange;
443 return(MagickQuantumRange);
466 MagickExport
const char *GetMagickReleaseDate(
void)
468 return(MagickReleaseDate);
496 static unsigned int CRC32(
const unsigned char *message,
const size_t length)
501 static MagickBooleanType
502 crc_initial = MagickFalse;
513 if (crc_initial == MagickFalse)
521 for (i=0; i < 256; i++)
527 for (j=0; j < 8; j++)
528 alpha=(alpha & 0x01) ? (0xEDB88320 ^ (alpha >> 1)) : (alpha >> 1);
531 crc_initial=MagickTrue;
534 for (i=0; i < (ssize_t) length; i++)
535 crc=crc_xor[(crc ^ message[i]) & 0xff] ^ (crc >> 8);
536 return(crc ^ 0xFFFFFFFF);
539 MagickExport
unsigned int GetMagickCoreSignature(
const StringInfo *nonce)
550 version=AcquireStringInfo(MaxTextExtent);
551 p=GetStringInfoDatum(version);
552 signature=MAGICKCORE_QUANTUM_DEPTH;
553 (void) memcpy(p,&signature,
sizeof(signature));
554 p+=
sizeof(signature);
555 signature=MAGICKCORE_HDRI_ENABLE;
556 (void) memcpy(p,&signature,
sizeof(signature));
557 p+=
sizeof(signature);
558 signature=MagickLibInterface;
559 (void) memcpy(p,&signature,
sizeof(signature));
560 p+=
sizeof(signature);
562 (void) memcpy(p,&signature,
sizeof(signature));
563 p+=
sizeof(signature);
564 SetStringInfoLength(version,p-GetStringInfoDatum(version));
566 ConcatenateStringInfo(version,nonce);
567 signature=CRC32(GetStringInfoDatum(version),GetStringInfoLength(version));
568 version=DestroyStringInfo(version);
595 MagickExport
const char *GetMagickVersion(
size_t *version)
597 if (version != (
size_t *) NULL)
598 *version=MagickLibVersion;
599 return(MagickVersion);
626 MagickExport
void ListMagickVersion(FILE *file)
628 (void) FormatLocaleFile(file,
"Version: %s\n",
629 GetMagickVersion((
size_t *) NULL));
630 (void) FormatLocaleFile(file,
"Copyright: %s\n",GetMagickCopyright());
631 (void) FormatLocaleFile(file,
"License: %s\n",GetMagickLicense());
632 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_MSC_FULL_VER) 633 (void) FormatLocaleFile(file,
"Visual C++: %d\n",_MSC_FULL_VER);
635 (void) FormatLocaleFile(file,
"Features: %s\n",GetMagickFeatures());
636 (void) FormatLocaleFile(file,
"Delegates (built-in): %s\n",
637 GetMagickDelegates());
638 if (IsEventLogging() != MagickFalse)
640 (void) FormatLocaleFile(file,
"Wizard attributes: ");
641 (void) FormatLocaleFile(file,
"QuantumRange=%g; ",(
double) QuantumRange);
642 (void) FormatLocaleFile(file,
"QuantumScale=%.*g; ",GetMagickPrecision(),
643 (double) QuantumScale);
644 (void) FormatLocaleFile(file,
"MagickEpsilon=%.*g; ",GetMagickPrecision(),
645 (double) MagickEpsilon);
646 (void) FormatLocaleFile(file,
"MaxMap=%g; ",(
double) MaxMap);
647 (void) FormatLocaleFile(file,
"MaxTextExtent=%g; ",(
double) MaxTextExtent);
648 (void) FormatLocaleFile(file,
"sizeof(Quantum)=%g; ",(
double)
650 (void) FormatLocaleFile(file,
"sizeof(MagickSizeType)=%g; ",(
double)
651 sizeof(MagickSizeType));
652 (void) FormatLocaleFile(file,
"sizeof(MagickOffsetType)=%g",(
double)
653 sizeof(MagickOffsetType));