1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
4 // Copyright Dirk Lemstra 2013-2017
5 //
6 // Inclusion of ImageMagick headers (with namespace magic)
7 
8 #ifndef Magick_Include_header
9 #define Magick_Include_header
10 
11 #if !defined(_MAGICK_CONFIG_H)
12 #  define _MAGICK_CONFIG_H
13 #  if !defined(vms) && !defined(macintosh)
14 #    include "MagickCore/magick-config.h"
15 #  else
16 #    include "magick-config.h"
17 #  endif
18 #  undef inline // Remove possible definition from config.h
19 #  undef class
20 #endif
21 
22 // Needed for stdio FILE
23 #include <stdio.h>
24 #include <stdarg.h>
25 #include <stdlib.h>
26 #include <time.h>
27 #include <math.h>
28 #include <sys/types.h>
29 
30 #include <errno.h>
31 #include <stdint.h>
32 
33 #if defined(__BORLANDC__)
34 #  include <vcl.h> /* Borland C++ Builder 4.0 requirement */
35 #endif // defined(__BORLANDC__)
36 
37 //
38 // Include ImageMagick headers into namespace "MagickCore". If
39 // MAGICKCORE_IMPLEMENTATION is defined, include ImageMagick development
40 // headers.  This scheme minimizes the possibility of conflict with
41 // user code.
42 //
43 namespace MagickCore
44 {
45 #include <MagickCore/MagickCore.h>
46 #include <MagickWand/MagickWand.h>
47 #undef inline // Remove possible definition from config.h
48 
49 #undef class
50 }
51 
52 //
53 // Provide appropriate DLL imports/exports for Visual C++,
54 // Borland C++Builder and MinGW builds.
55 //
56 #if defined(WIN32) && !defined(__CYGWIN__) && !defined(__MINGW32__)
57 #  define MagickCplusPlusDLLSupported
58 #endif
59 #if defined(MagickCplusPlusDLLSupported)
60 #  if defined(_MT) && defined(_DLL) && !defined(_LIB) && !defined(STATIC_MAGICK)
61 //
62 // In a native Windows build, the following defines are used:
63 //
64 //   _MT         = Multithreaded
65 //   _DLL        = Using code is part of a DLL
66 //   _LIB        = Using code is being built as a library.
67 //   _MAGICKMOD_ = Build uses loadable modules (Magick++ does not care about this)
68 //
69 // In the case where ImageMagick is built as a static library but the
70 // using code is dynamic, STATIC_MAGICK may be defined in the project to
71 // override triggering dynamic library behavior.
72 //
73 #    if defined(_VISUALC_)
74 #      define MagickDLLExplicitTemplate
75 #      pragma warning( disable: 4275 )
76 #      pragma warning( disable: 4273 )  /* Disable the stupid dll linkage warnings */
77 #      pragma warning( disable: 4251 )
78 #    endif
79 #    if !defined(MAGICKCORE_IMPLEMENTATION)
80 #      if defined(__GNUC__)
81 #        define MagickPPExport __attribute__ ((dllimport))
82 #      else
83 #        define MagickPPExport __declspec(dllimport)
84 #      endif
85 #      define MagickPPPrivate extern __declspec(dllimport)
86 #    else
87 #      if defined(__BORLANDC__) || defined(__MINGW32__)
88 #        define MagickPPExport __declspec(dllexport)
89 #        define MagickPPPrivate __declspec(dllexport)
90 #      else
91 #        if defined(__GNUC__)
92 #          define MagickPPExport __attribute__ ((dllexport))
93 #        else
94 #          define MagickPPExport __declspec(dllexport)
95 #        endif
96 #        define MagickPPPrivate extern __declspec(dllexport)
97 #      endif
98 #    endif
99 #  else
100 #    define MagickPPExport
101 #    define MagickPPPrivate
102 #    if defined(_MSC_VER) && defined(STATIC_MAGICK) && !defined(NOAUTOLINK_MAGICK)
103 #      if defined(_DEBUG)
104 #        if defined(MAGICKCORE_BZLIB_DELEGATE)
105 #          pragma comment(lib, "CORE_DB_bzlib_.lib")
106 #        endif
107 #        if defined(MAGICKCORE_CAIRO_DELEGATE)
108 #          pragma comment(lib, "CORE_DB_cairo_.lib")
109 #        endif
110 #        if defined(MAGICKCORE_OPENEXR_DELEGATE)
111 #          pragma comment(lib, "CORE_DB_exr_.lib")
112 #        endif
113 #        if defined(MAGICKCORE_FLIF_DELEGATE)
114 #          pragma comment(lib, "CORE_DB_flif_.lib")
115 #        endif
116 #        if defined(MAGICKCORE_FREETYPE_DELEGATE)
117 #          pragma comment(lib, "CORE_DB_freetype_.lib")
118 #        endif
119 #        if defined(MAGICKCORE_JBIG_DELEGATE)
120 #          pragma comment(lib, "CORE_DB_jbig_.lib")
121 #        endif
122 #        if defined(MAGICKCORE_JP2_DELEGATE)
123 #          pragma comment(lib, "CORE_DB_jp2_.lib")
124 #        endif
125 #        if defined(MAGICKCORE_JPEG_DELEGATE)
126 #          pragma comment(lib, "CORE_DB_jpeg-turbo_.lib")
127 #        endif
128 #        if defined(MAGICKCORE_JXL_DELEGATE)
129 #          pragma comment(lib, "CORE_DB_highway_.lib")
130 #          pragma comment(lib, "CORE_DB_brotli_.lib")
131 #          pragma comment(lib, "CORE_DB_jpeg-xl_.lib")
132 #        endif
133 #        if defined(MAGICKCORE_LCMS_DELEGATE)
134 #          pragma comment(lib, "CORE_DB_lcms_.lib")
135 #        endif
136 #        if defined(MAGICKCORE_HEIC_DELEGATE)
137 #          pragma comment(lib, "CORE_DB_aom_.lib")
138 #          pragma comment(lib, "CORE_DB_libde265_.lib")
139 #          pragma comment(lib, "CORE_DB_libheif_.lib")
140 #        endif
141 #        if defined(MAGICKCORE_LZMA_DELEGATE)
142 #          pragma comment(lib, "CORE_DB_liblzma_.lib")
143 #        endif
144 #        if defined(MAGICKCORE_RAW_R_DELEGATE)
145 #          pragma comment(lib, "CORE_DB_libraw_.lib")
146 #        endif
147 #        if defined(MAGICKCORE_RSVG_DELEGATE)
148 #          pragma comment(lib, "CORE_DB_croco_.lib")
149 #          pragma comment(lib, "CORE_DB_librsvg_.lib")
150 #        endif
151 #        if defined(MAGICKCORE_XML_DELEGATE)
152 #          pragma comment(lib, "CORE_DB_libxml_.lib")
153 #        endif
154 #        if defined(MAGICKCORE_ZIP_DELEGATE)
155 #          pragma comment(lib, "CORE_DB_libzip_.lib")
156 #        endif
157 #        if defined(MAGICKCORE_LQR_DELEGATE)
158 #          pragma comment(lib, "CORE_DB_ffi_.lib")
159 #          pragma comment(lib, "CORE_DB_glib_.lib")
160 #          pragma comment(lib, "CORE_DB_lqr_.lib")
161 #          pragma comment(lib, "winmm.lib")
162 #        endif
163 #        if defined(MAGICKCORE_LIBOPENJP2_DELEGATE)
164 #          pragma comment(lib, "CORE_DB_openjpeg_.lib")
165 #        endif
166 #        if defined(MAGICKCORE_PANGOCAIRO_DELEGATE)
167 #          pragma comment(lib, "CORE_DB_fribidi_.lib")
168 #          pragma comment(lib, "CORE_DB_harfbuzz_.lib")
169 #          pragma comment(lib, "CORE_DB_pango_.lib")
170 #          pragma comment(lib, "CORE_DB_pixman_.lib")
171 #        endif
172 #        if defined(MAGICKCORE_PNG_DELEGATE)
173 #          pragma comment(lib, "CORE_DB_png_.lib")
174 #        endif
175 #        if defined(MAGICKCORE_TIFF_DELEGATE)
176 #          pragma comment(lib, "CORE_DB_tiff_.lib")
177 #        endif
178 #        if defined(MAGICKCORE_WEBP_DELEGATE)
179 #          pragma comment(lib, "CORE_DB_webp_.lib")
180 #        endif
181 #        if defined(MAGICKCORE_ZLIB_DELEGATE)
182 #          pragma comment(lib, "CORE_DB_zlib_.lib")
183 #        endif
184 #        pragma comment(lib, "CORE_DB_coders_.lib")
185 #        pragma comment(lib, "CORE_DB_filters_.lib")
186 #        pragma comment(lib, "CORE_DB_Magick++_.lib")
187 #        pragma comment(lib, "CORE_DB_MagickCore_.lib")
188 #        pragma comment(lib, "CORE_DB_MagickWand_.lib")
189 #      else
190 #        if defined(MAGICKCORE_BZLIB_DELEGATE)
191 #          pragma comment(lib, "CORE_RL_bzlib_.lib")
192 #        endif
193 #        if defined(MAGICKCORE_CAIRO_DELEGATE)
194 #          pragma comment(lib, "CORE_RL_cairo_.lib")
195 #        endif
196 #        if defined(MAGICKCORE_OPENEXR_DELEGATE)
197 #          pragma comment(lib, "CORE_RL_exr_.lib")
198 #        endif
199 #        if defined(MAGICKCORE_FLIF_DELEGATE)
200 #          pragma comment(lib, "CORE_RL_flif_.lib")
201 #        endif
202 #        if defined(MAGICKCORE_FREETYPE_DELEGATE)
203 #          pragma comment(lib, "CORE_RL_freetype_.lib")
204 #        endif
205 #        if defined(MAGICKCORE_JBIG_DELEGATE)
206 #          pragma comment(lib, "CORE_RL_jbig_.lib")
207 #        endif
208 #        if defined(MAGICKCORE_JP2_DELEGATE)
209 #          pragma comment(lib, "CORE_RL_jp2_.lib")
210 #        endif
211 #        if defined(MAGICKCORE_JPEG_DELEGATE)
212 #          pragma comment(lib, "CORE_RL_jpeg-turbo_.lib")
213 #        endif
214 #        if defined(MAGICKCORE_JXL_DELEGATE)
215 #          pragma comment(lib, "CORE_RL_highway_.lib")
216 #          pragma comment(lib, "CORE_RL_brotli_.lib")
217 #          pragma comment(lib, "CORE_RL_jpeg-xl_.lib")
218 #        endif
219 #        if defined(MAGICKCORE_LCMS_DELEGATE)
220 #          pragma comment(lib, "CORE_RL_lcms_.lib")
221 #        endif
222 #        if defined(MAGICKCORE_HEIC_DELEGATE)
223 #          pragma comment(lib, "CORE_RL_aom_.lib")
224 #          pragma comment(lib, "CORE_RL_libde265_.lib")
225 #          pragma comment(lib, "CORE_RL_libheif_.lib")
226 #        endif
227 #        if defined(MAGICKCORE_LZMA_DELEGATE)
228 #          pragma comment(lib, "CORE_RL_liblzma_.lib")
229 #        endif
230 #        if defined(MAGICKCORE_RAW_R_DELEGATE)
231 #          pragma comment(lib, "CORE_RL_libraw_.lib")
232 #        endif
233 #        if defined(MAGICKCORE_RSVG_DELEGATE)
234 #          pragma comment(lib, "CORE_RL_croco_.lib")
235 #          pragma comment(lib, "CORE_RL_librsvg_.lib")
236 #        endif
237 #        if defined(MAGICKCORE_XML_DELEGATE)
238 #          pragma comment(lib, "CORE_RL_libxml_.lib")
239 #        endif
240 #        if defined(MAGICKCORE_ZIP_DELEGATE)
241 #          pragma comment(lib, "CORE_RL_libzip_.lib")
242 #        endif
243 #        if defined(MAGICKCORE_LQR_DELEGATE)
244 #          pragma comment(lib, "CORE_RL_ffi_.lib")
245 #          pragma comment(lib, "CORE_RL_glib_.lib")
246 #          pragma comment(lib, "CORE_RL_lqr_.lib")
247 #          pragma comment(lib, "winmm.lib")
248 #        endif
249 #        if defined(MAGICKCORE_LIBOPENJP2_DELEGATE)
250 #          pragma comment(lib, "CORE_RL_openjpeg_.lib")
251 #        endif
252 #        if defined(MAGICKCORE_PANGOCAIRO_DELEGATE)
253 #          pragma comment(lib, "CORE_RL_fribidi_.lib")
254 #          pragma comment(lib, "CORE_RL_harfbuzz_.lib")
255 #          pragma comment(lib, "CORE_RL_pango_.lib")
256 #          pragma comment(lib, "CORE_RL_pixman_.lib")
257 #        endif
258 #        if defined(MAGICKCORE_PNG_DELEGATE)
259 #          pragma comment(lib, "CORE_RL_png_.lib")
260 #        endif
261 #        if defined(MAGICKCORE_TIFF_DELEGATE)
262 #          pragma comment(lib, "CORE_RL_tiff_.lib")
263 #        endif
264 #        if defined(MAGICKCORE_WEBP_DELEGATE)
265 #          pragma comment(lib, "CORE_RL_webp_.lib")
266 #        endif
267 #        if defined(MAGICKCORE_ZLIB_DELEGATE)
268 #          pragma comment(lib, "CORE_RL_zlib_.lib")
269 #        endif
270 #        pragma comment(lib, "CORE_RL_coders_.lib")
271 #        pragma comment(lib, "CORE_RL_filters_.lib")
272 #        pragma comment(lib, "CORE_RL_Magick++_.lib")
273 #        pragma comment(lib, "CORE_RL_MagickCore_.lib")
274 #        pragma comment(lib, "CORE_RL_MagickWand_.lib")
275 #      endif
276 #      if defined(_WIN32_WCE)
277 #        pragma comment(lib, "wsock32.lib")
278 #      else
279 #        pragma comment(lib, "ws2_32.lib")
280 #      endif
281 #      pragma comment(lib, "urlmon.lib")
282 #    endif
283 #  endif
284 #else
285 #  if __GNUC__ >= 4
286 #    define MagickPPExport __attribute__ ((visibility ("default")))
287 #    define MagickPPPrivate  __attribute__ ((visibility ("hidden")))
288 #  else
289 #    define MagickPPExport
290 #    define MagickPPPrivate
291 #  endif
292 #endif
293 
294 #if (defined(WIN32) || defined(WIN64)) && defined(_VISUALC_)
295 #  pragma warning(disable : 4996) /* function deprecation warnings */
296 #endif
297 
298 //
299 // Import ImageMagick symbols and types which are used as part of the
300 // Magick++ API definition into namespace "Magick".
301 //
302 namespace Magick
303 {
304   // The datatype for an RGB component
305   using MagickCore::Quantum;
306   using MagickCore::MagickRealType;
307   using MagickCore::MagickSizeType;
308   using MagickCore::MagickStatusType;
309 
310   // Structures
311   using MagickCore::AffineMatrix;
312   using MagickCore::CacheView;
313   using MagickCore::CCObjectInfo;
314   using MagickCore::DrawInfo;
315   using MagickCore::DrawingWand;
316   using MagickCore::ExceptionInfo;
317   using MagickCore::FrameInfo;
318   using MagickCore::ImageInfo;
319   using MagickCore::KernelInfo;
320   using MagickCore::LinkedListInfo;
321   using MagickCore::MagickInfo;
322   using MagickCore::MagickWand;
323   using MagickCore::MontageInfo;
324   using MagickCore::OffsetInfo;
325   using MagickCore::PixelInfo;
326   using MagickCore::PixelWand;
327   using MagickCore::PointInfo;
328   using MagickCore::ProfileInfo;
329   using MagickCore::QuantizeInfo;
330   using MagickCore::QuantumInfo;
331   using MagickCore::RectangleInfo;
332   using MagickCore::StringInfo;
333 
334   // Alignment types.
335   using MagickCore::AlignType;
336   using MagickCore::UndefinedAlign;
337   using MagickCore::LeftAlign;
338   using MagickCore::CenterAlign;
339   using MagickCore::RightAlign;
340 
341   // Alpha channel options
342   using MagickCore::AlphaChannelOption;
343   using MagickCore::UndefinedAlphaChannel;
344   using MagickCore::ActivateAlphaChannel;
345   using MagickCore::AssociateAlphaChannel;
346   using MagickCore::BackgroundAlphaChannel;
347   using MagickCore::CopyAlphaChannel;
348   using MagickCore::DeactivateAlphaChannel;
349   using MagickCore::DiscreteAlphaChannel;
350   using MagickCore::DisassociateAlphaChannel;
351   using MagickCore::ExtractAlphaChannel;
352   using MagickCore::OffAlphaChannel;
353   using MagickCore::OnAlphaChannel;
354   using MagickCore::OpaqueAlphaChannel;
355   using MagickCore::RemoveAlphaChannel;
356   using MagickCore::SetAlphaChannel;
357   using MagickCore::ShapeAlphaChannel;
358   using MagickCore::TransparentAlphaChannel;
359 
360   // Auto threshold methods
361   using MagickCore::AutoThresholdMethod;
362   using MagickCore::UndefinedThresholdMethod;
363   using MagickCore::KapurThresholdMethod;
364   using MagickCore::OTSUThresholdMethod;
365   using MagickCore::TriangleThresholdMethod;
366 
367   // Channel types
368   using MagickCore::ChannelType;
369   using MagickCore::UndefinedChannel;
370   using MagickCore::RedChannel;
371   using MagickCore::GrayChannel;
372   using MagickCore::CyanChannel;
373   using MagickCore::GreenChannel;
374   using MagickCore::MagentaChannel;
375   using MagickCore::BlueChannel;
376   using MagickCore::YellowChannel;
377   using MagickCore::BlackChannel;
378   using MagickCore::AlphaChannel;
379   using MagickCore::OpacityChannel;
380   using MagickCore::IndexChannel;
381   using MagickCore::ReadMaskChannel;
382   using MagickCore::WriteMaskChannel;
383   using MagickCore::MetaChannel;
384   using MagickCore::CompositeChannels;
385   using MagickCore::AllChannels;
386   using MagickCore::TrueAlphaChannel;
387   using MagickCore::RGBChannels;
388   using MagickCore::GrayChannels;
389   using MagickCore::SyncChannels;
390   using MagickCore::DefaultChannels;
391 
392   // Image class types
393   using MagickCore::ClassType;
394   using MagickCore::UndefinedClass;
395   using MagickCore::DirectClass;
396   using MagickCore::PseudoClass;
397 
398   // Clip path units
399   using MagickCore::ClipPathUnits;
400   using MagickCore::UndefinedPathUnits;
401   using MagickCore::UserSpace;
402   using MagickCore::UserSpaceOnUse;
403   using MagickCore::ObjectBoundingBox;
404 
405   // Color-space types
406   using MagickCore::ColorspaceType;
407   using MagickCore::UndefinedColorspace;
408   using MagickCore::CMYColorspace;
409   using MagickCore::CMYKColorspace;
410   using MagickCore::GRAYColorspace;
411   using MagickCore::HCLColorspace;
412   using MagickCore::HCLpColorspace;
413   using MagickCore::HSBColorspace;
414   using MagickCore::HSIColorspace;
415   using MagickCore::HSLColorspace;
416   using MagickCore::HSVColorspace;
417   using MagickCore::HWBColorspace;
418   using MagickCore::LabColorspace;
419   using MagickCore::LCHColorspace;
420   using MagickCore::LCHabColorspace;
421   using MagickCore::LCHuvColorspace;
422   using MagickCore::LogColorspace;
423   using MagickCore::LMSColorspace;
424   using MagickCore::LuvColorspace;
425   using MagickCore::OHTAColorspace;
426   using MagickCore::Rec601YCbCrColorspace;
427   using MagickCore::Rec709YCbCrColorspace;
428   using MagickCore::RGBColorspace;
429   using MagickCore::scRGBColorspace;
430   using MagickCore::sRGBColorspace;
431   using MagickCore::TransparentColorspace;
432   using MagickCore::xyYColorspace;
433   using MagickCore::XYZColorspace;
434   using MagickCore::YCbCrColorspace;
435   using MagickCore::YCCColorspace;
436   using MagickCore::YDbDrColorspace;
437   using MagickCore::YIQColorspace;
438   using MagickCore::YPbPrColorspace;
439   using MagickCore::YUVColorspace;
440   using MagickCore::LinearGRAYColorspace;
441 
442   // Command options
443   using MagickCore::CommandOption;
444   using MagickCore::MagickDirectionOptions;
445   using MagickCore::MagickGravityOptions;
446   using MagickCore::MagickKernelOptions;
447   using MagickCore::MagickStyleOptions;
448 
449   // Compliance types
450   using MagickCore::ComplianceType;
451   using MagickCore::AllCompliance;
452 
453   // Composition operations
454   using MagickCore::CompositeOperator;
455   using MagickCore::AlphaCompositeOp;
456   using MagickCore::AtopCompositeOp;
457   using MagickCore::BlendCompositeOp;
458   using MagickCore::BlurCompositeOp;
459   using MagickCore::BumpmapCompositeOp;
460   using MagickCore::ChangeMaskCompositeOp;
461   using MagickCore::ClearCompositeOp;
462   using MagickCore::ColorBurnCompositeOp;
463   using MagickCore::ColorDodgeCompositeOp;
464   using MagickCore::ColorizeCompositeOp;
465   using MagickCore::CopyBlackCompositeOp;
466   using MagickCore::CopyBlueCompositeOp;
467   using MagickCore::CopyCompositeOp;
468   using MagickCore::CopyCyanCompositeOp;
469   using MagickCore::CopyGreenCompositeOp;
470   using MagickCore::CopyMagentaCompositeOp;
471   using MagickCore::CopyAlphaCompositeOp;
472   using MagickCore::CopyRedCompositeOp;
473   using MagickCore::CopyYellowCompositeOp;
474   using MagickCore::DarkenCompositeOp;
475   using MagickCore::DarkenIntensityCompositeOp;
476   using MagickCore::DifferenceCompositeOp;
477   using MagickCore::DisplaceCompositeOp;
478   using MagickCore::DissolveCompositeOp;
479   using MagickCore::DistortCompositeOp;
480   using MagickCore::DivideDstCompositeOp;
481   using MagickCore::DivideSrcCompositeOp;
482   using MagickCore::DstAtopCompositeOp;
483   using MagickCore::DstCompositeOp;
484   using MagickCore::DstInCompositeOp;
485   using MagickCore::DstOutCompositeOp;
486   using MagickCore::DstOverCompositeOp;
487   using MagickCore::ExclusionCompositeOp;
488   using MagickCore::HardLightCompositeOp;
489   using MagickCore::HardMixCompositeOp;
490   using MagickCore::HueCompositeOp;
491   using MagickCore::InCompositeOp;
492   using MagickCore::IntensityCompositeOp;
493   using MagickCore::LightenCompositeOp;
494   using MagickCore::LightenIntensityCompositeOp;
495   using MagickCore::LinearBurnCompositeOp;
496   using MagickCore::LinearDodgeCompositeOp;
497   using MagickCore::LinearLightCompositeOp;
498   using MagickCore::LuminizeCompositeOp;
499   using MagickCore::MathematicsCompositeOp;
500   using MagickCore::MinusDstCompositeOp;
501   using MagickCore::MinusSrcCompositeOp;
502   using MagickCore::ModulateCompositeOp;
503   using MagickCore::ModulusAddCompositeOp;
504   using MagickCore::ModulusSubtractCompositeOp;
505   using MagickCore::MultiplyCompositeOp;
506   using MagickCore::NoCompositeOp;
507   using MagickCore::OutCompositeOp;
508   using MagickCore::OverCompositeOp;
509   using MagickCore::OverlayCompositeOp;
510   using MagickCore::PegtopLightCompositeOp;
511   using MagickCore::PinLightCompositeOp;
512   using MagickCore::PlusCompositeOp;
513   using MagickCore::ReplaceCompositeOp;
514   using MagickCore::SaturateCompositeOp;
515   using MagickCore::ScreenCompositeOp;
516   using MagickCore::SoftLightCompositeOp;
517   using MagickCore::SrcAtopCompositeOp;
518   using MagickCore::SrcCompositeOp;
519   using MagickCore::SrcInCompositeOp;
520   using MagickCore::SrcOutCompositeOp;
521   using MagickCore::SrcOverCompositeOp;
522   using MagickCore::ThresholdCompositeOp;
523   using MagickCore::UndefinedCompositeOp;
524   using MagickCore::VividLightCompositeOp;
525   using MagickCore::XorCompositeOp;
526 
527   // Compression algorithms
528   using MagickCore::CompressionType;
529   using MagickCore::UndefinedCompression;
530   using MagickCore::NoCompression;
531   using MagickCore::B44ACompression;
532   using MagickCore::B44Compression;
533   using MagickCore::BZipCompression;
534   using MagickCore::DWAACompression;
535   using MagickCore::DWABCompression;
536   using MagickCore::DXT1Compression;
537   using MagickCore::DXT3Compression;
538   using MagickCore::DXT5Compression;
539   using MagickCore::FaxCompression;
540   using MagickCore::Group4Compression;
541   using MagickCore::JBIG1Compression;
542   using MagickCore::JBIG2Compression;
543   using MagickCore::JPEG2000Compression;
544   using MagickCore::JPEGCompression;
545   using MagickCore::LosslessJPEGCompression;
546   using MagickCore::LZMACompression;
547   using MagickCore::LZWCompression;
548   using MagickCore::PizCompression;
549   using MagickCore::Pxr24Compression;
550   using MagickCore::RLECompression;
551   using MagickCore::WebPCompression;
552   using MagickCore::ZipCompression;
553   using MagickCore::ZipSCompression;
554   using MagickCore::ZstdCompression;
555 
556   // Decoration types
557   using MagickCore::DecorationType;
558   using MagickCore::UndefinedDecoration;
559   using MagickCore::NoDecoration;
560   using MagickCore::UnderlineDecoration;
561   using MagickCore::OverlineDecoration;
562   using MagickCore::LineThroughDecoration;
563 
564   // Direction types
565   using MagickCore::DirectionType;
566   using MagickCore::UndefinedDirection;
567   using MagickCore::RightToLeftDirection;
568   using MagickCore::LeftToRightDirection;
569 
570   // Dispose methods
571   using MagickCore::DisposeType;
572   using MagickCore::UndefinedDispose;
573   using MagickCore::NoneDispose;
574   using MagickCore::BackgroundDispose;
575   using MagickCore::PreviousDispose;
576 
577   // Distort methods
578   using MagickCore::DistortMethod;
579   using MagickCore::UndefinedDistortion;
580   using MagickCore::AffineDistortion;
581   using MagickCore::AffineProjectionDistortion;
582   using MagickCore::ScaleRotateTranslateDistortion;
583   using MagickCore::PerspectiveDistortion;
584   using MagickCore::PerspectiveProjectionDistortion;
585   using MagickCore::BilinearForwardDistortion;
586   using MagickCore::BilinearDistortion;
587   using MagickCore::BilinearReverseDistortion;
588   using MagickCore::PolynomialDistortion;
589   using MagickCore::ArcDistortion;
590   using MagickCore::PolarDistortion;
591   using MagickCore::DePolarDistortion;
592   using MagickCore::Cylinder2PlaneDistortion;
593   using MagickCore::Plane2CylinderDistortion;
594   using MagickCore::BarrelDistortion;
595   using MagickCore::BarrelInverseDistortion;
596   using MagickCore::ShepardsDistortion;
597   using MagickCore::ResizeDistortion;
598   using MagickCore::SentinelDistortion;
599 
600   // Dither methods
601   using MagickCore::DitherMethod;
602   using MagickCore::UndefinedDitherMethod;
603   using MagickCore::NoDitherMethod;
604   using MagickCore::RiemersmaDitherMethod;
605   using MagickCore::FloydSteinbergDitherMethod;
606 
607   // Endian options
608   using MagickCore::EndianType;
609   using MagickCore::UndefinedEndian;
610   using MagickCore::LSBEndian;
611   using MagickCore::MSBEndian;
612 
613   // Boolean types
614   using MagickCore::MagickBooleanType;
615   using MagickCore::MagickFalse;
616   using MagickCore::MagickTrue;
617 
618   // Evaluate options
619   using MagickCore::MagickEvaluateOperator;
620   using MagickCore::UndefinedEvaluateOperator;
621   using MagickCore::AbsEvaluateOperator;
622   using MagickCore::AddEvaluateOperator;
623   using MagickCore::AddModulusEvaluateOperator;
624   using MagickCore::AndEvaluateOperator;
625   using MagickCore::CosineEvaluateOperator;
626   using MagickCore::DivideEvaluateOperator;
627   using MagickCore::ExponentialEvaluateOperator;
628   using MagickCore::GaussianNoiseEvaluateOperator;
629   using MagickCore::ImpulseNoiseEvaluateOperator;
630   using MagickCore::LaplacianNoiseEvaluateOperator;
631   using MagickCore::LeftShiftEvaluateOperator;
632   using MagickCore::LogEvaluateOperator;
633   using MagickCore::MaxEvaluateOperator;
634   using MagickCore::MeanEvaluateOperator;
635   using MagickCore::MedianEvaluateOperator;
636   using MagickCore::MinEvaluateOperator;
637   using MagickCore::MultiplicativeNoiseEvaluateOperator;
638   using MagickCore::MultiplyEvaluateOperator;
639   using MagickCore::OrEvaluateOperator;
640   using MagickCore::PoissonNoiseEvaluateOperator;
641   using MagickCore::PowEvaluateOperator;
642   using MagickCore::RootMeanSquareEvaluateOperator;
643   using MagickCore::RightShiftEvaluateOperator;
644   using MagickCore::SetEvaluateOperator;
645   using MagickCore::SineEvaluateOperator;
646   using MagickCore::SubtractEvaluateOperator;
647   using MagickCore::SumEvaluateOperator;
648   using MagickCore::ThresholdBlackEvaluateOperator;
649   using MagickCore::ThresholdEvaluateOperator;
650   using MagickCore::ThresholdWhiteEvaluateOperator;
651   using MagickCore::UniformNoiseEvaluateOperator;
652   using MagickCore::XorEvaluateOperator;
653 
654   // Fill rules
655   using MagickCore::FillRule;
656   using MagickCore::UndefinedRule;
657   using MagickCore::EvenOddRule;
658   using MagickCore::NonZeroRule;
659 
660   // Filter types
661   using MagickCore::FilterType;
662   using MagickCore::UndefinedFilter;
663   using MagickCore::PointFilter;
664   using MagickCore::BoxFilter;
665   using MagickCore::TriangleFilter;
666   using MagickCore::HermiteFilter;
667   using MagickCore::HannFilter;
668   using MagickCore::HammingFilter;
669   using MagickCore::BlackmanFilter;
670   using MagickCore::GaussianFilter;
671   using MagickCore::QuadraticFilter;
672   using MagickCore::CubicFilter;
673   using MagickCore::CatromFilter;
674   using MagickCore::MitchellFilter;
675   using MagickCore::JincFilter;
676   using MagickCore::SincFilter;
677   using MagickCore::SincFastFilter;
678   using MagickCore::KaiserFilter;
679   using MagickCore::WelchFilter;
680   using MagickCore::ParzenFilter;
681   using MagickCore::BohmanFilter;
682   using MagickCore::BartlettFilter;
683   using MagickCore::LagrangeFilter;
684   using MagickCore::LanczosFilter;
685   using MagickCore::LanczosSharpFilter;
686   using MagickCore::Lanczos2Filter;
687   using MagickCore::Lanczos2SharpFilter;
688   using MagickCore::RobidouxFilter;
689   using MagickCore::RobidouxSharpFilter;
690   using MagickCore::CosineFilter;
691   using MagickCore::SplineFilter;
692   using MagickCore::LanczosRadiusFilter;
693   using MagickCore::SentinelFilter;
694 
695   // Geometry flags;
696   using MagickCore::GeometryFlags;
697   using MagickCore::AreaValue;
698   using MagickCore::AspectValue;
699   using MagickCore::GreaterValue;
700   using MagickCore::HeightValue;
701   using MagickCore::LessValue;
702   using MagickCore::MinimumValue;
703   using MagickCore::NoValue;
704   using MagickCore::PercentValue;
705   using MagickCore::WidthValue;
706   using MagickCore::XNegative;
707   using MagickCore::XValue;
708   using MagickCore::YNegative;
709   using MagickCore::YValue;
710 
711   // Bit gravity
712   using MagickCore::GravityType;
713   using MagickCore::UndefinedGravity;
714   using MagickCore::ForgetGravity;
715   using MagickCore::NorthWestGravity;
716   using MagickCore::NorthGravity;
717   using MagickCore::NorthEastGravity;
718   using MagickCore::WestGravity;
719   using MagickCore::CenterGravity;
720   using MagickCore::EastGravity;
721   using MagickCore::SouthWestGravity;
722   using MagickCore::SouthGravity;
723   using MagickCore::SouthEastGravity;
724 
725   // Image types
726   using MagickCore::ImageType;
727   using MagickCore::UndefinedType;
728   using MagickCore::BilevelType;
729   using MagickCore::GrayscaleType;
730   using MagickCore::GrayscaleAlphaType;
731   using MagickCore::PaletteType;
732   using MagickCore::PaletteAlphaType;
733   using MagickCore::TrueColorType;
734   using MagickCore::TrueColorAlphaType;
735   using MagickCore::ColorSeparationType;
736   using MagickCore::ColorSeparationAlphaType;
737   using MagickCore::OptimizeType;
738   using MagickCore::PaletteBilevelAlphaType;
739 
740   // Interlace types
741   using MagickCore::InterlaceType;
742   using MagickCore::UndefinedInterlace;
743   using MagickCore::NoInterlace;
744   using MagickCore::LineInterlace;
745   using MagickCore::PlaneInterlace;
746   using MagickCore::PartitionInterlace;
747   using MagickCore::GIFInterlace;
748   using MagickCore::JPEGInterlace;
749   using MagickCore::PNGInterlace;
750 
751   // Built-in kernels
752   using MagickCore::KernelInfoType;
753   using MagickCore::UndefinedKernel;
754   using MagickCore::UnityKernel;
755   using MagickCore::GaussianKernel;
756   using MagickCore::DoGKernel;
757   using MagickCore::LoGKernel;
758   using MagickCore::BlurKernel;
759   using MagickCore::CometKernel;
760   using MagickCore::BinomialKernel;
761   using MagickCore::LaplacianKernel;
762   using MagickCore::SobelKernel;
763   using MagickCore::FreiChenKernel;
764   using MagickCore::RobertsKernel;
765   using MagickCore::PrewittKernel;
766   using MagickCore::CompassKernel;
767   using MagickCore::KirschKernel;
768   using MagickCore::DiamondKernel;
769   using MagickCore::SquareKernel;
770   using MagickCore::RectangleKernel;
771   using MagickCore::OctagonKernel;
772   using MagickCore::DiskKernel;
773   using MagickCore::PlusKernel;
774   using MagickCore::CrossKernel;
775   using MagickCore::RingKernel;
776   using MagickCore::PeaksKernel;
777   using MagickCore::EdgesKernel;
778   using MagickCore::CornersKernel;
779   using MagickCore::DiagonalsKernel;
780   using MagickCore::LineEndsKernel;
781   using MagickCore::LineJunctionsKernel;
782   using MagickCore::RidgesKernel;
783   using MagickCore::ConvexHullKernel;
784   using MagickCore::ThinSEKernel;
785   using MagickCore::SkeletonKernel;
786   using MagickCore::ChebyshevKernel;
787   using MagickCore::ManhattanKernel;
788   using MagickCore::OctagonalKernel;
789   using MagickCore::EuclideanKernel;
790   using MagickCore::UserDefinedKernel;
791 
792   // Layer method
793   using MagickCore::LayerMethod;
794   using MagickCore::UndefinedLayer;
795   using MagickCore::CoalesceLayer;
796   using MagickCore::CompareAnyLayer;
797   using MagickCore::CompareClearLayer;
798   using MagickCore::CompareOverlayLayer;
799   using MagickCore::DisposeLayer;
800   using MagickCore::OptimizeLayer;
801   using MagickCore::OptimizeImageLayer;
802   using MagickCore::OptimizePlusLayer;
803   using MagickCore::OptimizeTransLayer;
804   using MagickCore::RemoveDupsLayer;
805   using MagickCore::RemoveZeroLayer;
806   using MagickCore::CompositeLayer;
807   using MagickCore::MergeLayer;
808   using MagickCore::FlattenLayer;
809   using MagickCore::MosaicLayer;
810   using MagickCore::TrimBoundsLayer;
811 
812   // Line cap types
813   using MagickCore::LineCap;
814   using MagickCore::UndefinedCap;
815   using MagickCore::ButtCap;
816   using MagickCore::RoundCap;
817   using MagickCore::SquareCap;
818 
819   // Line join types
820   using MagickCore::LineJoin;
821   using MagickCore::UndefinedJoin;
822   using MagickCore::MiterJoin;
823   using MagickCore::RoundJoin;
824   using MagickCore::BevelJoin;
825 
826   // Log event types
827   using MagickCore::LogEventType;
828   using MagickCore::UndefinedEvents;
829   using MagickCore::NoEvents;
830   using MagickCore::AccelerateEvent;
831   using MagickCore::AnnotateEvent;
832   using MagickCore::BlobEvent;
833   using MagickCore::CacheEvent;
834   using MagickCore::CoderEvent;
835   using MagickCore::ConfigureEvent;
836   using MagickCore::DeprecateEvent;
837   using MagickCore::DrawEvent;
838   using MagickCore::ExceptionEvent;
839   using MagickCore::ImageEvent;
840   using MagickCore::LocaleEvent;
841   using MagickCore::ModuleEvent;
842   using MagickCore::PixelEvent;
843   using MagickCore::PolicyEvent;
844   using MagickCore::ResourceEvent;
845   using MagickCore::TraceEvent;
846   using MagickCore::TransformEvent;
847   using MagickCore::UserEvent;
848   using MagickCore::WandEvent;
849   using MagickCore::X11Event;
850   using MagickCore::CommandEvent;
851   using MagickCore::AllEvents;
852 
853   // Magick functions
854   using MagickCore::MagickFunction;
855   using MagickCore::UndefinedFunction;
856   using MagickCore::ArcsinFunction;
857   using MagickCore::ArctanFunction;
858   using MagickCore::PolynomialFunction;
859   using MagickCore::SinusoidFunction;
860 
861   // Metric types
862   using MagickCore::MetricType;
863   using MagickCore::UndefinedErrorMetric;
864   using MagickCore::AbsoluteErrorMetric;
865   using MagickCore::FuzzErrorMetric;
866   using MagickCore::MeanAbsoluteErrorMetric;
867   using MagickCore::MeanErrorPerPixelErrorMetric;
868   using MagickCore::MeanSquaredErrorMetric;
869   using MagickCore::NormalizedCrossCorrelationErrorMetric;
870   using MagickCore::PeakAbsoluteErrorMetric;
871   using MagickCore::PeakSignalToNoiseRatioErrorMetric;
872   using MagickCore::PerceptualHashErrorMetric;
873   using MagickCore::RootMeanSquaredErrorMetric;
874 
875   // Morphology methods
876   using MagickCore::MorphologyMethod;
877   using MagickCore::UndefinedMorphology;
878   using MagickCore::ConvolveMorphology;
879   using MagickCore::CorrelateMorphology;
880   using MagickCore::ErodeMorphology;
881   using MagickCore::DilateMorphology;
882   using MagickCore::ErodeIntensityMorphology;
883   using MagickCore::DilateIntensityMorphology;
884   using MagickCore::IterativeDistanceMorphology;
885   using MagickCore::OpenMorphology;
886   using MagickCore::CloseMorphology;
887   using MagickCore::OpenIntensityMorphology;
888   using MagickCore::CloseIntensityMorphology;
889   using MagickCore::SmoothMorphology;
890   using MagickCore::EdgeInMorphology;
891   using MagickCore::EdgeOutMorphology;
892   using MagickCore::EdgeMorphology;
893   using MagickCore::TopHatMorphology;
894   using MagickCore::BottomHatMorphology;
895   using MagickCore::HitAndMissMorphology;
896   using MagickCore::ThinningMorphology;
897   using MagickCore::ThickenMorphology;
898   using MagickCore::DistanceMorphology;
899   using MagickCore::VoronoiMorphology;
900 
901   // Noise types
902   using MagickCore::NoiseType;
903   using MagickCore::UndefinedNoise;
904   using MagickCore::UniformNoise;
905   using MagickCore::GaussianNoise;
906   using MagickCore::MultiplicativeGaussianNoise;
907   using MagickCore::ImpulseNoise;
908   using MagickCore::LaplacianNoise;
909   using MagickCore::PoissonNoise;
910 
911   // Orientation types
912   using MagickCore::OrientationType;
913   using MagickCore::UndefinedOrientation;
914   using MagickCore::TopLeftOrientation;
915   using MagickCore::TopRightOrientation;
916   using MagickCore::BottomRightOrientation;
917   using MagickCore::BottomLeftOrientation;
918   using MagickCore::LeftTopOrientation;
919   using MagickCore::RightTopOrientation;
920   using MagickCore::RightBottomOrientation;
921   using MagickCore::LeftBottomOrientation;
922 
923   // Paint methods
924   using MagickCore::PaintMethod;
925   using MagickCore::UndefinedMethod;
926   using MagickCore::PointMethod;
927   using MagickCore::ReplaceMethod;
928   using MagickCore::FloodfillMethod;
929   using MagickCore::FillToBorderMethod;
930   using MagickCore::ResetMethod;
931 
932   using MagickCore::PixelChannel;
933   using MagickCore::UndefinedPixelChannel;
934   using MagickCore::RedPixelChannel;
935   using MagickCore::CyanPixelChannel;
936   using MagickCore::GrayPixelChannel;
937   using MagickCore::LPixelChannel;
938   using MagickCore::YPixelChannel;
939   using MagickCore::aPixelChannel;
940   using MagickCore::GreenPixelChannel;
941   using MagickCore::MagentaPixelChannel;
942   using MagickCore::CbPixelChannel;
943   using MagickCore::bPixelChannel;
944   using MagickCore::BluePixelChannel;
945   using MagickCore::YellowPixelChannel;
946   using MagickCore::CrPixelChannel;
947   using MagickCore::BlackPixelChannel;
948   using MagickCore::AlphaPixelChannel;
949   using MagickCore::IndexPixelChannel;
950   using MagickCore::ReadMaskPixelChannel;
951   using MagickCore::WriteMaskPixelChannel;
952   using MagickCore::MetaPixelChannel;
953   using MagickCore::IntensityPixelChannel;
954   using MagickCore::CompositePixelChannel;
955   using MagickCore::SyncPixelChannel;
956 
957   // Pixel intensity method
958   using MagickCore::PixelIntensityMethod;
959   using MagickCore::UndefinedPixelIntensityMethod;
960   using MagickCore::AveragePixelIntensityMethod;
961   using MagickCore::BrightnessPixelIntensityMethod;
962   using MagickCore::LightnessPixelIntensityMethod;
963   using MagickCore::MSPixelIntensityMethod;
964   using MagickCore::Rec601LumaPixelIntensityMethod;
965   using MagickCore::Rec601LuminancePixelIntensityMethod;
966   using MagickCore::Rec709LumaPixelIntensityMethod;
967   using MagickCore::Rec709LuminancePixelIntensityMethod;
968   using MagickCore::RMSPixelIntensityMethod;
969 
970   // PixelInterpolate methods
971   using MagickCore::PixelInterpolateMethod;
972   using MagickCore::UndefinedInterpolatePixel;
973   using MagickCore::AverageInterpolatePixel;
974   using MagickCore::Average9InterpolatePixel;
975   using MagickCore::Average16InterpolatePixel;
976   using MagickCore::BackgroundInterpolatePixel;
977   using MagickCore::BilinearInterpolatePixel;
978   using MagickCore::BlendInterpolatePixel;
979   using MagickCore::CatromInterpolatePixel;
980   using MagickCore::IntegerInterpolatePixel;
981   using MagickCore::MeshInterpolatePixel;
982   using MagickCore::NearestInterpolatePixel;
983   using MagickCore::SplineInterpolatePixel;
984 
985   // Pixel traits
986   using MagickCore::PixelTrait;
987   using MagickCore::UndefinedPixelTrait;
988   using MagickCore::CopyPixelTrait;
989   using MagickCore::UpdatePixelTrait;
990   using MagickCore::BlendPixelTrait;
991 
992   // Policy domains
993   using MagickCore::PolicyDomain;
994   using MagickCore::UndefinedPolicyDomain;
995   using MagickCore::CoderPolicyDomain;
996   using MagickCore::DelegatePolicyDomain;
997   using MagickCore::FilterPolicyDomain;
998   using MagickCore::PathPolicyDomain;
999   using MagickCore::ResourcePolicyDomain;
1000   using MagickCore::SystemPolicyDomain;
1001   using MagickCore::CachePolicyDomain;
1002 
1003   // Preview types.  Not currently used by Magick++
1004   using MagickCore::PreviewType;
1005   using MagickCore::UndefinedPreview;
1006   using MagickCore::RotatePreview;
1007   using MagickCore::ShearPreview;
1008   using MagickCore::RollPreview;
1009   using MagickCore::HuePreview;
1010   using MagickCore::SaturationPreview;
1011   using MagickCore::BrightnessPreview;
1012   using MagickCore::GammaPreview;
1013   using MagickCore::SpiffPreview;
1014   using MagickCore::DullPreview;
1015   using MagickCore::GrayscalePreview;
1016   using MagickCore::QuantizePreview;
1017   using MagickCore::DespecklePreview;
1018   using MagickCore::ReduceNoisePreview;
1019   using MagickCore::AddNoisePreview;
1020   using MagickCore::SharpenPreview;
1021   using MagickCore::BlurPreview;
1022   using MagickCore::ThresholdPreview;
1023   using MagickCore::EdgeDetectPreview;
1024   using MagickCore::SpreadPreview;
1025   using MagickCore::SolarizePreview;
1026   using MagickCore::ShadePreview;
1027   using MagickCore::RaisePreview;
1028   using MagickCore::SegmentPreview;
1029   using MagickCore::SwirlPreview;
1030   using MagickCore::ImplodePreview;
1031   using MagickCore::WavePreview;
1032   using MagickCore::OilPaintPreview;
1033   using MagickCore::CharcoalDrawingPreview;
1034   using MagickCore::JPEGPreview;
1035 
1036   // Quantum types
1037   using MagickCore::QuantumType;
1038   using MagickCore::IndexQuantum;
1039   using MagickCore::GrayQuantum;
1040   using MagickCore::IndexAlphaQuantum;
1041   using MagickCore::GrayAlphaQuantum;
1042   using MagickCore::RedQuantum;
1043   using MagickCore::CyanQuantum;
1044   using MagickCore::GreenQuantum;
1045   using MagickCore::YellowQuantum;
1046   using MagickCore::BlueQuantum;
1047   using MagickCore::MagentaQuantum;
1048   using MagickCore::AlphaQuantum;
1049   using MagickCore::BlackQuantum;
1050   using MagickCore::RGBQuantum;
1051   using MagickCore::RGBAQuantum;
1052   using MagickCore::CMYKQuantum;
1053 
1054   // Pixel mask types
1055   using MagickCore::PixelMask;
1056   using MagickCore::UndefinedPixelMask;
1057   using MagickCore::ReadPixelMask;
1058   using MagickCore::WritePixelMask;
1059 
1060   // Rendering intents
1061   using MagickCore::RenderingIntent;
1062   using MagickCore::UndefinedIntent;
1063   using MagickCore::SaturationIntent;
1064   using MagickCore::PerceptualIntent;
1065   using MagickCore::AbsoluteIntent;
1066   using MagickCore::RelativeIntent;
1067 
1068   // Resource types
1069   using MagickCore::ResourceType;
1070   using MagickCore::UndefinedResource;
1071   using MagickCore::AreaResource;
1072   using MagickCore::DiskResource;
1073   using MagickCore::FileResource;
1074   using MagickCore::HeightResource;
1075   using MagickCore::MapResource;
1076   using MagickCore::MemoryResource;
1077   using MagickCore::ThreadResource;
1078   using MagickCore::ThrottleResource;
1079   using MagickCore::TimeResource;
1080   using MagickCore::WidthResource;
1081   using MagickCore::ListLengthResource;
1082 
1083   // Resolution units
1084   using MagickCore::ResolutionType;
1085   using MagickCore::UndefinedResolution;
1086   using MagickCore::PixelsPerInchResolution;
1087   using MagickCore::PixelsPerCentimeterResolution;
1088 
1089   // Sparse Color methods
1090   using MagickCore::SparseColorMethod;
1091   using MagickCore::UndefinedColorInterpolate;
1092   using MagickCore::BarycentricColorInterpolate;
1093   using MagickCore::BilinearColorInterpolate;
1094   using MagickCore::PolynomialColorInterpolate;
1095   using MagickCore::ShepardsColorInterpolate;
1096   using MagickCore::VoronoiColorInterpolate;
1097   using MagickCore::InverseColorInterpolate;
1098   using MagickCore::ManhattanColorInterpolate;
1099 
1100   // Statistic type
1101   using MagickCore::StatisticType;
1102   using MagickCore::UndefinedStatistic;
1103   using MagickCore::GradientStatistic;
1104   using MagickCore::MaximumStatistic;
1105   using MagickCore::MeanStatistic;
1106   using MagickCore::MedianStatistic;
1107   using MagickCore::MinimumStatistic;
1108   using MagickCore::ModeStatistic;
1109   using MagickCore::NonpeakStatistic;
1110   using MagickCore::RootMeanSquareStatistic;
1111   using MagickCore::StandardDeviationStatistic;
1112 
1113   // StorageType type
1114   using MagickCore::StorageType;
1115   using MagickCore::UndefinedPixel;
1116   using MagickCore::CharPixel;
1117   using MagickCore::DoublePixel;
1118   using MagickCore::FloatPixel;
1119   using MagickCore::LongPixel;
1120   using MagickCore::LongLongPixel;
1121   using MagickCore::QuantumPixel;
1122   using MagickCore::ShortPixel;
1123 
1124   // StretchType type
1125   using MagickCore::StretchType;
1126   using MagickCore::UndefinedStretch;
1127   using MagickCore::NormalStretch;
1128   using MagickCore::UltraCondensedStretch;
1129   using MagickCore::ExtraCondensedStretch;
1130   using MagickCore::CondensedStretch;
1131   using MagickCore::SemiCondensedStretch;
1132   using MagickCore::SemiExpandedStretch;
1133   using MagickCore::ExpandedStretch;
1134   using MagickCore::ExtraExpandedStretch;
1135   using MagickCore::UltraExpandedStretch;
1136   using MagickCore::AnyStretch;
1137 
1138   // StyleType type
1139   using MagickCore::StyleType;
1140   using MagickCore::UndefinedStyle;
1141   using MagickCore::NormalStyle;
1142   using MagickCore::ItalicStyle;
1143   using MagickCore::ObliqueStyle;
1144   using MagickCore::AnyStyle;
1145 
1146   // Virtual pixel methods
1147   using MagickCore::VirtualPixelMethod;
1148   using MagickCore::UndefinedVirtualPixelMethod;
1149   using MagickCore::BackgroundVirtualPixelMethod;
1150   using MagickCore::DitherVirtualPixelMethod;
1151   using MagickCore::EdgeVirtualPixelMethod;
1152   using MagickCore::MirrorVirtualPixelMethod;
1153   using MagickCore::RandomVirtualPixelMethod;
1154   using MagickCore::TileVirtualPixelMethod;
1155   using MagickCore::TransparentVirtualPixelMethod;
1156   using MagickCore::MaskVirtualPixelMethod;
1157   using MagickCore::BlackVirtualPixelMethod;
1158   using MagickCore::GrayVirtualPixelMethod;
1159   using MagickCore::WhiteVirtualPixelMethod;
1160   using MagickCore::HorizontalTileVirtualPixelMethod;
1161   using MagickCore::VerticalTileVirtualPixelMethod;
1162   using MagickCore::HorizontalTileEdgeVirtualPixelMethod;
1163   using MagickCore::VerticalTileEdgeVirtualPixelMethod;
1164   using MagickCore::CheckerTileVirtualPixelMethod;
1165 
1166 #if defined(MAGICKCORE_IMPLEMENTATION)
1167   //
1168   // ImageMagick symbols used in implementation code
1169   //
1170   using MagickCore::AcquireAlignedMemory;
1171   using MagickCore::AcquireAuthenticCacheView;
1172   using MagickCore::AcquireDrawingWand;
1173   using MagickCore::AcquireExceptionInfo;
1174   using MagickCore::AcquireVirtualCacheView;
1175   using MagickCore::AcquireImage;
1176   using MagickCore::AcquireKernelInfo;
1177   using MagickCore::AcquireMagickInfo;
1178   using MagickCore::AcquireMagickMemory;
1179   using MagickCore::AcquireQuantumInfo;
1180   using MagickCore::AcquireString;
1181   using MagickCore::AcquireStringInfo;
1182   using MagickCore::AdaptiveBlurImage;
1183   using MagickCore::AdaptiveResizeImage;
1184   using MagickCore::AdaptiveSharpenImage;
1185   using MagickCore::AdaptiveThresholdImage;
1186   using MagickCore::AddNoiseImage;
1187   using MagickCore::AffineTransformImage;
1188   using MagickCore::AnnotateImage;
1189   using MagickCore::AutoGammaImage;
1190   using MagickCore::AutoLevelImage;
1191   using MagickCore::AutoOrientImage;
1192   using MagickCore::AutoThresholdImage;
1193   using MagickCore::Base64Decode;
1194   using MagickCore::Base64Encode;
1195   using MagickCore::BilevelImage;
1196   using MagickCore::BlackThresholdImage;
1197   using MagickCore::BlobToImage;
1198   using MagickCore::BlueShiftImage;
1199   using MagickCore::BlurImage;
1200   using MagickCore::BrightnessContrastImage;
1201   using MagickCore::BorderImage;
1202   using MagickCore::CharcoalImage;
1203   using MagickCore::CannyEdgeImage;
1204   using MagickCore::ChopImage;
1205   using MagickCore::ClampImage;
1206   using MagickCore::ClampToQuantum;
1207   using MagickCore::ClearMagickException;
1208   using MagickCore::CloneDrawInfo;
1209   using MagickCore::CloneImage;
1210   using MagickCore::CloneImageInfo;
1211   using MagickCore::CloneQuantizeInfo;
1212   using MagickCore::ClutImage;
1213   using MagickCore::ColorDecisionListImage;
1214   using MagickCore::ColorizeImage;
1215   using MagickCore::ColorMatrixImage;
1216   using MagickCore::CommandOptionToMnemonic;
1217   using MagickCore::CompareImages;
1218   using MagickCore::CompareImagesLayers;
1219   using MagickCore::CompositeImage;
1220   using MagickCore::ConnectedComponentsImage;
1221   using MagickCore::ConstituteImage;
1222   using MagickCore::ContrastImage;
1223   using MagickCore::ContrastStretchImage;
1224   using MagickCore::ConvertHSLToRGB;
1225   using MagickCore::ConvertRGBToHSL;
1226   using MagickCore::ConvolveImage;
1227   using MagickCore::CopyImagePixels;
1228   using MagickCore::CopyMagickString;
1229   using MagickCore::CropImage;
1230   using MagickCore::CropImageToTiles;
1231   using MagickCore::CycleColormapImage;
1232   using MagickCore::DecipherImage;
1233   using MagickCore::DeleteImageOption;
1234   using MagickCore::DeleteImageRegistry;
1235   using MagickCore::DeskewImage;
1236   using MagickCore::DespeckleImage;
1237   using MagickCore::DestroyCacheView;
1238   using MagickCore::DestroyDrawInfo;
1239   using MagickCore::DestroyDrawingWand;
1240   using MagickCore::DestroyExceptionInfo;
1241   using MagickCore::DestroyImageInfo;
1242   using MagickCore::DestroyImageList;
1243   using MagickCore::DestroyKernelInfo;
1244   using MagickCore::DestroyMagickWand;
1245   using MagickCore::DestroyPixelWand;
1246   using MagickCore::DestroyQuantizeInfo;
1247   using MagickCore::DestroyQuantumInfo;
1248   using MagickCore::DestroyString;
1249   using MagickCore::DestroyStringInfo;
1250   using MagickCore::DisplayImages;
1251   using MagickCore::DistortImage;
1252   using MagickCore::DrawAffine;
1253   using MagickCore::DrawAlpha;
1254   using MagickCore::DrawAnnotation;
1255   using MagickCore::DrawArc;
1256   using MagickCore::DrawBezier;
1257   using MagickCore::DrawCircle;
1258   using MagickCore::DrawColor;
1259   using MagickCore::DrawComment;
1260   using MagickCore::DrawComposite;
1261   using MagickCore::DrawEllipse;
1262   using MagickCore::DrawImage;
1263   using MagickCore::DrawLine;
1264   using MagickCore::DrawPathClose;
1265   using MagickCore::DrawPathCurveToAbsolute;
1266   using MagickCore::DrawPathCurveToQuadraticBezierAbsolute;
1267   using MagickCore::DrawPathCurveToQuadraticBezierRelative;
1268   using MagickCore::DrawPathCurveToQuadraticBezierSmoothAbsolute;
1269   using MagickCore::DrawPathCurveToQuadraticBezierSmoothRelative;
1270   using MagickCore::DrawPathCurveToRelative;
1271   using MagickCore::DrawPathCurveToSmoothAbsolute;
1272   using MagickCore::DrawPathCurveToSmoothRelative;
1273   using MagickCore::DrawPathEllipticArcAbsolute;
1274   using MagickCore::DrawPathEllipticArcRelative;
1275   using MagickCore::DrawPathFinish;
1276   using MagickCore::DrawPathLineToAbsolute;
1277   using MagickCore::DrawPathLineToHorizontalAbsolute;
1278   using MagickCore::DrawPathLineToHorizontalRelative;
1279   using MagickCore::DrawPathLineToRelative;
1280   using MagickCore::DrawPathLineToVerticalAbsolute;
1281   using MagickCore::DrawPathLineToVerticalRelative;
1282   using MagickCore::DrawPathMoveToAbsolute;
1283   using MagickCore::DrawPathMoveToRelative;
1284   using MagickCore::DrawPathStart;
1285   using MagickCore::DrawPoint;
1286   using MagickCore::DrawPolygon;
1287   using MagickCore::DrawPolyline;
1288   using MagickCore::DrawPopClipPath;
1289   using MagickCore::DrawPopDefs;
1290   using MagickCore::DrawPopPattern;
1291   using MagickCore::DrawPushClipPath;
1292   using MagickCore::DrawPushDefs;
1293   using MagickCore::DrawPushPattern;
1294   using MagickCore::DrawRectangle;
1295   using MagickCore::DrawRender;
1296   using MagickCore::DrawRotate;
1297   using MagickCore::DrawRoundRectangle;
1298   using MagickCore::DrawScale;
1299   using MagickCore::DrawSetClipPath;
1300   using MagickCore::DrawSetClipRule;
1301   using MagickCore::DrawSetClipUnits;
1302   using MagickCore::DrawSetFillColor;
1303   using MagickCore::DrawSetFillOpacity;
1304   using MagickCore::DrawSetFillPatternURL;
1305   using MagickCore::DrawSetFillRule;
1306   using MagickCore::DrawSetFont;
1307   using MagickCore::DrawSetFontFamily;
1308   using MagickCore::DrawSetFontSize;
1309   using MagickCore::DrawSetFontStretch;
1310   using MagickCore::DrawSetFontStyle;
1311   using MagickCore::DrawSetFontWeight;
1312   using MagickCore::DrawSetGravity;
1313   using MagickCore::DrawSetStrokeAntialias;
1314   using MagickCore::DrawSetStrokeColor;
1315   using MagickCore::DrawSetStrokeDashArray;
1316   using MagickCore::DrawSetStrokeDashOffset;
1317   using MagickCore::DrawSetStrokeLineCap;
1318   using MagickCore::DrawSetStrokeLineJoin;
1319   using MagickCore::DrawSetStrokeMiterLimit;
1320   using MagickCore::DrawSetStrokeOpacity;
1321   using MagickCore::DrawSetStrokePatternURL;
1322   using MagickCore::DrawSetStrokeWidth;
1323   using MagickCore::DrawSetTextAntialias;
1324   using MagickCore::DrawSetTextDecoration;
1325   using MagickCore::DrawSetTextEncoding;
1326   using MagickCore::DrawSetTextInterlineSpacing;
1327   using MagickCore::DrawSetTextInterwordSpacing;
1328   using MagickCore::DrawSetTextKerning;
1329   using MagickCore::DrawSetTextUnderColor;
1330   using MagickCore::DrawSetViewbox;
1331   using MagickCore::DrawSkewX;
1332   using MagickCore::DrawSkewY;
1333   using MagickCore::DrawTranslate;
1334   using MagickCore::EdgeImage;
1335   using MagickCore::EmbossImage;
1336   using MagickCore::EncipherImage;
1337   using MagickCore::EnhanceImage;
1338   using MagickCore::EqualizeImage;
1339   using MagickCore::EvaluateImage;
1340   using MagickCore::ExportImagePixels;
1341   using MagickCore::ExportQuantumPixels;
1342   using MagickCore::ExtentImage;
1343   using MagickCore::FlipImage;
1344   using MagickCore::FloodfillPaintImage;
1345   using MagickCore::FlopImage;
1346   using MagickCore::FormatLocaleString;
1347   using MagickCore::ForwardFourierTransformImage;
1348   using MagickCore::FrameImage;
1349   using MagickCore::FxImage;
1350   using MagickCore::GammaImage;
1351   using MagickCore::GaussianBlurImage;
1352   using MagickCore::GaussianBlurImage;
1353   using MagickCore::GetAffineMatrix;
1354   using MagickCore::GetAuthenticMetacontent;
1355   using MagickCore::GetBlobSize;
1356   using MagickCore::GetCacheViewAuthenticMetacontent;
1357   using MagickCore::GetCacheViewAuthenticPixels;
1358   using MagickCore::GetCacheViewVirtualPixels;
1359   using MagickCore::GetClientName;
1360   using MagickCore::GetColorTuple;
1361   using MagickCore::GetDrawInfo;
1362   using MagickCore::GetGeometry;
1363   using MagickCore::GetImageArtifact;
1364   using MagickCore::GetImageMoments;
1365   using MagickCore::GetImageBoundingBox;
1366   using MagickCore::GetImageDistortion;
1367   using MagickCore::GetImageDepth;
1368   using MagickCore::GetImageMask;
1369   using MagickCore::GetImageMean;
1370   using MagickCore::GetImageKurtosis;
1371   using MagickCore::GetImageRange;
1372   using MagickCore::GetImageDepth;
1373   using MagickCore::GetImageInfo;
1374   using MagickCore::GetImageInfoFile;
1375   using MagickCore::GetImageOption;
1376   using MagickCore::GetImagePerceptualHash;
1377   using MagickCore::GetAuthenticPixels;
1378   using MagickCore::GetImageProfile;
1379   using MagickCore::GetImageProperty;
1380   using MagickCore::GetImageQuantizeError;
1381   using MagickCore::GetImageType;
1382   using MagickCore::GetMagickDecoderThreadSupport;
1383   using MagickCore::GetMagickEncoderThreadSupport;
1384   using MagickCore::GetMagickInfo;
1385   using MagickCore::GetMultilineTypeMetrics;
1386   using MagickCore::GetNextValueInLinkedList;
1387   using MagickCore::GetNumberOfElementsInLinkedList;
1388   using MagickCore::GetPixelBlue;
1389   using MagickCore::GetPixelChannelOffset;
1390   using MagickCore::GetPixelChannelTraits;
1391   using MagickCore::GetPixelGreen;
1392   using MagickCore::GetPixelInfo;
1393   using MagickCore::GetPixelRed;
1394   using MagickCore::GetNumberColors;
1395   using MagickCore::GetPageGeometry;
1396   using MagickCore::GetQuantizeInfo;
1397   using MagickCore::GetStringInfoDatum;
1398   using MagickCore::GetStringInfoLength;
1399   using MagickCore::GetTypeMetrics;
1400   using MagickCore::GetValueFromLinkedList;
1401   using MagickCore::GetVirtualMetacontent;
1402   using MagickCore::GetVirtualPixels;
1403   using MagickCore::GetImageVirtualPixelMethod;
1404   using MagickCore::GlobExpression;
1405   using MagickCore::GravityAdjustGeometry;
1406   using MagickCore::GrayscaleImage;
1407   using MagickCore::HaldClutImage;
1408   using MagickCore::HoughLineImage;
1409   using MagickCore::ImageToBlob;
1410   using MagickCore::ImagesToBlob;
1411   using MagickCore::ImplodeImage;
1412   using MagickCore::ImportQuantumPixels;
1413   using MagickCore::InterpretImageProperties;
1414   using MagickCore::InverseFourierTransformImage;
1415   using MagickCore::InvokeDynamicImageFilter;
1416   using MagickCore::IsEventLogging;
1417   using MagickCore::IsGeometry;
1418   using MagickCore::IsImageOpaque;
1419   using MagickCore::IsImagesEqual;
1420   using MagickCore::KuwaharaImage;
1421   using MagickCore::LevelImage;
1422   using MagickCore::LevelImageColors;
1423   using MagickCore::LevelizeImage;
1424   using MagickCore::LinearStretchImage;
1425   using MagickCore::LiquidRescaleImage;
1426   using MagickCore::LocalContrastImage;
1427   using MagickCore::LocaleCompare;
1428   using MagickCore::LockSemaphoreInfo;
1429   using MagickCore::LogMagickEvent;
1430   using MagickCore::MagickCoreTerminus;
1431   using MagickCore::MagickToMime;
1432   using MagickCore::MagnifyImage;
1433   using MagickCore::MergeImageLayers;
1434   using MagickCore::MinifyImage;
1435   using MagickCore::ModulateImage;
1436   using MagickCore::MorphologyImage;
1437   using MagickCore::MotionBlurImage;
1438   using MagickCore::NegateImage;
1439   using MagickCore::NewMagickWandFromImage;
1440   using MagickCore::NewPixelWand;
1441   using MagickCore::NormalizeImage;
1442   using MagickCore::OilPaintImage;
1443   using MagickCore::OpaquePaintImage;
1444   using MagickCore::OrderedDitherImage;
1445   using MagickCore::OptimizeImageLayers;
1446   using MagickCore::OptimizeImageTransparency;
1447   using MagickCore::OptimizePlusImageLayers;
1448   using MagickCore::ParseMetaGeometry;
1449   using MagickCore::PerceptibleImage;
1450   using MagickCore::PingBlob;
1451   using MagickCore::PingImage;
1452   using MagickCore::PixelSetPixelColor;
1453   using MagickCore::PolaroidImage;
1454   using MagickCore::PopDrawingWand;
1455   using MagickCore::PosterizeImage;
1456   using MagickCore::ProfileImage;
1457   using MagickCore::PushDrawingWand;
1458   using MagickCore::QuantizeImage;
1459   using MagickCore::QueueAuthenticPixels;
1460   using MagickCore::QueueCacheViewAuthenticPixels;
1461   using MagickCore::RaiseImage;
1462   using MagickCore::RandomThresholdImage;
1463   using MagickCore::ReadImage;
1464   using MagickCore::RegisterMagickInfo;
1465   using MagickCore::RelinquishMagickMemory;
1466   using MagickCore::RemapImage;
1467   using MagickCore::ResampleImage;
1468   using MagickCore::ResetLinkedListIterator;
1469   using MagickCore::ResizeImage;
1470   using MagickCore::ResizeMagickMemory;
1471   using MagickCore::RollImage;
1472   using MagickCore::RotateImage;
1473   using MagickCore::RotationalBlurImage;
1474   using MagickCore::SampleImage;
1475   using MagickCore::ScaleImage;
1476   using MagickCore::SegmentImage;
1477   using MagickCore::SelectiveBlurImage;
1478   using MagickCore::SeparateImage;
1479   using MagickCore::SepiaToneImage;
1480   using MagickCore::SetGeometry;
1481   using MagickCore::SetImageAlpha;
1482   using MagickCore::SetImageArtifact;
1483   using MagickCore::SetImageBackgroundColor;
1484   using MagickCore::SetImageColorspace;
1485   using MagickCore::SetImageDepth;
1486   using MagickCore::SetImageExtent;
1487   using MagickCore::SetImageInfo;
1488   using MagickCore::SetImageInfoFile;
1489   using MagickCore::SetImageMask;
1490   using MagickCore::SetImageOption;
1491   using MagickCore::SetImageProfile;
1492   using MagickCore::SetImageProperty;
1493   using MagickCore::SetImageRegistry;
1494   using MagickCore::SetImageType;
1495   using MagickCore::SetLogEventMask;
1496   using MagickCore::SetMagickResourceLimit;
1497   using MagickCore::SetImageVirtualPixelMethod;
1498   using MagickCore::SetPixelChannel;
1499   using MagickCore::SetImageChannelMask;
1500   using MagickCore::SetStringInfoDatum;
1501   using MagickCore::ShadeImage;
1502   using MagickCore::ShadowImage;
1503   using MagickCore::SharpenImage;
1504   using MagickCore::SharpenImage;
1505   using MagickCore::ShaveImage;
1506   using MagickCore::ShearImage;
1507   using MagickCore::SigmoidalContrastImage;
1508   using MagickCore::SignatureImage;
1509   using MagickCore::SimilarityImage;
1510   using MagickCore::SketchImage;
1511   using MagickCore::SmushImages;
1512   using MagickCore::SolarizeImage;
1513   using MagickCore::SparseColorImage;
1514   using MagickCore::SpliceImage;
1515   using MagickCore::SpreadImage;
1516   using MagickCore::StatisticImage;
1517   using MagickCore::SteganoImage;
1518   using MagickCore::StereoImage;
1519   using MagickCore::StripImage;
1520   using MagickCore::SwirlImage;
1521   using MagickCore::SyncCacheViewAuthenticPixels;
1522   using MagickCore::SyncImage;
1523   using MagickCore::SyncAuthenticPixels;
1524   using MagickCore::TextureImage;
1525   using MagickCore::ThrowException;
1526   using MagickCore::TintImage;
1527   using MagickCore::TransformImageColorspace;
1528   using MagickCore::TransparentPaintImage;
1529   using MagickCore::TransparentPaintImageChroma;
1530   using MagickCore::TransposeImage;
1531   using MagickCore::TransverseImage;
1532   using MagickCore::TrimImage;
1533   using MagickCore::UniqueImageColors;
1534   using MagickCore::UnlockSemaphoreInfo;
1535   using MagickCore::UnregisterMagickInfo;
1536   using MagickCore::UnsharpMaskImage;
1537   using MagickCore::VignetteImage;
1538   using MagickCore::WaveImage;
1539   using MagickCore::WaveletDenoiseImage;
1540   using MagickCore::WhiteThresholdImage;
1541   using MagickCore::WriteImage;
1542 
1543 #endif // MAGICKCORE_IMPLEMENTATION
1544 
1545 }
1546 
1547 //////////////////////////////////////////////////////////////////////
1548 //
1549 // No user-serviceable parts beyond this point
1550 //
1551 //////////////////////////////////////////////////////////////////////
1552 #define GetPPException \
1553   MagickCore::ExceptionInfo \
1554     *exceptionInfo; \
1555   exceptionInfo=MagickCore::AcquireExceptionInfo();
1556 #define GetAndSetPPChannelMask(channel) \
1557   MagickCore::ChannelType \
1558     channel_mask; \
1559   channel_mask=MagickCore::SetImageChannelMask(image(),channel)
1560 #define ClonePPDrawException(wand) \
1561   MagickCore::ExceptionInfo \
1562     *exceptionInfo; \
1563   exceptionInfo=MagickCore::DrawCloneExceptionInfo(wand)
1564 #define RestorePPChannelMask \
1565   MagickCore::SetPixelChannelMask(image(),channel_mask)
1566 #define SetPPChannelMask(channel) \
1567   (void) MagickCore::SetImageChannelMask(image(),channel)
1568 #define ThrowPPDrawException(quiet) \
1569   throwException(exceptionInfo,quiet); \
1570   (void) MagickCore::DestroyExceptionInfo(exceptionInfo)
1571 #define ThrowPPException(quiet) \
1572   throwException(exceptionInfo,quiet); \
1573   (void) MagickCore::DestroyExceptionInfo(exceptionInfo)
1574 
1575 #endif // Magick_Include_header
1576