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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
module dmagick.c.resample;
import dmagick.c.cacheView;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
import dmagick.c.magickVersion;
import dmagick.c.pixel;
//A mixin with static if has problems with circular imports. (dmagick.c.image)
version(MagickCore_660) {} else
version(MagickCore_661) {} else
version(MagickCore_662) {} else
version(MagickCore_663) {} else
version(MagickCore_664) {} else
version(MagickCore_665) {} else
{
version = MagickCore_666_and_up;
}
extern(C)
{
version ( MagickCore_666_and_up )
{
/**
* Used to adjust the filter algorithm used when resizing images.
* Different filters experience varying degrees of success with
* various images and can take significantly different amounts of
* processing time. ImageMagick uses the LanczosFilter by default
* since this filter has been shown to provide the best results for
* most images in a reasonable amount of time. Other filter types
* (e.g. TriangleFilter) may execute much faster but may show
* artifacts when the image is re-sized or around diagonal lines.
* The only way to be sure is to test the filter with sample images.
*
* See_Also: $(LINK2 http://www.imagemagick.org/Usage/resize/,
* Resize Filters) in the Examples of ImageMagick Usage.
*/
enum FilterTypes
{
UndefinedFilter, ///
PointFilter, /// ditto
BoxFilter, /// ditto
TriangleFilter, /// ditto
HermiteFilter, /// ditto
HanningFilter, /// ditto
HammingFilter, /// ditto
BlackmanFilter, /// ditto
GaussianFilter, /// ditto
QuadraticFilter, /// ditto
CubicFilter, /// ditto
CatromFilter, /// ditto
MitchellFilter, /// ditto
JincFilter, /// ditto
SincFilter, /// ditto
SincFastFilter, /// ditto
KaiserFilter, /// ditto
WelshFilter, /// ditto
ParzenFilter, /// ditto
BohmanFilter, /// ditto
BartlettFilter, /// ditto
LagrangeFilter, /// ditto
LanczosFilter, /// ditto
LanczosSharpFilter, /// ditto
Lanczos2Filter, /// ditto
Lanczos2SharpFilter, /// ditto
RobidouxFilter, /// ditto
SentinelFilter, // a count of all the filters, not a real filter
BesselFilter = JincFilter,
Lanczos2DFilter = Lanczos2Filter,
Lanczos2DSharpFilter = Lanczos2SharpFilter
}
}
else
{
enum FilterTypes
{
UndefinedFilter,
PointFilter,
BoxFilter,
TriangleFilter,
HermiteFilter,
HanningFilter,
HammingFilter,
BlackmanFilter,
GaussianFilter,
QuadraticFilter,
CubicFilter,
CatromFilter,
MitchellFilter,
LanczosFilter,
JincFilter,
SincFilter,
KaiserFilter,
WelshFilter,
ParzenFilter,
LagrangeFilter,
BohmanFilter,
BartlettFilter,
SincFastFilter,
Lanczos2DFilter,
Lanczos2DSharpFilter,
RobidouxFilter,
SentinelFilter, /* a count of all the filters, not a real filter */
BesselFilter = JincFilter
}
}
struct ResampleFilter {}
MagickBooleanType ResamplePixelColor(ResampleFilter*, const double, const double, MagickPixelPacket*);
MagickBooleanType SetResampleFilterInterpolateMethod(ResampleFilter*, const InterpolatePixelMethod);
MagickBooleanType SetResampleFilterVirtualPixelMethod(ResampleFilter*, const VirtualPixelMethod);
ResampleFilter* AcquireResampleFilter(const(Image)*, ExceptionInfo*);
ResampleFilter* DestroyResampleFilter(ResampleFilter*);
void ScaleResampleFilter(ResampleFilter*, const double, const double, const double, const double);
void SetResampleFilter(ResampleFilter*, const FilterTypes, const double);
}
|