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
123
124
125
126
127
128
129
130
131
132
|
module dmagick.c.geometry;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
alias ptrdiff_t ssize_t;
extern(C)
{
enum GeometryFlags
{
NoValue = 0x0000,
XValue = 0x0001,
XiValue = 0x0001,
YValue = 0x0002,
PsiValue = 0x0002,
WidthValue = 0x0004,
RhoValue = 0x0004,
HeightValue = 0x0008,
SigmaValue = 0x0008,
ChiValue = 0x0010,
XiNegative = 0x0020,
XNegative = 0x0020,
PsiNegative = 0x0040,
YNegative = 0x0040,
ChiNegative = 0x0080,
PercentValue = 0x1000, /* '%' percentage of something */
AspectValue = 0x2000, /* '!' resize no-aspect - special use flag */
NormalizeValue = 0x2000, /* '!' ScaleKernelValue() in morphology.c */
LessValue = 0x4000, /* '<' resize smaller - special use flag */
GreaterValue = 0x8000, /* '>' resize larger - spacial use flag */
MinimumValue = 0x10000, /* '^' special handling needed */
CorrelateNormalizeValue = 0x10000, /* '^' see ScaleKernelValue() */
AreaValue = 0x20000, /* '@' resize to area - special use flag */
DecimalValue = 0x40000, /* '.' floating point numbers found */
SeparatorValue = 0x80000, /* 'x' separator found */
AspectRatioValue = 0x100000, /* '~' special handling needed */
AllValues = 0x7fffffff
}
/**
* Specify positioning of an object (e.g. text, image) within a
* bounding region (e.g. an image). Gravity provides a convenient way to
* locate objects irrespective of the size of the bounding region, in
* other words, you don't need to provide absolute coordinates in order
* to position an object.
* A common default for gravity is NorthWestGravity.
*/
enum GravityType
{
UndefinedGravity, ///
ForgetGravity = 0, /// Don't use gravity.
NorthWestGravity = 1, /// Position object at top-left of region.
NorthGravity = 2, /// Position object at top-center of region.
NorthEastGravity = 3, /// Position object at top-right of region.
WestGravity = 4, /// Position object at left-center of region.
CenterGravity = 5, /// Position object at center of region.
EastGravity = 6, /// Position object at right-center of region.
SouthWestGravity = 7, /// Position object at left-bottom of region.
SouthGravity = 8, /// Position object at bottom-center of region.
SouthEastGravity = 9, /// Position object at bottom-right of region.
StaticGravity = 10 ///
}
/**
* An AffineMatrix object describes a coordinate transformation.
*/
struct AffineMatrix
{
double
sx, /// The amount of scaling on the x-axis.
rx, /// The amount of rotation on the x-axis, in radians.
ry, /// The amount of rotation on the y-axis, in radians.
sy, /// The amount of scaling on the y-axis.
tx, /// The amount of translation on the x-axis, in pixels.
ty; /// The amount of translation on the x-axis, in pixels.
}
struct GeometryInfo
{
double
rho,
sigma,
xi,
psi,
chi;
}
struct OffsetInfo
{
ssize_t
x,
y;
}
struct RectangleInfo
{
size_t
width,
height;
ssize_t
x,
y;
}
char* GetPageGeometry(const(char)*);
MagickBooleanType IsGeometry(const(char)*);
MagickBooleanType IsSceneGeometry(const(char)*, const MagickBooleanType);
MagickStatusType GetGeometry(const(char)*, ssize_t*, ssize_t*, size_t*, size_t*);
MagickStatusType ParseAbsoluteGeometry(const(char)*, RectangleInfo*);
MagickStatusType ParseAffineGeometry(const(char)*, AffineMatrix*, ExceptionInfo*);
MagickStatusType ParseGeometry(const(char)*, GeometryInfo*);
MagickStatusType ParseGravityGeometry(const(Image)*, const(char)*, RectangleInfo*, ExceptionInfo*);
MagickStatusType ParseMetaGeometry(const(char)*, ssize_t*, ssize_t*, size_t*, size_t*);
MagickStatusType ParsePageGeometry(const(Image)*, const(char)*, RectangleInfo*, ExceptionInfo*);
MagickStatusType ParseRegionGeometry(const(Image)*, const(char)*, RectangleInfo*, ExceptionInfo*);
void GravityAdjustGeometry(const size_t, const size_t, const GravityType, RectangleInfo*);
void SetGeometry(const(Image)*, RectangleInfo*);
void SetGeometryInfo(GeometryInfo*);
}
|