11#define MAGICKCORE_IMPLEMENTATION 1
12#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
14#include "Magick++/Include.h"
17#if !defined(MAGICKCORE_WINDOWS_SUPPORT)
21#include "Magick++/Geometry.h"
22#include "Magick++/Exception.h"
29 return((left_.aspect() == right_.aspect()) &&
30 (left_.fillArea() == right_.fillArea()) &&
31 (left_.greater() == right_.greater()) &&
32 (left_.height() == right_.height()) &&
33 (left_.isValid() == right_.isValid()) &&
34 (left_.less() == right_.less()) &&
35 (left_.limitPixels() == right_.limitPixels()) &&
36 (left_.percent() == right_.percent()) &&
37 (left_.width() == right_.width()) &&
38 (left_.xOff() == right_.xOff()) &&
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)
87Magick::Geometry::Geometry(
const char *geometry_)
103Magick::Geometry::Geometry(
const Geometry &geometry_)
104 : _width(geometry_._width),
105 _height(geometry_._height),
106 _xOff(geometry_._xOff),
107 _yOff(geometry_._yOff),
108 _isValid(geometry_._isValid),
109 _percent(geometry_._percent),
110 _aspect(geometry_._aspect),
111 _greater(geometry_._greater),
112 _less(geometry_._less),
113 _fillArea(geometry_._fillArea),
114 _limitPixels(geometry_._limitPixels)
118Magick::Geometry::Geometry(
const std::string &geometry_)
134Magick::Geometry::Geometry(
size_t width_,
size_t height_,ssize_t xOff_,
150Magick::Geometry::~Geometry(
void)
156 *
this=std::string(geometry_);
163 if (
this != &geometry_)
165 _width=geometry_._width;
166 _height=geometry_._height;
167 _xOff=geometry_._xOff;
168 _yOff=geometry_._yOff;
169 _isValid=geometry_._isValid;
170 _percent=geometry_._percent;
171 _aspect=geometry_._aspect;
172 _greater=geometry_._greater;
173 _less=geometry_._less;
174 _fillArea=geometry_._fillArea;
175 _limitPixels=geometry_._limitPixels;
181 const std::string &geometry_)
184 geom[MagickPathExtent];
201 (void) CopyMagickString(geom,geometry_.c_str(),MagickPathExtent);
202 if (geom[0] !=
'-' && geom[0] !=
'+' && geom[0] !=
'x' &&
203 !isdigit(
static_cast<int>(geom[0])))
205 pageptr=GetPageGeometry(geom);
208 (void) CopyMagickString(geom,pageptr,MagickPathExtent);
209 pageptr=(
char *) RelinquishMagickMemory(pageptr);
213 flags=GetGeometry(geom,&x,&y,&width_val,&height_val);
215 if (flags == NoValue)
223 if ((flags & WidthValue) != 0)
229 if ((flags & HeightValue) != 0)
235 if ((flags & XValue) != 0)
237 _xOff=
static_cast<ssize_t
>(x);
241 if ((flags & YValue) != 0)
243 _yOff=
static_cast<ssize_t
>(y);
247 if ((flags & PercentValue) != 0)
250 if ((flags & AspectValue) != 0)
253 if ((flags & LessValue) != 0)
256 if ((flags & GreaterValue) != 0)
259 if ((flags & MinimumValue) != 0)
262 if ((flags & AreaValue) != 0)
268Magick::Geometry::operator std::string()
const
271 buffer[MagickPathExtent];
277 throwExceptionExplicit(MagickCore::OptionError,
278 "Invalid geometry argument");
282 FormatLocaleString(buffer,MagickPathExtent,
"%.20g",(
double) _width);
288 FormatLocaleString(buffer,MagickPathExtent,
"%.20g",(
double) _height);
298 FormatLocaleString(buffer,MagickPathExtent,
"%.20g",(
double) _xOff);
304 FormatLocaleString(buffer,MagickPathExtent,
"%.20g",(
double) _yOff);
329void Magick::Geometry::aspect(
bool aspect_)
334bool Magick::Geometry::aspect(
void)
const
339void Magick::Geometry::fillArea(
bool fillArea_)
344bool Magick::Geometry::fillArea(
void)
const
349void Magick::Geometry::greater(
bool greater_)
354bool Magick::Geometry::greater(
void)
const
359void Magick::Geometry::height(
size_t height_)
364size_t Magick::Geometry::height(
void)
const
369void Magick::Geometry::isValid(
bool isValid_)
374bool Magick::Geometry::isValid(
void)
const
379void Magick::Geometry::less(
bool less_)
384bool Magick::Geometry::less(
void)
const
389void Magick::Geometry::limitPixels(
bool limitPixels_)
391 _limitPixels=limitPixels_;
394bool Magick::Geometry::limitPixels(
void)
const
396 return(_limitPixels);
399void Magick::Geometry::width(
size_t width_)
405void Magick::Geometry::percent(
bool percent_)
410bool Magick::Geometry::percent(
void)
const
415size_t Magick::Geometry::width(
void)
const
420void Magick::Geometry::xOff(::ssize_t xOff_)
425::ssize_t Magick::Geometry::xOff(
void)
const
430void Magick::Geometry::yOff(::ssize_t yOff_)
435::ssize_t Magick::Geometry::yOff(
void)
const
440Magick::Geometry::Geometry(
const MagickCore::RectangleInfo &rectangle_)
441 : _width(static_cast<size_t>(rectangle_.width)),
442 _height(static_cast<size_t>(rectangle_.height)),
443 _xOff(static_cast<ssize_t>(rectangle_.x)),
444 _yOff(static_cast<ssize_t>(rectangle_.y)),
456 const MagickCore::RectangleInfo &rectangle_)
458 _width=
static_cast<size_t>(rectangle_.width),
459 _height=
static_cast<size_t>(rectangle_.height),
460 _xOff=
static_cast<ssize_t
>(rectangle_.x),
461 _yOff=
static_cast<ssize_t
>(rectangle_.y),
466Magick::Geometry::operator MagickCore::RectangleInfo()
const
468 RectangleInfo rectangle;
469 rectangle.width=_width;
470 rectangle.height=_height;
476MagickPPExport
int Magick::operator == (
const Magick::Offset& left_,
479 return((left_.x() == right_.x()) &&
480 (left_.y() == right_.y()));
483MagickPPExport
int Magick::operator != (
const Magick::Offset& left_,
486 return(!(left_ == right_));
489Magick::Offset::Offset(
void)
495Magick::Offset::Offset(
const char *offset_)
502Magick::Offset::Offset(
const Offset &offset_)
508Magick::Offset::Offset(
const std::string &offset_)
515Magick::Offset::Offset(ssize_t x_,ssize_t y_)
521Magick::Offset::~Offset(
void)
525const Magick::Offset& Magick::Offset::operator=(
const char *offset_)
527 MagickCore::GeometryInfo
530 MagickCore::MagickStatusType
533 flags=ParseGeometry(offset_,&geometry_info);
534 _x=geometry_info.rho;
535 _y=geometry_info.sigma;
536 if ((flags & MagickCore::SigmaValue) == 0)
544 if (
this != &offset_)
552const Magick::Offset& Magick::Offset::operator=(
const std::string &offset_)
554 *
this=offset_.c_str();
558ssize_t Magick::Offset::x(
void)
const
563ssize_t Magick::Offset::y(
void)
const
568Magick::Offset::operator MagickCore::OffsetInfo()
const
576MagickPPExport
int Magick::operator == (
const Magick::Point& left_,
579 return((left_.x() == right_.x()) &&
580 (left_.y() == right_.y()));
583MagickPPExport
int Magick::operator != (
const Magick::Point& left_,
586 return(!(left_ == right_));
589Magick::Point::Point(
void)
595Magick::Point::Point(
const char *point_)
602Magick::Point::Point(
const Point &point_)
608Magick::Point::Point(
const std::string &point_)
615Magick::Point::Point(
double x_,
double y_)
621Magick::Point::Point(
double xy_)
627Magick::Point::~Point(
void)
631const Magick::Point& Magick::Point::operator=(
const char *point_)
633 MagickCore::GeometryInfo
636 MagickCore::MagickStatusType
639 flags=ParseGeometry(point_,&geometry_info);
640 _x=geometry_info.rho;
641 _y=geometry_info.sigma;
642 if ((flags & MagickCore::SigmaValue) == 0)
647const Magick::Point& Magick::Point::operator=(
const double xy_)
665const Magick::Point& Magick::Point::operator=(
const std::string &point_)
667 *
this=point_.c_str();
671Magick::Point::operator std::string()
const
674 buffer[MagickPathExtent];
684 FormatLocaleString(buffer,MagickPathExtent,
"%.20g",_x);
692 FormatLocaleString(buffer,MagickPathExtent,
"%.20g",(
double) _y);
698bool Magick::Point::isValid(
void)
const
703double Magick::Point::x(
void)
const
708double Magick::Point::y(
void)
const