summaryrefslogtreecommitdiff
path: root/dmagick/c/magick.d
blob: 742c3dedae2a027145c9bae58d320843092d6583 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
module dmagick.c.magick;

import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;

extern(C)
{
	enum MagickFormatType
	{
		UndefinedFormatType,
		ImplicitFormatType,
		ExplicitFormatType
	}

	enum MagickThreadSupport
	{
		NoThreadSupport = 0x0000,
		DecoderThreadSupport = 0x0001,
		EncoderThreadSupport = 0x0002
	}

	alias Image* function(const(ImageInfo)*, ExceptionInfo*) DecodeImageHandler;
	alias MagickBooleanType function(const(ImageInfo)*, Image*) EncodeImageHandler;
	alias MagickBooleanType function(const(ubyte)*, const size_t) IsImageFormatHandler;

	struct MagickInfo
	{
		char*
			name,
			description,
			vversion,
			note,
			mmodule;

		ImageInfo*
			image_info;

		DecodeImageHandler*
			decoder;

		EncodeImageHandler*
			encoder;

		IsImageFormatHandler*
			magick;

		void*
			client_data;

		MagickBooleanType
			adjoin,
			raw,
			endian_support,
			blob_support,
			seekable_stream;

		MagickFormatType
			format_type;

		MagickStatusType
			thread_support;

		MagickBooleanType
			stealth;

		MagickInfo*
			previous,
			next;

		size_t
			signature;
	}

	char** GetMagickList(const(char)*, size_t*, ExceptionInfo*);

	const(char)* GetMagickDescription(const(MagickInfo)*);

	DecodeImageHandler* GetImageDecoder(const(MagickInfo)*);

	EncodeImageHandler* GetImageEncoder(const(MagickInfo)*);

	int GetMagickPrecision();
	int SetMagickPrecision(const int);

	MagickBooleanType GetImageMagick(const(ubyte)*, const size_t, char*);
	MagickBooleanType GetMagickAdjoin(const(MagickInfo)*);
	MagickBooleanType GetMagickBlobSupport(const(MagickInfo)*);
	MagickBooleanType GetMagickEndianSupport(const(MagickInfo)*);
	MagickBooleanType GetMagickRawSupport(const(MagickInfo)*);
	MagickBooleanType GetMagickSeekableStream(const(MagickInfo)*);
	MagickBooleanType IsMagickInstantiated();
	MagickBooleanType MagickComponentGenesis();
	MagickBooleanType UnregisterMagickInfo(const(char)*);

	const(MagickInfo)*  GetMagickInfo(const(char)*, ExceptionInfo*);
	const(MagickInfo)** GetMagickInfoList(const(char)*, size_t*, ExceptionInfo*);

	MagickInfo* RegisterMagickInfo(MagickInfo*);
	MagickInfo* SetMagickInfo(const(char)*);

	MagickStatusType GetMagickThreadSupport(const(MagickInfo)*);

	void MagickComponentTerminus();
	void MagickCoreGenesis(const(char)*, const MagickBooleanType);
	void MagickCoreTerminus();
}