1 module dmagick.c.color;
2 
3 import core.stdc.stdio;
4 
5 import dmagick.c.exception;
6 import dmagick.c.image;
7 import dmagick.c.magickType;
8 import dmagick.c.magickVersion;
9 import dmagick.c.pixel;
10 
11 alias ptrdiff_t ssize_t;
12 
13 extern(C)
14 {
15 	enum ComplianceType
16 	{
17 		UndefinedCompliance,
18 		NoCompliance  = 0x0000,
19 		CSSCompliance = 0x0001,
20 		SVGCompliance = 0x0001,
21 		X11Compliance = 0x0002,
22 		XPMCompliance = 0x0004,
23 		MVGCompliance = 0x0008,
24 		AllCompliance = 0x7fffffff
25 	}
26 
27 	struct ColorInfo
28 	{
29 		char*
30 			path,
31 			name;
32 
33 		ComplianceType
34 			compliance;
35 
36 		MagickPixelPacket
37 			color;
38 
39 		MagickBooleanType
40 			exempt,
41 			stealth;
42 
43 		ColorInfo*
44 			previous,
45 			next;
46 
47 		size_t
48 			signature;
49 	}
50 
51 	struct ErrorInfo
52 	{
53 		double
54 			mean_error_per_pixel,
55 			normalized_mean_error,
56 			normalized_maximum_error;
57 	}
58 
59 	char** GetColorList(const(char)*, size_t*, ExceptionInfo*);
60 
61 	const(ColorInfo)*  GetColorInfo(const(char)*, ExceptionInfo*);
62 	const(ColorInfo)** GetColorInfoList(const(char)*, size_t*, ExceptionInfo*);
63 
64 	MagickBooleanType ColorComponentGenesis();
65 	MagickBooleanType IsColorSimilar(const(Image)*, const(PixelPacket)*, const(PixelPacket)*);
66 	MagickBooleanType IsGrayImage(const(Image)*, ExceptionInfo*);
67 	MagickBooleanType IsImageSimilar(const(Image)*, const(Image)*, ssize_t* x,ssize_t* y, ExceptionInfo*);
68 	MagickBooleanType IsMagickColorSimilar(const(MagickPixelPacket)*, const(MagickPixelPacket)*);
69 	MagickBooleanType IsMonochromeImage(const(Image)*, ExceptionInfo*);
70 	MagickBooleanType IsOpacitySimilar(const(Image)*, const(PixelPacket)*, const(PixelPacket)*);
71 	MagickBooleanType IsOpaqueImage(const(Image)*, ExceptionInfo*);
72 	MagickBooleanType ListColorInfo(FILE*, ExceptionInfo*);
73 
74 	static if ( MagickLibVersion >= 0x664 )
75 	{
76 		MagickBooleanType QueryColorCompliance(const(char)*, const ComplianceType, PixelPacket*, ExceptionInfo*);
77 	}
78 
79 	MagickBooleanType QueryColorDatabase(const(char)*, PixelPacket*, ExceptionInfo*);
80 	MagickBooleanType QueryColorname(const(Image)*, const(PixelPacket)*, const ComplianceType, char*, ExceptionInfo*);
81 
82 	static if ( MagickLibVersion >= 0x664 )
83 	{
84 		MagickBooleanType QueryMagickColorCompliance(const(char)*, const ComplianceType, MagickPixelPacket*, ExceptionInfo*);
85 	}
86 
87 	MagickBooleanType QueryMagickColor(const(char)*, MagickPixelPacket*, ExceptionInfo*);
88 	MagickBooleanType QueryMagickColorname(const(Image)*, const(MagickPixelPacket)*, const ComplianceType, char*, ExceptionInfo*);
89 
90 	void ColorComponentTerminus();
91 	void ConcatenateColorComponent(const(MagickPixelPacket)*, const ChannelType, const ComplianceType, char*);
92 	void GetColorTuple(const(MagickPixelPacket)*, const MagickBooleanType, char*);
93 }