summaryrefslogtreecommitdiff
path: root/dmagick/c/morphology.d
diff options
context:
space:
mode:
Diffstat (limited to 'dmagick/c/morphology.d')
-rw-r--r--dmagick/c/morphology.d120
1 files changed, 120 insertions, 0 deletions
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*);
+}