11#define MAGICKCORE_IMPLEMENTATION 1
12#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
14#include "Magick++/Include.h"
15#include "Magick++/Geometry.h"
16#include "Magick++/Exception.h"
23 return((left_.aspect() == right_.aspect()) &&
24 (left_.fillArea() == right_.fillArea()) &&
25 (left_.greater() == right_.greater()) &&
26 (left_.height() == right_.height()) &&
27 (left_.isValid() == right_.isValid()) &&
28 (left_.less() == right_.less()) &&
29 (left_.limitPixels() == right_.limitPixels()) &&
30 (left_.percent() == right_.percent()) &&
31 (left_.width() == right_.width()) &&
32 (left_.xOff() == right_.xOff()) &&
33 (left_.yOff() == right_.yOff()));
39 return(!(left_ == right_));
45 return(!(left_ < right_) && (left_ != right_));
51 return((left_.width()*left_.height()) < (right_.width()*right_.height()));
57 return((left_ > right_) || (left_ == right_));
63 return((left_ < right_) || (left_ == right_));
66Magick::Geometry::Geometry(
void)
81Magick::Geometry::Geometry(
const char *geometry_)
97Magick::Geometry::Geometry(
const Geometry &geometry_)
98 : _width(geometry_._width),
99 _height(geometry_._height),
100 _xOff(geometry_._xOff),
101 _yOff(geometry_._yOff),
102 _isValid(geometry_._isValid),
103 _percent(geometry_._percent),
104 _aspect(geometry_._aspect),
105 _greater(geometry_._greater),
106 _less(geometry_._less),
107 _fillArea(geometry_._fillArea),
108 _limitPixels(geometry_._limitPixels)
112Magick::Geometry::Geometry(
const std::string &geometry_)
128Magick::Geometry::Geometry(
size_t width_,
size_t height_,ssize_t xOff_,
144Magick::Geometry::~Geometry(
void)
148const Magick::Geometry& Magick::Geometry::operator=(
const char *geometry_)
150 *
this=std::string(geometry_);
154Magick::Geometry& Magick::Geometry::operator=(
const Geometry &geometry_)
157 if (
this != &geometry_)
159 _width=geometry_._width;
160 _height=geometry_._height;
161 _xOff=geometry_._xOff;
162 _yOff=geometry_._yOff;
163 _isValid=geometry_._isValid;
164 _percent=geometry_._percent;
165 _aspect=geometry_._aspect;
166 _greater=geometry_._greater;
167 _less=geometry_._less;
168 _fillArea=geometry_._fillArea;
169 _limitPixels=geometry_._limitPixels;
174const Magick::Geometry& Magick::Geometry::operator=(
175 const std::string &geometry_)
178 geom[MagickPathExtent];
195 (void) CopyMagickString(geom,geometry_.c_str(),MagickPathExtent);
196 if (geom[0] !=
'-' && geom[0] !=
'+' && geom[0] !=
'x' &&
197 !isdigit(
static_cast<int>(geom[0])))
199 pageptr=GetPageGeometry(geom);
202 (void) CopyMagickString(geom,pageptr,MagickPathExtent);
203 pageptr=(
char *) RelinquishMagickMemory(pageptr);
207 flags=GetGeometry(geom,&x,&y,&width_val,&height_val);
209 if (flags == NoValue)
217 if ((flags & WidthValue) != 0)
223 if ((flags & HeightValue) != 0)
229 if ((flags & XValue) != 0)
231 _xOff=
static_cast<ssize_t
>(x);
235 if ((flags & YValue) != 0)
237 _yOff=
static_cast<ssize_t
>(y);
241 if ((flags & PercentValue) != 0)
244 if ((flags & AspectValue) != 0)
247 if ((flags & LessValue) != 0)
250 if ((flags & GreaterValue) != 0)
253 if ((flags & MinimumValue) != 0)
256 if ((flags & AreaValue) != 0)
262Magick::Geometry::operator std::string()
const
265 buffer[MagickPathExtent];
271 throwExceptionExplicit(MagickCore::OptionError,
272 "Invalid geometry argument");
276 FormatLocaleString(buffer,MagickPathExtent,
"%.17g",(
double) _width);
282 FormatLocaleString(buffer,MagickPathExtent,
"%.17g",(
double) _height);
292 FormatLocaleString(buffer,MagickPathExtent,
"%.17g",(
double) _xOff);
298 FormatLocaleString(buffer,MagickPathExtent,
"%.17g",(
double) _yOff);
323void Magick::Geometry::aspect(
bool aspect_)
328bool Magick::Geometry::aspect(
void)
const
333void Magick::Geometry::fillArea(
bool fillArea_)
338bool Magick::Geometry::fillArea(
void)
const
343void Magick::Geometry::greater(
bool greater_)
348bool Magick::Geometry::greater(
void)
const
353void Magick::Geometry::height(
size_t height_)
358size_t Magick::Geometry::height(
void)
const
363void Magick::Geometry::isValid(
bool isValid_)
368bool Magick::Geometry::isValid(
void)
const
373void Magick::Geometry::less(
bool less_)
378bool Magick::Geometry::less(
void)
const
383void Magick::Geometry::limitPixels(
bool limitPixels_)
385 _limitPixels=limitPixels_;
388bool Magick::Geometry::limitPixels(
void)
const
390 return(_limitPixels);
393void Magick::Geometry::width(
size_t width_)
399void Magick::Geometry::percent(
bool percent_)
404bool Magick::Geometry::percent(
void)
const
409size_t Magick::Geometry::width(
void)
const
414void Magick::Geometry::xOff(::ssize_t xOff_)
419::ssize_t Magick::Geometry::xOff(
void)
const
424void Magick::Geometry::yOff(::ssize_t yOff_)
429::ssize_t Magick::Geometry::yOff(
void)
const
434Magick::Geometry::Geometry(
const MagickCore::RectangleInfo &rectangle_)
435 : _width(static_cast<size_t>(rectangle_.width)),
436 _height(static_cast<size_t>(rectangle_.height)),
437 _xOff(static_cast<ssize_t>(rectangle_.x)),
438 _yOff(static_cast<ssize_t>(rectangle_.y)),
450 const MagickCore::RectangleInfo &rectangle_)
452 _width=
static_cast<size_t>(rectangle_.width),
453 _height=
static_cast<size_t>(rectangle_.height),
454 _xOff=
static_cast<ssize_t
>(rectangle_.x),
455 _yOff=
static_cast<ssize_t
>(rectangle_.y),
460Magick::Geometry::operator MagickCore::RectangleInfo()
const
462 RectangleInfo rectangle;
463 rectangle.width=_width;
464 rectangle.height=_height;
470MagickPPExport
int Magick::operator == (
const Magick::Offset& left_,
471 const Magick::Offset& right_)
473 return((left_.x() == right_.x()) &&
474 (left_.y() == right_.y()));
477MagickPPExport
int Magick::operator != (
const Magick::Offset& left_,
478 const Magick::Offset& right_)
480 return(!(left_ == right_));
483Magick::Offset::Offset(
void)
489Magick::Offset::Offset(
const char *offset_)
496Magick::Offset::Offset(
const Offset &offset_)
502Magick::Offset::Offset(
const std::string &offset_)
509Magick::Offset::Offset(ssize_t x_,ssize_t y_)
515Magick::Offset::~Offset(
void)
519const Magick::Offset& Magick::Offset::operator=(
const char *offset_)
521 MagickCore::GeometryInfo
524 MagickCore::MagickStatusType
527 flags=ParseGeometry(offset_,&geometry_info);
528 _x=(ssize_t) geometry_info.rho;
529 _y=(ssize_t) geometry_info.sigma;
530 if ((flags & MagickCore::SigmaValue) == 0)
535Magick::Offset& Magick::Offset::operator=(
const Offset &offset_)
538 if (
this != &offset_)
546const Magick::Offset& Magick::Offset::operator=(
const std::string &offset_)
548 *
this=offset_.c_str();
552ssize_t Magick::Offset::x(
void)
const
557ssize_t Magick::Offset::y(
void)
const
562Magick::Offset::operator MagickCore::OffsetInfo()
const
570MagickPPExport
int Magick::operator == (
const Magick::Point& left_,
571 const Magick::Point& right_)
573 return((left_.x() == right_.x()) &&
574 (left_.y() == right_.y()));
577MagickPPExport
int Magick::operator != (
const Magick::Point& left_,
578 const Magick::Point& right_)
580 return(!(left_ == right_));
583Magick::Point::Point(
void)
589Magick::Point::Point(
const char *point_)
596Magick::Point::Point(
const Point &point_)
602Magick::Point::Point(
const std::string &point_)
609Magick::Point::Point(
double x_,
double y_)
615Magick::Point::Point(
double xy_)
621Magick::Point::~Point(
void)
625const Magick::Point& Magick::Point::operator=(
const char *point_)
627 MagickCore::GeometryInfo
630 MagickCore::MagickStatusType
633 flags=ParseGeometry(point_,&geometry_info);
634 _x=geometry_info.rho;
635 _y=geometry_info.sigma;
636 if ((flags & MagickCore::SigmaValue) == 0)
641const Magick::Point& Magick::Point::operator=(
const double xy_)
648Magick::Point& Magick::Point::operator=(
const Point &point_)
659const Magick::Point& Magick::Point::operator=(
const std::string &point_)
661 *
this=point_.c_str();
665Magick::Point::operator std::string()
const
668 buffer[MagickPathExtent];
678 FormatLocaleString(buffer,MagickPathExtent,
"%.17g",_x);
686 FormatLocaleString(buffer,MagickPathExtent,
"%.17g",(
double) _y);
692bool Magick::Point::isValid(
void)
const
697double Magick::Point::x(
void)
const
702double Magick::Point::y(
void)
const