geometry.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization
00003   dedicated to making software imaging solutions freely available.
00004 
00005   You may not use this file except in compliance with the License.  You may
00006   obtain a copy of the License at
00007 
00008     https://imagemagick.org/script/license.php
00009 
00010   Unless required by applicable law or agreed to in writing, software
00011   distributed under the License is distributed on an "AS IS" BASIS,
00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013   See the License for the specific language governing permissions and
00014   limitations under the License.
00015 
00016   MagickCore image geometry methods.
00017 */
00018 #ifndef MAGICKCORE_GEOMETRY_H
00019 #define MAGICKCORE_GEOMETRY_H
00020 
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024 
00025 typedef enum
00026 {
00027 #undef NoValue
00028   NoValue = 0x0000,
00029 #undef XValue
00030   XValue = 0x0001,
00031   XiValue = 0x0001,
00032 #undef YValue
00033   YValue = 0x0002,
00034   PsiValue = 0x0002,
00035 #undef WidthValue
00036   WidthValue = 0x0004,
00037   RhoValue = 0x0004,
00038 #undef HeightValue
00039   HeightValue = 0x0008,
00040   SigmaValue = 0x0008,
00041   ChiValue = 0x0010,
00042   XiNegative = 0x0020,
00043 #undef XNegative
00044   XNegative = 0x0020,
00045   PsiNegative = 0x0040,
00046 #undef YNegative
00047   YNegative = 0x0040,
00048   ChiNegative = 0x0080,
00049   PercentValue = 0x1000,    /* '%'  percentage of something */
00050   AspectValue = 0x2000,     /* '!'  resize no-aspect - special use flag */
00051   NormalizeValue = 0x2000,  /* '!'  ScaleKernelValue() in morphology.c */
00052   LessValue = 0x4000,       /* '<'  resize smaller - special use flag */
00053   GreaterValue = 0x8000,    /* '>'  resize larger - spacial use flag */
00054   MinimumValue = 0x10000,   /* '^'  special handling needed */
00055   CorrelateNormalizeValue = 0x10000, /* '^' see ScaleKernelValue() */
00056   AreaValue = 0x20000,      /* '@'  resize to area - special use flag */
00057   DecimalValue = 0x40000,   /* '.'  floating point numbers found */
00058   SeparatorValue = 0x80000, /* 'x'  separator found  */
00059   AspectRatioValue = 0x100000,    /* '~'  special handling needed  */
00060 #undef AllValues
00061   AllValues = 0x7fffffff
00062 } GeometryFlags;
00063 
00064 #if defined(ForgetGravity)
00065 #undef ForgetGravity
00066 #undef NorthWestGravity
00067 #undef NorthGravity
00068 #undef NorthEastGravity
00069 #undef WestGravity
00070 #undef CenterGravity
00071 #undef EastGravity
00072 #undef SouthWestGravity
00073 #undef SouthGravity
00074 #undef SouthEastGravity
00075 #endif
00076 
00077 typedef enum
00078 {
00079   UndefinedGravity,
00080   ForgetGravity = 0,
00081   NorthWestGravity = 1,
00082   NorthGravity = 2,
00083   NorthEastGravity = 3,
00084   WestGravity = 4,
00085   CenterGravity = 5,
00086   EastGravity = 6,
00087   SouthWestGravity = 7,
00088   SouthGravity = 8,
00089   SouthEastGravity = 9
00090 } GravityType;
00091 
00092 typedef struct _AffineMatrix
00093 {
00094   double
00095     sx,
00096     rx,
00097     ry,
00098     sy,
00099     tx,
00100     ty;
00101 } AffineMatrix;
00102 
00103 typedef struct _GeometryInfo
00104 {
00105   double
00106     rho,
00107     sigma,
00108     xi,
00109     psi,
00110     chi;
00111 } GeometryInfo;
00112 
00113 typedef struct _OffsetInfo
00114 {
00115   ssize_t
00116     x,
00117     y;
00118 } OffsetInfo;
00119 
00120 typedef struct _PointInfo
00121 {
00122   double
00123     x,
00124     y;
00125 } PointInfo;
00126 
00127 typedef struct _RectangleInfo
00128 {
00129   size_t
00130     width,
00131     height;
00132 
00133   ssize_t
00134     x,
00135     y;
00136 } RectangleInfo;
00137 
00138 extern MagickExport char
00139   *GetPageGeometry(const char *);
00140 
00141 extern MagickExport MagickBooleanType
00142   IsGeometry(const char *),
00143   IsSceneGeometry(const char *,const MagickBooleanType);
00144 
00145 extern MagickExport MagickStatusType
00146   GetGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
00147   ParseAbsoluteGeometry(const char *,RectangleInfo *),
00148   ParseAffineGeometry(const char *,AffineMatrix *,ExceptionInfo *),
00149   ParseGeometry(const char *,GeometryInfo *),
00150   ParseGravityGeometry(const Image *,const char *,RectangleInfo *,
00151     ExceptionInfo *),
00152   ParseMetaGeometry(const char *,ssize_t *,ssize_t *,size_t *,size_t *),
00153   ParsePageGeometry(const Image *,const char *,RectangleInfo *,ExceptionInfo *),
00154   ParseRegionGeometry(const Image *,const char *,RectangleInfo *,
00155     ExceptionInfo *);
00156 
00157 extern MagickExport void
00158   GravityAdjustGeometry(const size_t,const size_t,const GravityType,
00159     RectangleInfo *),
00160   SetGeometry(const Image *,RectangleInfo *),
00161   SetGeometryInfo(GeometryInfo *);
00162 
00163 #if defined(__cplusplus) || defined(c_plusplus)
00164 }
00165 #endif
00166 
00167 #endif

Generated on 11 May 2020 for MagickCore by  doxygen 1.6.1