From cbac78bbec726017355cb455a776f193e7fc3022 Mon Sep 17 00:00:00 2001 From: Mike Wey Date: Sat, 8 Jan 2011 17:48:30 +0100 Subject: initial checkin --- dmagick/c/morphology.d | 120 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 dmagick/c/morphology.d (limited to 'dmagick/c/morphology.d') diff --git a/dmagick/c/morphology.d b/dmagick/c/morphology.d new file mode 100644 index 0000000..baae868 --- /dev/null +++ b/dmagick/c/morphology.d @@ -0,0 +1,120 @@ +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*); +} -- cgit v1.2.3