module dmagick.c.morphology; import core.sys.posix.sys.types; import dmagick.c.exception; import dmagick.c.geometry; import dmagick.c.image; import dmagick.c.magickType; extern(C) { enum KernelInfoType { UndefinedKernel, UnityKernel, GaussianKernel, DoGKernel, LoGKernel, BlurKernel, CometKernel, LaplacianKernel, SobelKernel, FreiChenKernel, RobertsKernel, PrewittKernel, CompassKernel, KirschKernel, DiamondKernel, SquareKernel, RectangleKernel, DiskKernel, PlusKernel, CrossKernel, RingKernel, PeaksKernel, EdgesKernel, CornersKernel, ThinDiagonalsKernel, LineEndsKernel, LineJunctionsKernel, RidgesKernel, ConvexHullKernel, SkeletonKernel, ChebyshevKernel, ManhattanKernel, EuclideanKernel, UserDefinedKernel } enum MorphologyMethod { UndefinedMorphology, ConvolveMorphology, CorrelateMorphology, ErodeMorphology, DilateMorphology, ErodeIntensityMorphology, DilateIntensityMorphology, DistanceMorphology, OpenMorphology, CloseMorphology, OpenIntensityMorphology, CloseIntensityMorphology, SmoothMorphology, EdgeInMorphology, EdgeOutMorphology, EdgeMorphology, TopHatMorphology, BottomHatMorphology, HitAndMissMorphology, ThinningMorphology, ThickenMorphology } struct KernelInfo { KernelInfoType type; size_t width, height; ssize_t x, y; double* values; double minimum, maximum, negative_range, positive_range, angle; KernelInfo* next; size_t signature; } KernelInfo* AcquireKernelInfo(const char*); KernelInfo* AcquireKernelBuiltIn(const KernelInfoType, const GeometryInfo*); KernelInfo* CloneKernelInfo(const KernelInfo*); KernelInfo* DestroyKernelInfo(KernelInfo*); Image* MorphologyImage(const Image*, const MorphologyMethod, const ssize_t, const KernelInfo*, ExceptionInfo*); Image* MorphologyImageChannel(const Image*, const ChannelType, const MorphologyMethod, const ssize_t, const KernelInfo*, ExceptionInfo*); void ScaleGeometryKernelInfo(KernelInfo*, const char*); void ShowKernelInfo(KernelInfo*); }