00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
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,
00050 AspectValue = 0x2000,
00051 NormalizeValue = 0x2000,
00052 LessValue = 0x4000,
00053 GreaterValue = 0x8000,
00054 MinimumValue = 0x10000,
00055 CorrelateNormalizeValue = 0x10000,
00056 AreaValue = 0x20000,
00057 DecimalValue = 0x40000,
00058 SeparatorValue = 0x80000,
00059 AspectRatioValue = 0x100000,
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