MagickCore  6.9.11-60
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 {
92  StaticGravity = 10
94 
95 typedef struct _AffineMatrix
96 {
97  double
98  sx,
99  rx,
100  ry,
101  sy,
102  tx,
103  ty;
105 
106 typedef struct _GeometryInfo
107 {
108  double
111  xi,
115 
116 typedef struct _OffsetInfo
117 {
118  ssize_t
119  x,
120  y;
122 
123 typedef struct _RectangleInfo
124 {
125  size_t
128 
129  ssize_t
130  x,
131  y;
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 *),
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 *),
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 *),
158 
159 #if defined(__cplusplus) || defined(c_plusplus)
160 }
161 #endif
162 
163 #endif
MagickExport
#define MagickExport
Definition: method-attribute.h:80
_Image::debug
MagickBooleanType debug
Definition: image.h:290
_Image::filename
char filename[MaxTextExtent]
Definition: image.h:278
_Image::gravity
GravityType gravity
Definition: image.h:232
_RectangleInfo::x
ssize_t x
Definition: geometry.h:130
_AffineMatrix
Definition: geometry.h:96
PsiValue
@ PsiValue
Definition: geometry.h:34
IsGeometry
MagickExport MagickBooleanType IsGeometry(const char *)
AspectValue
@ AspectValue
Definition: geometry.h:50
GravityAdjustGeometry
MagickExport void GravityAdjustGeometry(const size_t width, const size_t height, const GravityType gravity, RectangleInfo *region)
Definition: geometry.c:539
GetMagickModule
#define GetMagickModule()
Definition: log.h:29
AreaValue
@ AreaValue
Definition: geometry.h:56
SeparatorValue
@ SeparatorValue
Definition: geometry.h:58
MagickStatusType
unsigned int MagickStatusType
Definition: magick-type.h:131
ChiNegative
@ ChiNegative
Definition: geometry.h:48
_GeometryInfo::psi
double psi
Definition: geometry.h:112
XiValue
@ XiValue
Definition: geometry.h:31
geometry.h
MagickCoreSignature
#define MagickCoreSignature
Definition: method-attribute.h:86
FormatLocaleString
MagickExport ssize_t FormatLocaleString(char *magick_restrict string, const size_t length, const char *magick_restrict format,...)
Definition: locale.c:497
GravityType
GravityType
Definition: geometry.h:80
NormalizeValue
@ NormalizeValue
Definition: geometry.h:51
_RectangleInfo::height
size_t height
Definition: geometry.h:127
_OffsetInfo::x
ssize_t x
Definition: geometry.h:119
PsiNegative
@ PsiNegative
Definition: geometry.h:45
_GeometryInfo::sigma
double sigma
Definition: geometry.h:110
_RectangleInfo
Definition: geometry.h:124
GravityAdjustGeometry
MagickExport void GravityAdjustGeometry(const size_t, const size_t, const GravityType, RectangleInfo *)
image-private.h
_Image::columns
size_t columns
Definition: image.h:174
AlphaValue
@ AlphaValue
Definition: geometry.h:60
SouthGravity
@ SouthGravity
Definition: geometry.h:90
_OffsetInfo::y
ssize_t y
Definition: geometry.h:120
_GeometryInfo
Definition: geometry.h:107
_GeometryInfo::xi
double xi
Definition: geometry.h:111
XValue
@ XValue
Definition: geometry.h:30
AspectRatioValue
@ AspectRatioValue
Definition: geometry.h:59
XNegative
@ XNegative
Definition: geometry.h:44
AffineMatrix
struct _AffineMatrix AffineMatrix
SetGeometry
MagickExport void SetGeometry(const Image *image, RectangleInfo *geometry)
Definition: geometry.c:1685
EastGravity
@ EastGravity
Definition: geometry.h:88
string_.h
ChiValue
@ ChiValue
Definition: geometry.h:41
MagickTrue
@ MagickTrue
Definition: magick-type.h:205
_RectangleInfo::y
ssize_t y
Definition: geometry.h:131
SetGeometry
MagickExport void SetGeometry(const Image *, RectangleInfo *)
SouthEastGravity
@ SouthEastGravity
Definition: geometry.h:91
IsNaN
#define IsNaN(a)
Definition: magick-type.h:225
GetGeometry
MagickExport MagickStatusType GetGeometry(const char *, ssize_t *, ssize_t *, size_t *, size_t *)
ParseAbsoluteGeometry
MagickExport MagickStatusType ParseAbsoluteGeometry(const char *geometry, RectangleInfo *region_info)
Definition: geometry.c:718
SetGeometryInfo
MagickExport void SetGeometryInfo(GeometryInfo *geometry_info)
Definition: geometry.c:1719
WestGravity
@ WestGravity
Definition: geometry.h:86
TraceEvent
@ TraceEvent
Definition: log.h:38
_GeometryInfo::rho
double rho
Definition: geometry.h:109
GeometryInfo
struct _GeometryInfo GeometryInfo
ConcatenateMagickString
MagickExport size_t ConcatenateMagickString(char *magick_restrict destination, const char *magick_restrict source, const size_t length)
Definition: string.c:425
LessValue
@ LessValue
Definition: geometry.h:52
LocaleNCompare
MagickExport int LocaleNCompare(const char *p, const char *q, const size_t length)
Definition: locale.c:1570
_Image
Definition: image.h:153
UndefinedGravity
@ UndefinedGravity
Definition: geometry.h:81
_GeometryInfo::chi
double chi
Definition: geometry.h:113
MagickMax
#define MagickMax(x, y)
Definition: image-private.h:36
AllValues
@ AllValues
Definition: geometry.h:62
YNegative
@ YNegative
Definition: geometry.h:47
OptionError
@ OptionError
Definition: exception.h:57
CenterGravity
@ CenterGravity
Definition: geometry.h:87
GeometryFlags
GeometryFlags
Definition: geometry.h:26
MagickFalse
@ MagickFalse
Definition: magick-type.h:204
ParseAffineGeometry
MagickExport MagickStatusType ParseAffineGeometry(const char *, AffineMatrix *, ExceptionInfo *)
IsGeometry
MagickExport MagickBooleanType IsGeometry(const char *geometry)
Definition: geometry.c:620
IsSceneGeometry
MagickExport MagickBooleanType IsSceneGeometry(const char *, const MagickBooleanType)
Definition: geometry.c:661
_AffineMatrix::tx
double tx
Definition: geometry.h:102
RectangleInfo
struct _RectangleInfo RectangleInfo
ParseGravityGeometry
MagickExport MagickStatusType ParseGravityGeometry(const Image *image, const char *geometry, RectangleInfo *region_info, ExceptionInfo *exception)
Definition: geometry.c:1230
RhoValue
@ RhoValue
Definition: geometry.h:37
ParsePageGeometry
MagickExport MagickStatusType ParsePageGeometry(const Image *image, const char *geometry, RectangleInfo *region_info, ExceptionInfo *exception)
Definition: geometry.c:1577
_AffineMatrix::sy
double sy
Definition: geometry.h:101
_AffineMatrix::ty
double ty
Definition: geometry.h:103
_AffineMatrix::sx
double sx
Definition: geometry.h:98
ParseGeometry
MagickExport MagickStatusType ParseGeometry(const char *geometry, GeometryInfo *geometry_info)
Definition: geometry.c:868
_OffsetInfo
Definition: geometry.h:117
draw.h
XiNegative
@ XiNegative
Definition: geometry.h:42
PerceptibleReciprocal
static double PerceptibleReciprocal(const double x)
Definition: pixel-accessor.h:124
ParseMetaGeometry
MagickExport MagickStatusType ParseMetaGeometry(const char *geometry, ssize_t *x, ssize_t *y, size_t *width, size_t *height)
Definition: geometry.c:1366
GetPageGeometry
MagickExport char * GetPageGeometry(const char *)
Definition: geometry.c:368
_Image::rows
size_t rows
Definition: image.h:175
WidthValue
@ WidthValue
Definition: geometry.h:36
HeightValue
@ HeightValue
Definition: geometry.h:39
constitute.h
_Image::signature
size_t signature
Definition: image.h:307
MagickBooleanType
MagickBooleanType
Definition: magick-type.h:203
StringToDouble
static double StringToDouble(const char *magick_restrict string, char **magick_restrict sentinal)
Definition: string-private.h:82
ParseRegionGeometry
MagickExport MagickStatusType ParseRegionGeometry(const Image *, const char *, RectangleInfo *, ExceptionInfo *)
Definition: geometry.c:1646
ParseAffineGeometry
MagickExport MagickStatusType ParseAffineGeometry(const char *geometry, AffineMatrix *affine_matrix, ExceptionInfo *exception)
Definition: geometry.c:759
SetGeometryInfo
MagickExport void SetGeometryInfo(GeometryInfo *)
Definition: geometry.c:1719
PercentValue
@ PercentValue
Definition: geometry.h:49
_ExceptionInfo
Definition: exception.h:103
_RectangleInfo::width
size_t width
Definition: geometry.h:126
studio.h
ParseMetaGeometry
MagickExport MagickStatusType ParseMetaGeometry(const char *, ssize_t *, ssize_t *, size_t *, size_t *)
NorthWestGravity
@ NorthWestGravity
Definition: geometry.h:83
ParseRegionGeometry
MagickExport MagickStatusType ParseRegionGeometry(const Image *image, const char *geometry, RectangleInfo *region_info, ExceptionInfo *exception)
Definition: geometry.c:1646
_PointInfo::y
double y
Definition: draw.h:142
IsSceneGeometry
MagickExport MagickBooleanType IsSceneGeometry(const char *geometry, const MagickBooleanType pedantic)
Definition: geometry.c:661
NoValue
@ NoValue
Definition: geometry.h:28
GetAffineMatrix
MagickExport void GetAffineMatrix(AffineMatrix *affine_matrix)
Definition: draw.c:5779
memory_.h
SigmaValue
@ SigmaValue
Definition: geometry.h:40
NorthEastGravity
@ NorthEastGravity
Definition: geometry.h:85
DecimalValue
@ DecimalValue
Definition: geometry.h:57
_PointInfo
Definition: draw.h:139
CorrelateNormalizeValue
@ CorrelateNormalizeValue
Definition: geometry.h:55
MagickEpsilon
#define MagickEpsilon
Definition: magick-type.h:119
ParseGeometry
MagickExport MagickStatusType ParseGeometry(const char *, GeometryInfo *)
pixel-accessor.h
_AffineMatrix::ry
double ry
Definition: geometry.h:100
YValue
@ YValue
Definition: geometry.h:33
exception-private.h
GetPageGeometry
MagickExport char * GetPageGeometry(const char *page_geometry)
Definition: geometry.c:368
SouthWestGravity
@ SouthWestGravity
Definition: geometry.h:89
ThrowMagickException
MagickExport MagickBooleanType ThrowMagickException(ExceptionInfo *exception, const char *module, const char *function, const size_t line, const ExceptionType severity, const char *tag, const char *format,...)
Definition: exception.c:1149
exception.h
StaticGravity
@ StaticGravity
Definition: geometry.h:92
MinimumValue
@ MinimumValue
Definition: geometry.h:54
CopyMagickString
MagickExport size_t CopyMagickString(char *magick_restrict destination, const char *magick_restrict source, const size_t length)
Definition: string.c:751
GetGeometry
MagickExport MagickStatusType GetGeometry(const char *geometry, ssize_t *x, ssize_t *y, size_t *width, size_t *height)
Definition: geometry.c:97
LogMagickEvent
MagickExport MagickBooleanType LogMagickEvent(const LogEventType type, const char *module, const char *function, const size_t line, const char *format,...)
Definition: log.c:1420
MaxTextExtent
#define MaxTextExtent
Definition: method-attribute.h:89
ParseGravityGeometry
MagickExport MagickStatusType ParseGravityGeometry(const Image *, const char *, RectangleInfo *, ExceptionInfo *)
ParsePageGeometry
MagickExport MagickStatusType ParsePageGeometry(const Image *, const char *, RectangleInfo *, ExceptionInfo *)
GetNextToken
MagickExport magick_hot_spot size_t GetNextToken(const char *magick_restrict start, const char **magick_restrict end, const size_t extent, char *magick_restrict token)
Definition: token.c:174
string-private.h
ForgetGravity
@ ForgetGravity
Definition: geometry.h:82
MagickPageSize
#define MagickPageSize(name, geometry)
token.h
AcquireString
MagickExport char * AcquireString(const char *source)
Definition: string.c:125
NorthGravity
@ NorthGravity
Definition: geometry.h:84
_AffineMatrix::rx
double rx
Definition: geometry.h:99
MAGICK_SSIZE_MIN
#define MAGICK_SSIZE_MIN
Definition: studio.h:383
_Image::page
RectangleInfo page
Definition: image.h:213
_PointInfo::x
double x
Definition: draw.h:141
ParseAbsoluteGeometry
MagickExport MagickStatusType ParseAbsoluteGeometry(const char *, RectangleInfo *)
GreaterValue
@ GreaterValue
Definition: geometry.h:53
OffsetInfo
struct _OffsetInfo OffsetInfo
MAGICK_SSIZE_MAX
#define MAGICK_SSIZE_MAX
Definition: studio.h:382