MagickCore 7.1.1
Convert, Edit, Or Compose Bitmap Images
Loading...
Searching...
No Matches
geometry.h
1/*
2 Copyright @ 2003 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
4
5 You may not use this file except in compliance with the License. You may
6 obtain a copy of the License at
7
8 https://imagemagick.org/script/license.php
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 MagickCore image geometry methods.
17*/
18#ifndef MAGICKCORE_GEOMETRY_H
19#define MAGICKCORE_GEOMETRY_H
20
21#if defined(__cplusplus) || defined(c_plusplus)
22extern "C" {
23#endif
24
25typedef enum
26{
27#undef NoValue
28 NoValue = 0x0000,
29#undef XValue
30 XValue = 0x0001,
31 XiValue = 0x0001,
32#undef YValue
33 YValue = 0x0002,
34 PsiValue = 0x0002,
35#undef WidthValue
36 WidthValue = 0x0004,
37 RhoValue = 0x0004,
38#undef HeightValue
39 HeightValue = 0x0008,
40 SigmaValue = 0x0008,
41 ChiValue = 0x0010,
42 XiNegative = 0x0020,
43#undef XNegative
44 XNegative = 0x0020,
45 PsiNegative = 0x0040,
46#undef YNegative
47 YNegative = 0x0040,
48 ChiNegative = 0x0080,
49 PercentValue = 0x1000, /* '%' percentage of something */
50 AspectValue = 0x2000, /* '!' resize no-aspect - special use flag */
51 NormalizeValue = 0x2000, /* '!' ScaleKernelValue() in morphology.c */
52 LessValue = 0x4000, /* '<' resize smaller - special use flag */
53 GreaterValue = 0x8000, /* '>' resize larger - spacial use flag */
54 MinimumValue = 0x10000, /* '^' special handling needed */
55 CorrelateNormalizeValue = 0x10000, /* '^' see ScaleKernelValue() */
56 AreaValue = 0x20000, /* '@' resize to area - special use flag */
57 DecimalValue = 0x40000, /* '.' floating point numbers found */
58 SeparatorValue = 0x80000, /* 'x' separator found */
59 AspectRatioValue = 0x100000, /* '~' special handling needed */
60 AlphaValue = 0x200000, /* '/' alpha */
61 MaximumValue = 0x400000, /* '#' special handling needed */
62#undef AllValues
63 AllValues = 0x7fffffff
64} GeometryFlags;
65
66#if defined(ForgetGravity)
67#undef ForgetGravity
68#undef NorthWestGravity
69#undef NorthGravity
70#undef NorthEastGravity
71#undef WestGravity
72#undef CenterGravity
73#undef EastGravity
74#undef SouthWestGravity
75#undef SouthGravity
76#undef SouthEastGravity
77#endif
78
79typedef enum
80{
81 UndefinedGravity,
82 ForgetGravity = 0,
83 NorthWestGravity = 1,
84 NorthGravity = 2,
85 NorthEastGravity = 3,
86 WestGravity = 4,
87 CenterGravity = 5,
88 EastGravity = 6,
89 SouthWestGravity = 7,
90 SouthGravity = 8,
91 SouthEastGravity = 9
92} GravityType;
93
94typedef struct _AffineMatrix
95{
96 double
97 sx,
98 rx,
99 ry,
100 sy,
101 tx,
102 ty;
104
105typedef struct _GeometryInfo
106{
107 double
108 rho,
109 sigma,
110 xi,
111 psi,
112 chi;
114
115typedef struct _OffsetInfo
116{
117 ssize_t
118 x,
119 y;
120} OffsetInfo;
121
122typedef struct _PointInfo
123{
124 double
125 x,
126 y;
127} PointInfo;
128
129typedef struct _RectangleInfo
130{
131 size_t
132 width,
133 height;
134
135 ssize_t
136 x,
137 y;
139
140extern MagickExport char
141 *GetPageGeometry(const char *);
142
143extern MagickExport MagickBooleanType
144 IsGeometry(const char *),
145 IsSceneGeometry(const char *,const MagickBooleanType);
146
147extern MagickExport MagickStatusType
148 GetGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
149 ParseAbsoluteGeometry(const char *,RectangleInfo *),
150 ParseAffineGeometry(const char *,AffineMatrix *,ExceptionInfo *),
151 ParseGeometry(const char *,GeometryInfo *),
152 ParseGravityGeometry(const Image *,const char *,RectangleInfo *,
153 ExceptionInfo *),
154 ParseMetaGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
155 ParsePageGeometry(const Image *,const char *,RectangleInfo *,ExceptionInfo *),
156 ParseRegionGeometry(const Image *,const char *,RectangleInfo *,
157 ExceptionInfo *);
158
159extern MagickExport void
160 GravityAdjustGeometry(const size_t,const size_t,const GravityType,
161 RectangleInfo *),
162 SetGeometry(const Image *,RectangleInfo *),
163 SetGeometryInfo(GeometryInfo *);
164
165#if defined(__cplusplus) || defined(c_plusplus)
166}
167#endif
168
169#endif