MagickCore  6.9.12-19
Convert, Edit, Or Compose Bitmap Images
geometry.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2021 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)
22 extern "C" {
23 #endif
24 
25 typedef 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 #undef AllValues
62  AllValues = 0x7fffffff
64 
65 #if defined(ForgetGravity)
66 #undef ForgetGravity
67 #undef NorthWestGravity
68 #undef NorthGravity
69 #undef NorthEastGravity
70 #undef WestGravity
71 #undef CenterGravity
72 #undef EastGravity
73 #undef SouthWestGravity
74 #undef SouthGravity
75 #undef SouthEastGravity
76 #undef StaticGravity
77 #endif
78 
79 typedef enum
80 {
93 } GravityType;
94 
95 typedef struct _AffineMatrix
96 {
97  double
98  sx,
99  rx,
100  ry,
101  sy,
102  tx,
103  ty;
104 } AffineMatrix;
105 
106 typedef struct _GeometryInfo
107 {
108  double
110  sigma,
111  xi,
112  psi,
113  chi;
114 } GeometryInfo;
115 
116 typedef struct _OffsetInfo
117 {
118  ssize_t
119  x,
120  y;
121 } OffsetInfo;
122 
123 typedef struct _RectangleInfo
124 {
125  size_t
127  height;
128 
129  ssize_t
130  x,
131  y;
132 } RectangleInfo;
133 
134 extern MagickExport char
135  *GetPageGeometry(const char *);
136 
138  IsGeometry(const char *),
139  IsSceneGeometry(const char *,const MagickBooleanType);
140 
142  GetGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
143  ParseAbsoluteGeometry(const char *,RectangleInfo *),
145  ParseGeometry(const char *,GeometryInfo *),
146  ParseGravityGeometry(const Image *,const char *,RectangleInfo *,
147  ExceptionInfo *),
148  ParseMetaGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
149  ParsePageGeometry(const Image *,const char *,RectangleInfo *,ExceptionInfo *),
150  ParseRegionGeometry(const Image *,const char *,RectangleInfo *,
151  ExceptionInfo *);
152 
153 extern MagickExport void
154  GravityAdjustGeometry(const size_t,const size_t,const GravityType,
155  RectangleInfo *),
156  SetGeometry(const Image *,RectangleInfo *),
158 
159 #if defined(__cplusplus) || defined(c_plusplus)
160 }
161 #endif
162 
163 #endif
double psi
Definition: geometry.h:109
Definition: geometry.h:84
Definition: geometry.h:44
Definition: geometry.h:49
double rx
Definition: geometry.h:98
Definition: geometry.h:51
Definition: geometry.h:45
ssize_t y
Definition: geometry.h:119
Definition: geometry.h:89
double ty
Definition: geometry.h:98
MagickExport MagickStatusType ParseAffineGeometry(const char *geometry, AffineMatrix *affine_matrix, ExceptionInfo *exception)
Definition: geometry.c:759
Definition: geometry.h:90
Definition: geometry.h:58
double rho
Definition: geometry.h:109
MagickExport MagickStatusType ParseAbsoluteGeometry(const char *geometry, RectangleInfo *region_info)
Definition: geometry.c:718
Definition: exception.h:102
MagickExport void SetGeometryInfo(GeometryInfo *geometry_info)
Definition: geometry.c:1719
Definition: geometry.h:81
MagickExport MagickStatusType ParseMetaGeometry(const char *geometry, ssize_t *x, ssize_t *y, size_t *width, size_t *height)
Definition: geometry.c:1366
Definition: geometry.h:95
Definition: geometry.h:87
MagickExport char * GetPageGeometry(const char *page_geometry)
Definition: geometry.c:368
struct _RectangleInfo RectangleInfo
double sigma
Definition: geometry.h:109
size_t width
Definition: geometry.h:126
Definition: image.h:152
double tx
Definition: geometry.h:98
Definition: geometry.h:55
Definition: geometry.h:116
Definition: geometry.h:50
Definition: geometry.h:31
MagickExport MagickBooleanType IsGeometry(const char *geometry)
Definition: geometry.c:620
MagickBooleanType
Definition: magick-type.h:198
unsigned int MagickStatusType
Definition: magick-type.h:127
MagickExport MagickStatusType ParsePageGeometry(const Image *image, const char *geometry, RectangleInfo *region_info, ExceptionInfo *exception)
Definition: geometry.c:1577
Definition: geometry.h:62
Definition: geometry.h:47
Definition: geometry.h:83
Definition: geometry.h:53
double ry
Definition: geometry.h:98
Definition: geometry.h:28
Definition: geometry.h:57
Definition: geometry.h:59
double sx
Definition: geometry.h:98
GravityType
Definition: geometry.h:79
Definition: geometry.h:41
Definition: geometry.h:42
ssize_t x
Definition: geometry.h:130
size_t height
Definition: geometry.h:126
Definition: geometry.h:123
Definition: geometry.h:88
Definition: geometry.h:86
GeometryFlags
Definition: geometry.h:25
Definition: geometry.h:37
double sy
Definition: geometry.h:98
double chi
Definition: geometry.h:109
MagickExport MagickStatusType GetGeometry(const char *geometry, ssize_t *x, ssize_t *y, size_t *width, size_t *height)
Definition: geometry.c:97
double xi
Definition: geometry.h:109
Definition: geometry.h:40
MagickExport MagickStatusType ParseGravityGeometry(const Image *image, const char *geometry, RectangleInfo *region_info, ExceptionInfo *exception)
Definition: geometry.c:1230
Definition: geometry.h:106
Definition: geometry.h:39
Definition: geometry.h:56
Definition: geometry.h:48
struct _AffineMatrix AffineMatrix
Definition: geometry.h:34
MagickExport MagickStatusType ParseGeometry(const char *geometry, GeometryInfo *geometry_info)
Definition: geometry.c:868
MagickExport void SetGeometry(const Image *image, RectangleInfo *geometry)
Definition: geometry.c:1685
ssize_t x
Definition: geometry.h:119
Definition: geometry.h:91
MagickExport void GravityAdjustGeometry(const size_t width, const size_t height, const GravityType gravity, RectangleInfo *region)
Definition: geometry.c:539
struct _OffsetInfo OffsetInfo
#define MagickExport
Definition: method-attribute.h:80
ssize_t y
Definition: geometry.h:130
Definition: geometry.h:85
Definition: geometry.h:33
MagickExport MagickBooleanType IsSceneGeometry(const char *geometry, const MagickBooleanType pedantic)
Definition: geometry.c:661
Definition: geometry.h:52
Definition: geometry.h:92
Definition: geometry.h:54
Definition: geometry.h:60
MagickExport MagickStatusType ParseRegionGeometry(const Image *image, const char *geometry, RectangleInfo *region_info, ExceptionInfo *exception)
Definition: geometry.c:1646
struct _GeometryInfo GeometryInfo
Definition: geometry.h:36
Definition: geometry.h:82
Definition: geometry.h:30