1 module dmagick.c.magick;
2 
3 import dmagick.c.exception;
4 import dmagick.c.image;
5 import dmagick.c.magickType;
6 import dmagick.c.magickVersion;
7 import dmagick.c.semaphore;
8 
9 extern(C)
10 {
11 	enum MagickFormatType
12 	{
13 		UndefinedFormatType,
14 		ImplicitFormatType,
15 		ExplicitFormatType
16 	}
17 
18 	enum MagickThreadSupport
19 	{
20 		NoThreadSupport = 0x0000,
21 		DecoderThreadSupport = 0x0001,
22 		EncoderThreadSupport = 0x0002
23 	}
24 
25 	alias Image* function(const(ImageInfo)*, ExceptionInfo*) DecodeImageHandler;
26 	alias MagickBooleanType function(const(ImageInfo)*, Image*) EncodeImageHandler;
27 	alias MagickBooleanType function(const(ubyte)*, const size_t) IsImageFormatHandler;
28 
29 	struct MagickInfo
30 	{
31 		char*
32 			name,
33 			description,
34 			vversion,
35 			note,
36 			mmodule;
37 
38 		ImageInfo*
39 			image_info;
40 
41 		DecodeImageHandler*
42 			decoder;
43 
44 		EncodeImageHandler*
45 			encoder;
46 
47 		IsImageFormatHandler*
48 			magick;
49 
50 		void*
51 			client_data;
52 
53 		MagickBooleanType
54 			adjoin,
55 			raw,
56 			endian_support,
57 			blob_support,
58 			seekable_stream;
59 
60 		MagickFormatType
61 			format_type;
62 
63 		MagickStatusType
64 			thread_support;
65 
66 		MagickBooleanType
67 			stealth;
68 
69 		MagickInfo*
70 			previous,
71 			next;
72 
73 		size_t
74 			signature;
75 
76 		static if ( MagickLibVersion >= 0x687 )
77 		{
78 			char*
79 				mime_type;
80 		}
81 
82 		static if (MagickLibVersion >= 0x689)
83 		{
84 			SemaphoreInfo*
85 				semaphore;
86 		}
87 	}
88 
89 	char** GetMagickList(const(char)*, size_t*, ExceptionInfo*);
90 
91 	const(char)* GetMagickDescription(const(MagickInfo)*);
92 
93 	static if ( MagickLibVersion >= 0x687 )
94 	{
95 		const(char)* GetMagickMimeType(const(MagickInfo)*);
96 	}
97 
98 	DecodeImageHandler* GetImageDecoder(const(MagickInfo)*);
99 
100 	EncodeImageHandler* GetImageEncoder(const(MagickInfo)*);
101 
102 	int GetMagickPrecision();
103 	int SetMagickPrecision(const int);
104 
105 	MagickBooleanType GetImageMagick(const(ubyte)*, const size_t, char*);
106 	MagickBooleanType GetMagickAdjoin(const(MagickInfo)*);
107 	MagickBooleanType GetMagickBlobSupport(const(MagickInfo)*);
108 	MagickBooleanType GetMagickEndianSupport(const(MagickInfo)*);
109 	MagickBooleanType GetMagickRawSupport(const(MagickInfo)*);
110 	MagickBooleanType GetMagickSeekableStream(const(MagickInfo)*);
111 	
112 	static if (MagickLibVersion < 0x689)
113 	{
114 		MagickBooleanType IsMagickInstantiated();
115 	}
116 
117 	static if (MagickLibVersion >= 0x689)
118 	{
119 		MagickBooleanType IsMagickCoreInstantiated();
120 	}
121 
122 	MagickBooleanType MagickComponentGenesis();
123 	MagickBooleanType UnregisterMagickInfo(const(char)*);
124 
125 	const(MagickInfo)*  GetMagickInfo(const(char)*, ExceptionInfo*);
126 	const(MagickInfo)** GetMagickInfoList(const(char)*, size_t*, ExceptionInfo*);
127 
128 	MagickInfo* RegisterMagickInfo(MagickInfo*);
129 	MagickInfo* SetMagickInfo(const(char)*);
130 
131 	MagickStatusType GetMagickThreadSupport(const(MagickInfo)*);
132 
133 	void MagickComponentTerminus();
134 	void MagickCoreGenesis(const(char)*, const MagickBooleanType);
135 	void MagickCoreTerminus();
136 }