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