9#define MAGICKCORE_IMPLEMENTATION 1
10#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
12#include "Magick++/Include.h"
15#if !defined(MAGICKCORE_WINDOWS_SUPPORT)
19#include "Magick++/Geometry.h"
20#include "Magick++/Exception.h"
27 return((left_.aspect() == right_.aspect()) &&
28 (left_.fillArea() == right_.fillArea()) &&
29 (left_.greater() == right_.greater()) &&
30 (left_.height() == right_.height()) &&
31 (left_.isValid() == right_.isValid()) &&
32 (left_.less() == right_.less()) &&
33 (left_.limitPixels() == right_.limitPixels()) &&
34 (left_.percent() == right_.percent()) &&
35 (left_.width() == right_.width()) &&
36 (left_.xNegative() == right_.xNegative()) &&
37 (left_.xOff() == right_.xOff()) &&
38 (left_.yNegative() == right_.yNegative()) &&
39 (left_.yOff() == right_.yOff()));
45 return(!(left_ == right_));
51 return(!(left_ < right_) && (left_ != right_));
57 return((left_.width()*left_.height()) < (right_.width()*right_.height()));
63 return((left_ > right_) || (left_ == right_));
69 return((left_ < right_) || (left_ == right_));
72Magick::Geometry::Geometry(
void)
89Magick::Geometry::Geometry(
const char *geometry_)
107Magick::Geometry::Geometry(
const Geometry &geometry_)
108 : _width(geometry_._width),
109 _height(geometry_._height),
110 _xOff(geometry_._xOff),
111 _yOff(geometry_._yOff),
112 _xNegative(geometry_._xNegative),
113 _yNegative(geometry_._yNegative),
114 _isValid(geometry_._isValid),
115 _percent(geometry_._percent),
116 _aspect(geometry_._aspect),
117 _greater(geometry_._greater),
118 _less(geometry_._less),
119 _fillArea(geometry_._fillArea),
120 _limitPixels(geometry_._limitPixels)
124Magick::Geometry::Geometry(
const std::string &geometry_)
142Magick::Geometry::Geometry(
size_t width_,
size_t height_,ssize_t xOff_,
143 ssize_t yOff_,
bool xNegative_,
bool yNegative_)
148 _xNegative(xNegative_),
149 _yNegative(yNegative_),
160Magick::Geometry::~Geometry(
void)
164const Magick::Geometry& Magick::Geometry::operator=(
const char * geometry_)
166 *
this=std::string(geometry_);
170Magick::Geometry& Magick::Geometry::operator=(
const Geometry& geometry_)
173 if (
this != &geometry_)
175 _width=geometry_._width;
176 _height=geometry_._height;
177 _xOff=geometry_._xOff;
178 _yOff=geometry_._yOff;
179 _xNegative=geometry_._xNegative;
180 _yNegative=geometry_._yNegative;
181 _isValid=geometry_._isValid;
182 _percent=geometry_._percent;
183 _aspect=geometry_._aspect;
184 _greater=geometry_._greater;
185 _less=geometry_._less;
186 _fillArea=geometry_._fillArea;
187 _limitPixels=geometry_._limitPixels;
192const Magick::Geometry& Magick::Geometry::operator=(
193 const std::string &geometry_)
213 (void) CopyMagickString(geom,geometry_.c_str(),MaxTextExtent);
214 if (geom[0] !=
'-' && geom[0] !=
'+' && geom[0] !=
'x' &&
215 !isdigit(
static_cast<int>(geom[0])))
217 pageptr=GetPageGeometry(geom);
220 (void) CopyMagickString(geom,pageptr,MaxTextExtent);
221 pageptr=(
char *) RelinquishMagickMemory(pageptr);
225 flags=GetGeometry(geom,&x,&y,&width_val,&height_val);
227 if (flags == NoValue)
235 if ((flags & WidthValue) != 0)
241 if ((flags & HeightValue) != 0)
247 if ((flags & XValue) != 0)
249 _xOff=
static_cast<ssize_t
>(x);
253 if ((flags & YValue) != 0)
255 _yOff=
static_cast<ssize_t
>(y);
259 if ((flags & XNegative) != 0)
262 if ((flags & YNegative) != 0)
265 if ((flags & PercentValue) != 0)
268 if ((flags & AspectValue) != 0)
271 if ((flags & LessValue) != 0)
274 if ((flags & GreaterValue) != 0)
277 if ((flags & MinimumValue) != 0)
280 if ((flags & AreaValue) != 0)
286Magick::Geometry::operator std::string()
const
289 buffer[MaxTextExtent];
295 throwExceptionExplicit(OptionError,
"Invalid geometry argument");
299 FormatLocaleString(buffer,MaxTextExtent,
"%.20g",(
double) _width);
305 FormatLocaleString(buffer,MaxTextExtent,
"%.20g",(
double) _height);
317 FormatLocaleString(buffer,MaxTextExtent,
"%.20g",(
double) _xOff);
325 FormatLocaleString(buffer,MaxTextExtent,
"%.20g",(
double) _yOff);
350Magick::Geometry::Geometry(
const MagickCore::RectangleInfo &rectangle_)
351 : _width(static_cast<size_t>(rectangle_.width)),
352 _height(static_cast<size_t>(rectangle_.height)),
353 _xOff(static_cast<ssize_t>(rectangle_.x)),
354 _yOff(static_cast<ssize_t>(rectangle_.y)),
355 _xNegative(rectangle_.x < 0 ? true : false),
356 _yNegative(rectangle_.y < 0 ? true : false),
368 const MagickCore::RectangleInfo &rectangle_)
370 _width=
static_cast<size_t>(rectangle_.width),
371 _height=
static_cast<size_t>(rectangle_.height),
372 _xOff=
static_cast<ssize_t
>(rectangle_.x),
373 _yOff=
static_cast<ssize_t
>(rectangle_.y),
374 _xNegative=rectangle_.x < 0 ? true :
false,
375 _yNegative=rectangle_.y < 0 ? true :
false,
380Magick::Geometry::operator MagickCore::RectangleInfo()
const
382 RectangleInfo rectangle;
383 rectangle.width=_width;
384 rectangle.height=_height;
390MagickPPExport
int Magick::operator == (
const Magick::Offset& left_,
391 const Magick::Offset& right_)
393 return((left_.x() == right_.x()) &&
394 (left_.y() == right_.y()));
397MagickPPExport
int Magick::operator != (
const Magick::Offset& left_,
398 const Magick::Offset& right_)
400 return(!(left_ == right_));
403Magick::Offset::Offset(
void)
409Magick::Offset::Offset(
const char *offset_)
416Magick::Offset::Offset(
const Offset &offset_)
422Magick::Offset::Offset(
const std::string &offset_)
429Magick::Offset::Offset(ssize_t x_,ssize_t y_)
435Magick::Offset::~Offset(
void)
439const Magick::Offset& Magick::Offset::operator=(
const char *offset_)
441 MagickCore::GeometryInfo
444 MagickCore::MagickStatusType
447 flags=ParseGeometry(offset_,&geometry_info);
448 _x=(ssize_t) geometry_info.rho;
449 _y=(ssize_t) geometry_info.sigma;
450 if ((flags & MagickCore::SigmaValue) == 0)
455Magick::Offset& Magick::Offset::operator=(
const Offset &offset_)
458 if (
this != &offset_)
466const Magick::Offset& Magick::Offset::operator=(
const std::string &offset_)
468 *
this=offset_.c_str();
472ssize_t Magick::Offset::x(
void)
const
477ssize_t Magick::Offset::y(
void)
const
482Magick::Offset::operator MagickCore::OffsetInfo()
const