#include <stdarg.h>
#include <stdlib.h>
#include <time.h>
-
-#if defined(MAGICKCORE_HAVE_SYS_TYPES_H)
-# include <sys/types.h>
-#endif
-
-#if defined(macintosh)
-# include <stat.mac.h> /* Needed for off_t */
-#endif
+#include <math.h>
+#include <sys/types.h>
#if defined(__BORLANDC__)
# include <vcl.h> /* Borland C++ Builder 4.0 requirement */
// using code is dynamic, STATIC_MAGICK may be defined in the project to
// override triggering dynamic library behavior.
//
-# define MagickDLLBuild
# if defined(_VISUALC_)
+# define MagickDLLExplicitTemplate
# pragma warning( disable: 4273 ) /* Disable the stupid dll linkage warnings */
# pragma warning( disable: 4251 )
# endif
# if !defined(MAGICKCORE_IMPLEMENTATION)
-# define MagickDLLDecl __declspec(dllimport)
-# define MagickDLLDeclExtern extern __declspec(dllimport)
+# if defined(__GNUC__)
+# define MagickPPExport __attribute__ ((dllimport))
+# else
+# define MagickPPExport __declspec(dllimport)
+# endif
+# define MagickPPPrivate extern __declspec(dllimport)
# if defined(_VISUALC_)
# pragma message( "Magick++ lib DLL import" )
# endif
# else
-# if defined(__BORLANDC__)
-# define MagickDLLDecl __declspec(dllexport)
-# define MagickDLLDeclExtern __declspec(dllexport)
-# pragma message( "BCBMagick++ lib DLL export" )
+# if defined(__BORLANDC__) || defined(__MINGW32__)
+# define MagickPPExport __declspec(dllexport)
+# define MagickPPPrivate __declspec(dllexport)
+# if defined(__BORLANDC__)
+# pragma message( "BCBMagick++ lib DLL export" )
+# endif
# else
-# define MagickDLLDecl __declspec(dllexport)
-# define MagickDLLDeclExtern extern __declspec(dllexport)
+# if defined(__GNUC__)
+# define MagickPPExport __attribute__ ((dllexport))
+# else
+# define MagickPPExport __declspec(dllexport)
+# endif
+# define MagickPPPrivate extern __declspec(dllexport)
# endif
# if defined(_VISUALC_)
# pragma message( "Magick++ lib DLL export" )
# endif
# endif
# else
-# define MagickDLLDecl
-# define MagickDLLDeclExtern
+# define MagickPPExport
+# define MagickPPPrivate
# if defined(_VISUALC_)
# pragma message( "Magick++ lib static interface" )
# endif
+# if defined(_MSC_VER) && defined(STATIC_MAGICK) && !defined(NOAUTOLINK_MAGICK)
+# if defined(_DEBUG)
+# if defined(MAGICKCORE_BZLIB_DELEGATE)
+# pragma comment(lib, "CORE_DB_bzlib_.lib")
+# endif
+# pragma comment(lib, "CORE_DB_coders_.lib")
+# pragma comment(lib, "CORE_DB_filters_.lib")
+# if defined(MAGICKCORE_JBIG_DELEGATE)
+# pragma comment(lib, "CORE_DB_jbig_.lib")
+# endif
+# if defined(MAGICKCORE_JP2_DELEGATE)
+# pragma comment(lib, "CORE_DB_jp2_.lib")
+# endif
+# if defined(MAGICKCORE_JPEG_DELEGATE)
+# pragma comment(lib, "CORE_DB_jpeg_.lib")
+# endif
+# if defined(MAGICKCORE_LCMS_DELEGATE)
+# pragma comment(lib, "CORE_DB_lcms_.lib")
+# endif
+# pragma comment(lib, "CORE_DB_libxml_.lib")
+# pragma comment(lib, "CORE_DB_Magick++_.lib")
+# pragma comment(lib, "CORE_DB_MagickCore_.lib")
+# pragma comment(lib, "CORE_DB_MagickWand_.lib")
+# if defined(MAGICKCORE_PNG_DELEGATE)
+# pragma comment(lib, "CORE_DB_png_.lib")
+# endif
+# if defined(MAGICKCORE_TIFF_DELEGATE)
+# pragma comment(lib, "CORE_DB_tiff_.lib")
+# endif
+# if defined(MAGICKCORE_FREETYPE_DELEGATE)
+# pragma comment(lib, "CORE_DB_ttf_.lib")
+# endif
+# if defined(MAGICKCORE_WEBP_DELEGATE)
+# pragma comment(lib, "CORE_DB_webp_.lib")
+# endif
+# if defined(MAGICKCORE_WMF_DELEGATE)
+# pragma comment(lib, "CORE_DB_wmf_.lib")
+# endif
+# if defined(MAGICKCORE_X11_DELEGATE)
+# pragma comment(lib, "CORE_DB_xlib_.lib")
+# endif
+# if defined(MAGICKCORE_ZLIB_DELEGATE)
+# pragma comment(lib, "CORE_DB_zlib_.lib")
+# endif
+# else
+# if defined(MAGICKCORE_BZLIB_DELEGATE)
+# pragma comment(lib, "CORE_RL_bzlib_.lib")
+# endif
+# pragma comment(lib, "CORE_RL_filters_.lib")
+# pragma comment(lib, "CORE_RL_coders_.lib")
+# if defined(MAGICKCORE_JBIG_DELEGATE)
+# pragma comment(lib, "CORE_RL_jbig_.lib")
+# endif
+# if defined(MAGICKCORE_JP2_DELEGATE)
+# pragma comment(lib, "CORE_RL_jp2_.lib")
+# endif
+# if defined(MAGICKCORE_JPEG_DELEGATE)
+# pragma comment(lib, "CORE_RL_jpeg_.lib")
+# endif
+# if defined(MAGICKCORE_LCMS_DELEGATE)
+# pragma comment(lib, "CORE_RL_lcms_.lib")
+# endif
+# pragma comment(lib, "CORE_RL_libxml_.lib")
+# pragma comment(lib, "CORE_RL_Magick++_.lib")
+# pragma comment(lib, "CORE_RL_MagickCore_.lib")
+# pragma comment(lib, "CORE_RL_MagickWand_.lib")
+# if defined(MAGICKCORE_PNG_DELEGATE)
+# pragma comment(lib, "CORE_RL_png_.lib")
+# endif
+# if defined(MAGICKCORE_TIFF_DELEGATE)
+# pragma comment(lib, "CORE_RL_tiff_.lib")
+# endif
+# if defined(MAGICKCORE_FREETYPE_DELEGATE)
+# pragma comment(lib, "CORE_RL_ttf_.lib")
+# endif
+# if defined(MAGICKCORE_WEBP_DELEGATE)
+# pragma comment(lib, "CORE_RL_webp_.lib")
+# endif
+# if defined(MAGICKCORE_WMF_DELEGATE)
+# pragma comment(lib, "CORE_RL_wmf_.lib")
+# endif
+# if defined(MAGICKCORE_X11_DELEGATE)
+# pragma comment(lib, "CORE_RL_xlib_.lib")
+# endif
+# if defined(MAGICKCORE_ZLIB_DELEGATE)
+# pragma comment(lib, "CORE_RL_zlib_.lib")
+# endif
+# endif
+# if defined(_WIN32_WCE)
+# pragma comment(lib, "wsock32.lib")
+# else
+# pragma comment(lib, "ws2_32.lib")
+# endif
+# endif
# endif
#else
-# define MagickDLLDecl
-# define MagickDLLDeclExtern
+# if __GNUC__ >= 4
+# define MagickPPExport __attribute__ ((visibility ("default")))
+# define MagickPPPrivate __attribute__ ((visibility ("hidden")))
+# else
+# define MagickPPExport
+# define MagickPPPrivate
+# endif
#endif
#if defined(WIN32) && defined(_VISUALC_)
{
// The datatype for an RGB component
using MagickCore::Quantum;
+ using MagickCore::MagickRealType;
using MagickCore::MagickSizeType;
// Boolean types
using MagickCore::MagickFalse;
using MagickCore::MagickTrue;
+ // Alpha channel options
+ using MagickCore::AlphaChannelOption;
+ using MagickCore::UndefinedAlphaChannel;
+ using MagickCore::ActivateAlphaChannel;
+ using MagickCore::BackgroundAlphaChannel;
+ using MagickCore::CopyAlphaChannel;
+ using MagickCore::DeactivateAlphaChannel;
+ using MagickCore::ExtractAlphaChannel;
+ using MagickCore::OpaqueAlphaChannel;
+ using MagickCore::RemoveAlphaChannel;
+ using MagickCore::SetAlphaChannel;
+ using MagickCore::ShapeAlphaChannel;
+ using MagickCore::TransparentAlphaChannel;
+
// Image class types
using MagickCore::ClassType;
using MagickCore::UndefinedClass;
using MagickCore::MagentaChannel;
using MagickCore::BlueChannel;
using MagickCore::YellowChannel;
- using MagickCore::OpacityChannel;
+ using MagickCore::AlphaChannel;
using MagickCore::BlackChannel;
using MagickCore::DefaultChannels;
using MagickCore::AllChannels;
// Color-space types
- using MagickCore::CMYKColorspace;
using MagickCore::ColorspaceType;
+ using MagickCore::UndefinedColorspace;
+ using MagickCore::CMYColorspace;
+ using MagickCore::CMYKColorspace;
using MagickCore::GRAYColorspace;
+ using MagickCore::HCLColorspace;
+ using MagickCore::HCLpColorspace;
+ using MagickCore::HSBColorspace;
+ using MagickCore::HSIColorspace;
using MagickCore::HSLColorspace;
+ using MagickCore::HSVColorspace;
using MagickCore::HWBColorspace;
+ using MagickCore::LabColorspace;
+ using MagickCore::LCHColorspace;
+ using MagickCore::LCHabColorspace;
+ using MagickCore::LCHuvColorspace;
using MagickCore::LogColorspace;
+ using MagickCore::LMSColorspace;
+ using MagickCore::LuvColorspace;
using MagickCore::OHTAColorspace;
- using MagickCore::Rec601LumaColorspace;
- using MagickCore::Rec709LumaColorspace;
+ using MagickCore::Rec601YCbCrColorspace;
+ using MagickCore::Rec709YCbCrColorspace;
using MagickCore::RGBColorspace;
+ using MagickCore::scRGBColorspace;
using MagickCore::sRGBColorspace;
using MagickCore::TransparentColorspace;
- using MagickCore::UndefinedColorspace;
using MagickCore::XYZColorspace;
using MagickCore::YCbCrColorspace;
using MagickCore::YCCColorspace;
+ using MagickCore::YDbDrColorspace;
using MagickCore::YIQColorspace;
using MagickCore::YPbPrColorspace;
using MagickCore::YUVColorspace;
+ // Compliance types
+ using MagickCore::AllCompliance;
+
// Composition operations
+ using MagickCore::CompositeOperator;
using MagickCore::AtopCompositeOp;
using MagickCore::BlendCompositeOp;
using MagickCore::BumpmapCompositeOp;
using MagickCore::ClearCompositeOp;
using MagickCore::ColorizeCompositeOp;
- using MagickCore::CompositeOperator;
using MagickCore::CopyBlueCompositeOp;
using MagickCore::CopyCompositeOp;
using MagickCore::CopyCyanCompositeOp;
using MagickCore::CopyGreenCompositeOp;
using MagickCore::CopyMagentaCompositeOp;
- using MagickCore::CopyOpacityCompositeOp;
+ using MagickCore::CopyAlphaCompositeOp;
using MagickCore::CopyRedCompositeOp;
using MagickCore::CopyYellowCompositeOp;
using MagickCore::DarkenCompositeOp;
using MagickCore::ShepardsDistortion;
using MagickCore::SentinelDistortion;
+ // Dither methods
+ using MagickCore::DitherMethod;
+ using MagickCore::UndefinedDitherMethod;
+ using MagickCore::NoDitherMethod;
+ using MagickCore::RiemersmaDitherMethod;
+ using MagickCore::FloydSteinbergDitherMethod;
+
// Endian options
using MagickCore::EndianType;
using MagickCore::UndefinedEndian;
using MagickCore::MSBEndian;
// Evaluate options
+ using MagickCore::MagickEvaluateOperator;
using MagickCore::UndefinedEvaluateOperator;
using MagickCore::AddEvaluateOperator;
using MagickCore::AndEvaluateOperator;
using MagickCore::SetEvaluateOperator;
using MagickCore::SubtractEvaluateOperator;
using MagickCore::XorEvaluateOperator;
- using MagickCore::MagickEvaluateOperator;
// Fill rules
using MagickCore::FillRule;
using MagickCore::CubicFilter;
using MagickCore::CatromFilter;
using MagickCore::MitchellFilter;
- using MagickCore::LanczosFilter;
- using MagickCore::BesselFilter;
+ using MagickCore::JincFilter;
using MagickCore::SincFilter;
+ using MagickCore::SincFastFilter;
+ using MagickCore::KaiserFilter;
+ using MagickCore::WelshFilter;
+ using MagickCore::ParzenFilter;
+ using MagickCore::BohmanFilter;
+ using MagickCore::BartlettFilter;
+ using MagickCore::LagrangeFilter;
+ using MagickCore::LanczosFilter;
+ using MagickCore::LanczosSharpFilter;
+ using MagickCore::Lanczos2Filter;
+ using MagickCore::Lanczos2SharpFilter;
+ using MagickCore::RobidouxFilter;
+ using MagickCore::SentinelFilter;
// Bit gravity
using MagickCore::GravityType;
using MagickCore::SouthWestGravity;
using MagickCore::SouthGravity;
using MagickCore::SouthEastGravity;
- using MagickCore::StaticGravity;
// Image types
using MagickCore::ImageType;
using MagickCore::PartitionInterlace;
// Layer method
+ using MagickCore::LayerMethod;
+ using MagickCore::UndefinedLayer;
+ using MagickCore::CoalesceLayer;
+ using MagickCore::CompareAnyLayer;
+ using MagickCore::CompareClearLayer;
+ using MagickCore::CompareOverlayLayer;
+ using MagickCore::DisposeLayer;
+ using MagickCore::OptimizeLayer;
+ using MagickCore::OptimizeImageLayer;
+ using MagickCore::OptimizePlusLayer;
+ using MagickCore::OptimizeTransLayer;
+ using MagickCore::RemoveDupsLayer;
+ using MagickCore::RemoveZeroLayer;
+ using MagickCore::CompositeLayer;
+ using MagickCore::MergeLayer;
using MagickCore::FlattenLayer;
using MagickCore::MosaicLayer;
+ using MagickCore::TrimBoundsLayer;
// Line cap types
using MagickCore::LineCap;
using MagickCore::FillToBorderMethod;
using MagickCore::ResetMethod;
+ // PixelInterpolate methods
+ using MagickCore::PixelInterpolateMethod;
+ using MagickCore::UndefinedInterpolatePixel;
+ using MagickCore::AverageInterpolatePixel;
+ using MagickCore::Average9InterpolatePixel;
+ using MagickCore::Average16InterpolatePixel;
+ using MagickCore::BackgroundInterpolatePixel;
+ using MagickCore::BilinearInterpolatePixel;
+ using MagickCore::BlendInterpolatePixel;
+ using MagickCore::CatromInterpolatePixel;
+ using MagickCore::IntegerInterpolatePixel;
+ using MagickCore::MeshInterpolatePixel;
+ using MagickCore::NearestInterpolatePixel;
+ using MagickCore::SplineInterpolatePixel;
+
+ // Pixel traits
+ using MagickCore::UndefinedPixelTrait;
+ using MagickCore::BlendPixelTrait;
+
// Preview types. Not currently used by Magick++
using MagickCore::PreviewType;
using MagickCore::UndefinedPreview;
using MagickCore::PixelsPerInchResolution;
using MagickCore::PixelsPerCentimeterResolution;
- // PixelPacket structure
- using MagickCore::PixelPacket;
+ // PixelInfo structure
+ using MagickCore::PixelInfo;
using MagickCore::Quantum;
// Sparse Color methods
using MagickCore::StorageType;
using MagickCore::CharPixel;
using MagickCore::ShortPixel;
- using MagickCore::IntegerPixel;
+ using MagickCore::LongLongPixel;
using MagickCore::FloatPixel;
using MagickCore::DoublePixel;
//
// ImageMagick symbols used in implementation code
//
- using MagickCore::AcquireCacheView;
+ using MagickCore::AcquireAlignedMemory;
+ using MagickCore::AcquireAuthenticCacheView;
using MagickCore::AcquireExceptionInfo;
+ using MagickCore::AcquireVirtualCacheView;
using MagickCore::GetCacheViewVirtualPixels;
using MagickCore::AcquireImage;
+ using MagickCore::AreaValue;
using MagickCore::GetVirtualPixels;
using MagickCore::AcquireKernelInfo;
using MagickCore::AcquireMagickMemory;
using MagickCore::AcquireString;
using MagickCore::AcquireStringInfo;
using MagickCore::AdaptiveBlurImage;
+ using MagickCore::AdaptiveResizeImage;
+ using MagickCore::AdaptiveSharpenImage;
using MagickCore::AdaptiveThresholdImage;
using MagickCore::AddNoiseImage;
- using MagickCore::AddNoiseImage;
using MagickCore::AffineMatrix;
using MagickCore::AffineTransformImage;
using MagickCore::AnnotateImage;
using MagickCore::BlobToImage;
using MagickCore::BlobWarning;
using MagickCore::BlurImage;
- using MagickCore::BlurImage;
using MagickCore::BorderImage;
using MagickCore::CacheError;
using MagickCore::CacheFatalError;
using MagickCore::CharcoalImage;
using MagickCore::ChopImage;
using MagickCore::ClearMagickException;
+ using MagickCore::ClampToQuantum;
using MagickCore::CloneDrawInfo;
using MagickCore::CloneImage;
using MagickCore::CloneImageInfo;
using MagickCore::DrawSetClipRule;
using MagickCore::DrawSetClipUnits;
using MagickCore::DrawSetFillColor;
- using MagickCore::DrawSetFillOpacity;
+ using MagickCore::DrawSetFillAlpha;
using MagickCore::DrawSetFillPatternURL;
using MagickCore::DrawSetFillRule;
using MagickCore::DrawSetFont;
using MagickCore::DrawSetStrokeLineCap;
using MagickCore::DrawSetStrokeLineJoin;
using MagickCore::DrawSetStrokeMiterLimit;
- using MagickCore::DrawSetStrokeOpacity;
+ using MagickCore::DrawSetStrokeAlpha;
using MagickCore::DrawSetStrokePatternURL;
using MagickCore::DrawSetStrokeWidth;
using MagickCore::DrawSetTextAntialias;
using MagickCore::EnhanceImage;
using MagickCore::EqualizeImage;
using MagickCore::EvaluateImage;
- using MagickCore::EvaluateImage;
using MagickCore::ExceptionInfo;
using MagickCore::ExceptionType;
using MagickCore::ExportImagePixels;
using MagickCore::FrameInfo;
using MagickCore::FxImage;
using MagickCore::GammaImage;
- using MagickCore::GammaImage;
using MagickCore::GaussianBlurImage;
using MagickCore::GaussianBlurImage;
using MagickCore::GetAffineMatrix;
using MagickCore::GetAuthenticMetacontent;
using MagickCore::GetBlobSize;
- using MagickCore::GetCacheViewException;
using MagickCore::GetCacheViewAuthenticMetacontent;
using MagickCore::GetCacheViewAuthenticPixels;
using MagickCore::GetColorTuple;
using MagickCore::GetGeometry;
using MagickCore::GetImageBoundingBox;
using MagickCore::GetImageDepth;
+ using MagickCore::GetImageMask;
using MagickCore::GetImageMean;
using MagickCore::GetImageKurtosis;
using MagickCore::GetImageRange;
- using MagickCore::GetImageClipMask;
using MagickCore::GetImageDepth;
using MagickCore::GetImageInfo;
using MagickCore::GetImageInfoFile;
using MagickCore::GetImageQuantizeError;
using MagickCore::GetImageType;
using MagickCore::GetMagickInfo;
+ using MagickCore::GetPixelBlue;
+ using MagickCore::GetPixelGreen;
using MagickCore::GetPixelInfo;
+ using MagickCore::GetPixelRed;
using MagickCore::GetNumberColors;
using MagickCore::GetPageGeometry;
using MagickCore::GetQuantizeInfo;
using MagickCore::ImageInfo;
using MagickCore::ImageRegistryType;
using MagickCore::ImageToBlob;
+ using MagickCore::ImagesToBlob;
using MagickCore::ImageWarning;
using MagickCore::ImplodeImage;
using MagickCore::ImportQuantumPixels;
using MagickCore::KernelInfo;
using MagickCore::LessValue;
using MagickCore::LevelImage;
- using MagickCore::LevelImage;
using MagickCore::LocaleCompare;
using MagickCore::LogMagickEvent;
using MagickCore::MagickCoreTerminus;
using MagickCore::MagnifyImage;
using MagickCore::MergeImageLayers;
using MagickCore::MinifyImage;
+ using MagickCore::MinimumValue;
using MagickCore::MissingDelegateError;
using MagickCore::MissingDelegateFatalError;
using MagickCore::MissingDelegateWarning;
using MagickCore::PercentValue;
using MagickCore::PingBlob;
using MagickCore::PingImage;
- using MagickCore::PixelSetQuantumPacket;
+ using MagickCore::PixelSetPixelColor;
using MagickCore::PixelWand;
using MagickCore::PointInfo;
using MagickCore::PopDrawingWand;
- using MagickCore::PopPixelComponentMap;
using MagickCore::ProfileImage;
using MagickCore::ProfileInfo;
using MagickCore::PushDrawingWand;
- using MagickCore::PushPixelComponentMap;
using MagickCore::QuantizeImage;
using MagickCore::QuantizeInfo;
using MagickCore::QuantumInfo;
- using MagickCore::QueryColorDatabase;
- using MagickCore::QueryMagickColor;
using MagickCore::QueueAuthenticPixels;
using MagickCore::QueueCacheViewAuthenticPixels;
using MagickCore::RaiseImage;
using MagickCore::ResourceLimitError;
using MagickCore::ResourceLimitFatalError;
using MagickCore::ResourceLimitWarning;
- using MagickCore::RGBTransformImage;
using MagickCore::RollImage;
using MagickCore::RotateImage;
using MagickCore::SampleImage;
using MagickCore::SeparateImage;
using MagickCore::SetClientName;
using MagickCore::SetGeometry;
+ using MagickCore::SetImageAlpha;
using MagickCore::SetImageBackgroundColor;
using MagickCore::SetImageDepth;
- using MagickCore::SetImageClipMask;
- using MagickCore::SetImageDepth;
using MagickCore::SetImageExtent;
using MagickCore::SetImageInfo;
using MagickCore::SetImageInfoFile;
- using MagickCore::SetImageOpacity;
+ using MagickCore::SetImageMask;
using MagickCore::SetImageOption;
using MagickCore::SetImageProfile;
using MagickCore::SetImageProperty;
using MagickCore::SetLogEventMask;
using MagickCore::SetMagickInfo;
using MagickCore::SetMagickResourceLimit;
- using MagickCore::SetStringInfoDatum;
using MagickCore::SetImageVirtualPixelMethod;
+ using MagickCore::SetPixelChannel;
+ using MagickCore::SetImageChannelMask;
+ using MagickCore::SetStringInfoDatum;
using MagickCore::ShadeImage;
+ using MagickCore::ShadowImage;
using MagickCore::SharpenImage;
using MagickCore::SharpenImage;
using MagickCore::ShaveImage;
using MagickCore::TextureImage;
using MagickCore::ThrowException;
using MagickCore::TransformImage;
- using MagickCore::TransformRGBImage;
+ using MagickCore::TransformImageColorspace;
using MagickCore::TransparentPaintImage;
using MagickCore::TransparentPaintImageChroma;
using MagickCore::TrimImage;
using MagickCore::UndefinedRegistryType;
using MagickCore::UnregisterMagickInfo;
using MagickCore::UnsharpMaskImage;
- using MagickCore::UnsharpMaskImage;
using MagickCore::CacheView;
using MagickCore::WaveImage;
using MagickCore::WidthValue;