]> granicus.if.org Git - imagemagick/blob - MagickCore/geometry.h
(no commit message)
[imagemagick] / MagickCore / geometry.h
1 /*
2   Copyright 1999-2013 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.
6   obtain a copy of the License at
7
8     http://www.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 #undef AllValues
60   AllValues = 0x7fffffff
61 } GeometryFlags;
62
63 #if defined(ForgetGravity)
64 #undef ForgetGravity
65 #undef NorthWestGravity
66 #undef NorthGravity
67 #undef NorthEastGravity
68 #undef WestGravity
69 #undef CenterGravity
70 #undef EastGravity
71 #undef SouthWestGravity
72 #undef SouthGravity
73 #undef SouthEastGravity
74 #endif
75
76 typedef enum
77 {
78   UndefinedGravity,
79   ForgetGravity = 0,
80   NorthWestGravity = 1,
81   NorthGravity = 2,
82   NorthEastGravity = 3,
83   WestGravity = 4,
84   CenterGravity = 5,
85   EastGravity = 6,
86   SouthWestGravity = 7,
87   SouthGravity = 8,
88   SouthEastGravity = 9,
89 } GravityType;
90
91 typedef struct _AffineMatrix
92 {
93   double
94     sx,
95     rx,
96     ry,
97     sy,
98     tx,
99     ty;
100 } AffineMatrix;
101
102 typedef struct _GeometryInfo
103 {
104   double
105     rho,
106     sigma,
107     xi,
108     psi,
109     chi;
110 } GeometryInfo;
111
112 typedef struct _OffsetInfo
113 {
114   ssize_t
115     x,
116     y;
117 } OffsetInfo;
118
119 typedef struct _PointInfo
120 {
121   double
122     x,
123     y;
124 } PointInfo;
125
126 typedef struct _RectangleInfo
127 {
128   size_t
129     width,
130     height;
131
132   ssize_t
133     x,
134     y;
135 } RectangleInfo;
136
137 extern MagickExport char
138   *GetPageGeometry(const char *);
139
140 extern MagickExport MagickBooleanType
141   IsGeometry(const char *),
142   IsSceneGeometry(const char *,const MagickBooleanType);
143
144 extern MagickExport MagickStatusType
145   GetGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
146   ParseAbsoluteGeometry(const char *,RectangleInfo *),
147   ParseAffineGeometry(const char *,AffineMatrix *,ExceptionInfo *),
148   ParseGeometry(const char *,GeometryInfo *),
149   ParseGravityGeometry(const Image *,const char *,RectangleInfo *,
150     ExceptionInfo *),
151   ParseMetaGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
152   ParsePageGeometry(const Image *,const char *,RectangleInfo *,ExceptionInfo *),
153   ParseRegionGeometry(const Image *,const char *,RectangleInfo *,
154     ExceptionInfo *);
155
156 extern MagickExport void
157   GravityAdjustGeometry(const size_t,const size_t,
158     const GravityType,RectangleInfo *),
159   SetGeometry(const Image *,RectangleInfo *),
160   SetGeometryInfo(GeometryInfo *);
161
162 #if defined(__cplusplus) || defined(c_plusplus)
163 }
164 #endif
165
166 #endif