13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// This may look like C code, but it is really -*- C++ -*-
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
414e5c8c5489c203999422ac4f4f1d48598757d17dirk// Copyright Dirk Lemstra 2014-2015
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Implementation of Drawable (Graphic objects)
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define MAGICKCORE_IMPLEMENTATION  1
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define MAGICK_DRAWABLE_IMPLEMENTATION
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13d4774283661e770ee52d54a7199b7c4d38208c35cristy#include "Magick++/Include.h"
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <math.h>
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include <string>
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Drawable.h"
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#include "Magick++/Image.h"
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristyusing namespace std;
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2214e5c8c5489c203999422ac4f4f1d48598757d17dirkMagickPPExport int Magick::operator == (const Magick::Coordinate& left_,
2314e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Coordinate& right_)
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2514e5c8c5489c203999422ac4f4f1d48598757d17dirk  return((left_.x() == right_.x()) && (left_.y() == right_.y()));
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2714e5c8c5489c203999422ac4f4f1d48598757d17dirk
2814e5c8c5489c203999422ac4f4f1d48598757d17dirkMagickPPExport int Magick::operator != (const Magick::Coordinate& left_,
2914e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Coordinate& right_)
303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3114e5c8c5489c203999422ac4f4f1d48598757d17dirk  return(!(left_ == right_));
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3314e5c8c5489c203999422ac4f4f1d48598757d17dirk
3414e5c8c5489c203999422ac4f4f1d48598757d17dirkMagickPPExport int Magick::operator > (const Magick::Coordinate& left_,
3514e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Coordinate& right_)
363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3714e5c8c5489c203999422ac4f4f1d48598757d17dirk  return (!(left_ < right_) && (left_ != right_));
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3914e5c8c5489c203999422ac4f4f1d48598757d17dirk
4014e5c8c5489c203999422ac4f4f1d48598757d17dirkMagickPPExport int Magick::operator < (const Magick::Coordinate& left_,
4114e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Coordinate& right_)
423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // Based on distance from origin
4414e5c8c5489c203999422ac4f4f1d48598757d17dirk  return((sqrt(left_.x()*left_.x() + left_.y()*left_.y())) <
4514e5c8c5489c203999422ac4f4f1d48598757d17dirk    (sqrt(right_.x()*right_.x() + right_.y()*right_.y())));
4614e5c8c5489c203999422ac4f4f1d48598757d17dirk}
4714e5c8c5489c203999422ac4f4f1d48598757d17dirk
4814e5c8c5489c203999422ac4f4f1d48598757d17dirkMagickPPExport int Magick::operator >= (const Magick::Coordinate& left_,
4914e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Coordinate& right_)
5014e5c8c5489c203999422ac4f4f1d48598757d17dirk{
5114e5c8c5489c203999422ac4f4f1d48598757d17dirk  return((left_ > right_) || (left_ == right_));
523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5314e5c8c5489c203999422ac4f4f1d48598757d17dirk
5414e5c8c5489c203999422ac4f4f1d48598757d17dirkMagickPPExport int Magick::operator <= (const Magick::Coordinate& left_,
5514e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Coordinate& right_)
563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5714e5c8c5489c203999422ac4f4f1d48598757d17dirk  return((left_ < right_) || (left_ == right_));
583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5914e5c8c5489c203999422ac4f4f1d48598757d17dirk
6014e5c8c5489c203999422ac4f4f1d48598757d17dirk/* DrawableBase */
6114e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::DrawableBase::DrawableBase()
623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6514e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::DrawableBase::~DrawableBase(void)
663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6914e5c8c5489c203999422ac4f4f1d48598757d17dirkvoid Magick::DrawableBase::operator()(MagickCore::DrawingWand * context_) const
703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
71d2a7a2d4a46c82a8679688ae763ef9d7bb53ccd7dirk  (void) context_;
723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7414e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::DrawableBase* Magick::DrawableBase::copy() const
7514e5c8c5489c203999422ac4f4f1d48598757d17dirk{
7614e5c8c5489c203999422ac4f4f1d48598757d17dirk  return new DrawableBase(*this);
7714e5c8c5489c203999422ac4f4f1d48598757d17dirk}
7814e5c8c5489c203999422ac4f4f1d48598757d17dirk
7914e5c8c5489c203999422ac4f4f1d48598757d17dirk/* Drawable */
8014e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::Drawable::Drawable(void)
8114e5c8c5489c203999422ac4f4f1d48598757d17dirk  : dp((Magick::DrawableBase *) NULL)
8214e5c8c5489c203999422ac4f4f1d48598757d17dirk{
8314e5c8c5489c203999422ac4f4f1d48598757d17dirk}
8414e5c8c5489c203999422ac4f4f1d48598757d17dirk
8514e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::Drawable::Drawable(const Magick::DrawableBase& original_)
863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : dp(original_.copy())
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9014e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::Drawable::~Drawable(void)
913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete dp;
9314e5c8c5489c203999422ac4f4f1d48598757d17dirk  dp=(Magick::DrawableBase *) NULL;
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9614e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::Drawable::Drawable(const Magick::Drawable& original_)
9714e5c8c5489c203999422ac4f4f1d48598757d17dirk  : dp((original_.dp != (Magick::DrawableBase *) NULL ? original_.dp->copy() :
9814e5c8c5489c203999422ac4f4f1d48598757d17dirk    (Magick::DrawableBase *) NULL))
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10214e5c8c5489c203999422ac4f4f1d48598757d17dirkMagick::Drawable& Magick::Drawable::operator= (
10314e5c8c5489c203999422ac4f4f1d48598757d17dirk  const Magick::Drawable& original_)
1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10514e5c8c5489c203999422ac4f4f1d48598757d17dirk  DrawableBase
10614e5c8c5489c203999422ac4f4f1d48598757d17dirk    *temp_dp;
10714e5c8c5489c203999422ac4f4f1d48598757d17dirk
1083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (this != &original_)
1093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
11014e5c8c5489c203999422ac4f4f1d48598757d17dirk      temp_dp=(original_.dp != (Magick::DrawableBase *) NULL ?
11114e5c8c5489c203999422ac4f4f1d48598757d17dirk        original_.dp->copy() : (Magick::DrawableBase *) NULL);
1123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      delete dp;
11314e5c8c5489c203999422ac4f4f1d48598757d17dirk      dp=temp_dp;
1143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
11514e5c8c5489c203999422ac4f4f1d48598757d17dirk  return(*this);
1163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11814e5c8c5489c203999422ac4f4f1d48598757d17dirkvoid Magick::Drawable::operator()(MagickCore::DrawingWand * context_) const
1193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12014e5c8c5489c203999422ac4f4f1d48598757d17dirk  if (dp != (Magick::DrawableBase *) NULL)
12114e5c8c5489c203999422ac4f4f1d48598757d17dirk    dp->operator()(context_);
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*virtual*/
1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase::~VPathBase ( void )
1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Constructor
1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPath::VPath ( void )
1313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : dp(0)
1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Construct from VPathBase
1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPath::VPath ( const Magick::VPathBase& original_ )
1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : dp(original_.copy())
1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Destructor
1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/* virtual */ Magick::VPath::~VPath ( void )
1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete dp;
1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  dp = 0;
1463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copy constructor
1493ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPath::VPath ( const Magick::VPath& original_ )
1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : dp(original_.dp? original_.dp->copy(): 0)
1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Assignment operator
1553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPath& Magick::VPath::operator= (const Magick::VPath& original_ )
1563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (this != &original_)
1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      VPathBase* temp_dp = (original_.dp ? original_.dp->copy() : 0);
1603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      delete dp;
1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      dp = temp_dp;
1623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
1633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return *this;
1643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Operator to invoke contained object
1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::VPath::operator()( MagickCore::DrawingWand * context_ ) const
1683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if(dp)
1703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    dp->operator()( context_ );
1713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
173af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator == ( const Magick::VPath& /*left_*/,
1743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::VPath& /*right_*/ )
1753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 1 );
1773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
178af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator != ( const Magick::VPath& /*left_*/,
1793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::VPath& /*right_*/ )
1803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
1823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
183af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator > ( const Magick::VPath& /*left_*/,
1843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                       const Magick::VPath& /*right_*/ )
1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
1873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
188af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <  ( const Magick::VPath& /*left_*/,
1893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::VPath& /*right_*/ )
1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return  ( 0 );
1923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
193af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator >= ( const Magick::VPath& left_,
1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::VPath& right_ )
1953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ > right_ ) || ( left_ == right_ ) );
1973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
198af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <= ( const Magick::VPath& left_,
1993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::VPath& right_ )
2003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ < right_ ) || ( left_ == right_ ) );
2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Drawable Objects
2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
2073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Affine (scaling, rotation, and translation)
2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableAffine::DrawableAffine( double sx_, double sy_,
2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        double rx_, double ry_,
2113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        double tx_, double ty_ )
2123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _affine.sx = sx_;
2143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _affine.rx = rx_;
2153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _affine.ry = ry_;
2163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _affine.sy = sy_;
2173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _affine.tx = tx_;
2183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _affine.ty = ty_;
2193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2203ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableAffine::DrawableAffine( void )
2213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GetAffineMatrix(&_affine);
2233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2243ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableAffine::~DrawableAffine( void )
2253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2273ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableAffine::operator()( MagickCore::DrawingWand * context_ ) const
2283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawAffine( context_, &_affine );
2303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableAffine::copy() const
2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableAffine(*this);
2343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23634e1a21c95b52c7f487b385028e361f66d956a19dirkMagick::DrawableAlpha::~DrawableAlpha(void)
23734e1a21c95b52c7f487b385028e361f66d956a19dirk{
23834e1a21c95b52c7f487b385028e361f66d956a19dirk}
23934e1a21c95b52c7f487b385028e361f66d956a19dirk
24034e1a21c95b52c7f487b385028e361f66d956a19dirkvoid Magick::DrawableAlpha::operator()(MagickCore::DrawingWand * context_) const
24134e1a21c95b52c7f487b385028e361f66d956a19dirk{
24234e1a21c95b52c7f487b385028e361f66d956a19dirk  DrawAlpha(context_,_x,_y,_paintMethod);
24334e1a21c95b52c7f487b385028e361f66d956a19dirk}
24434e1a21c95b52c7f487b385028e361f66d956a19dirk
24534e1a21c95b52c7f487b385028e361f66d956a19dirkMagick::DrawableBase* Magick::DrawableAlpha::copy() const
24634e1a21c95b52c7f487b385028e361f66d956a19dirk{
24734e1a21c95b52c7f487b385028e361f66d956a19dirk  return new DrawableAlpha(*this);
24834e1a21c95b52c7f487b385028e361f66d956a19dirk}
24934e1a21c95b52c7f487b385028e361f66d956a19dirk
2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Arc
2513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableArc::~DrawableArc( void )
2523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2543ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableArc::operator()( MagickCore::DrawingWand * context_ ) const
2553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawArc( context_, _startX, _startY, _endX, _endY, _startDegrees, _endDegrees );
2573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2583ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableArc::copy() const
2593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableArc(*this);
2613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
2643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Bezier curve
2653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
2663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Construct from coordinates (Coordinate list must contain at least three members)
2673ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBezier::DrawableBezier ( const CoordinateList &coordinates_ )
2683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
2693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copy constructor
2723ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBezier::DrawableBezier( const Magick::DrawableBezier& original_ )
2733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
2743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
2753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Destructor
2783ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBezier::~DrawableBezier( void )
2793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2813ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableBezier::operator()( MagickCore::DrawingWand * context_ ) const
2823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
283bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t num_coords = (size_t) _coordinates.size();
2843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo *coordinates = new PointInfo[num_coords];
2853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo *q = coordinates;
2873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CoordinateList::const_iterator p = _coordinates.begin();
2883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  while( p != _coordinates.end() )
2903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
2913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q->x = p->x();
2923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q->y = p->y();
2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q++;
2943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      p++;
2953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
2963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawBezier( context_, num_coords, coordinates );
2983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete [] coordinates;
2993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3003ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableBezier::copy() const
3013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
3023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableBezier(*this);
3033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
3043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
305e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
306e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableBorderColor */
307e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBorderColor::DrawableBorderColor(const Magick::Color &color_)
308e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : _color(color_)
309e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
310e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
311e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
312e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBorderColor::DrawableBorderColor
313e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  (const Magick::DrawableBorderColor &original_)
314e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : DrawableBase(original_),
315e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk    _color(original_._color)
316e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
317e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
318e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
319e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBorderColor::~DrawableBorderColor(void)
320e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
321e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
322e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
323e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableBorderColor::operator()(
324e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  MagickCore::DrawingWand *context_) const
325e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
326e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  PixelInfo
327e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk    color;
328e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
329e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  PixelWand
330e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk    *pixel_wand;
331e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
332e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  color=static_cast<PixelInfo>(_color);
333e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  pixel_wand=NewPixelWand();
334e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  PixelSetPixelColor(pixel_wand,&color);
335e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetBorderColor(context_,pixel_wand);
336e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  pixel_wand=DestroyPixelWand(pixel_wand);
337e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
338e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
339e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableBorderColor::color(const Color &color_)
340e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
341e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _color=color_;
342e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
343e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
344e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::Color Magick::DrawableBorderColor::color(void) const
345e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
346e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_color);
347e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
348e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
349e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableBorderColor::copy() const
350e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
351e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableBorderColor(*this));
352e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
353e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
354e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
355e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableClipRule */
356e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableClipRule::DrawableClipRule(const FillRule fillRule_)
357e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
358e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _fillRule=fillRule_;
359e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
360e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
361e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableClipRule::~DrawableClipRule(void)
362e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
363e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
364e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
365e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableClipRule::operator()(
366e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  MagickCore::DrawingWand * context_) const
367e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
368e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetClipRule(context_,_fillRule);
369e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
370e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
371e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableClipRule::fillRule(const FillRule fillRule_)
372e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
373e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _fillRule=fillRule_;
374e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
375e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
376e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::FillRule Magick::DrawableClipRule::fillRule(void) const
377e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
378e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_fillRule);
379e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
380e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
381e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableClipRule::copy() const
382e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
383e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableClipRule(*this));
384e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
385e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
386e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
387e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableClipUnits */
388e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableClipUnits::DrawableClipUnits(const ClipPathUnits units_)
389e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
390e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _units = units_;
391e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
392e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
393e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableClipUnits::~DrawableClipUnits(void)
394e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
395e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
396e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
397e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableClipUnits::operator()(
398e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  MagickCore::DrawingWand * context_) const
399e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
400e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetClipUnits(context_, _units);
401e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
402e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
403e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableClipUnits::units(const ClipPathUnits units_)
404e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
405e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _units = units_;
406e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
407e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
408e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::ClipPathUnits Magick::DrawableClipUnits::units(void) const
409e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
410e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_units);
411e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
412e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
413e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableClipUnits::copy() const
414e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
415e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableClipUnits(*this));
416e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
417e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
418e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
4193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
4203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//Clip Path
4213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
4223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Pop (terminate) Clip path definition
4243ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePopClipPath::~DrawablePopClipPath ( void )
4253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4273ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePopClipPath::operator() ( MagickCore::DrawingWand * context_ ) const
4283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPopClipPath( context_ );
4303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPopDefs(context_);
4313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4323ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePopClipPath::copy() const
4333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePopClipPath(*this);
4353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Push clip path definition
4383ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushClipPath::DrawablePushClipPath( const std::string &id_)
4393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _id(id_.c_str())    //multithread safe const char*
4403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4423ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushClipPath::DrawablePushClipPath
4433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawablePushClipPath& original_ ) //multithread safe const char*
4443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
4453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _id(original_._id.c_str())
4463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4483ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushClipPath::~DrawablePushClipPath( void )
4493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePushClipPath::operator()
4523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
4533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPushDefs(context_);
4553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPushClipPath( context_, _id.c_str());
4563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4573ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePushClipPath::copy() const
4583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePushClipPath(*this);
4603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
4623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// ClipPath
4633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
4643ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableClipPath::DrawableClipPath( const std::string &id_ )
4653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy:_id(id_.c_str())
4663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4693ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableClipPath::DrawableClipPath ( const Magick::DrawableClipPath& original_ )
4703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
4713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _id(original_._id.c_str())
4723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4743ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableClipPath::~DrawableClipPath( void )
4753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4773ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableClipPath::operator()( MagickCore::DrawingWand * context_ ) const
4783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy	(void) DrawSetClipPath( context_, _id.c_str());
4803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4813ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableClipPath::copy() const
4823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableClipPath(*this);
4843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Circle
4873ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCircle::~DrawableCircle ( void )
4883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4903ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableCircle::operator()( MagickCore::DrawingWand * context_ ) const
4913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawCircle( context_, _originX, _originY, _perimX, _perimY );
4933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4943ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableCircle::copy() const
4953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
4963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableCircle(*this);
4973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
4983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Colorize at point using PaintMethod
5003ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableColor::~DrawableColor( void )
5013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5033ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableColor::operator()( MagickCore::DrawingWand * context_ ) const
5043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawColor( context_, _x, _y, _paintMethod );
5063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5073ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableColor::copy() const
5083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableColor(*this);
5103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Draw image at point
5133ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( double x_, double y_,
5153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double width_, double height_,
5163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const std::string &filename_,
5173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Magick::CompositeOperator composition_ )
5183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _composition(composition_),
5193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
5203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
5213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _width(width_),
5223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _height(height_),
5233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _image(new Image(filename_))
5243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5263ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( double x_, double y_,
5283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double width_, double height_,
5293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::Image &image_,
5303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Magick::CompositeOperator composition_ )
5313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _composition(composition_),
5323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
5333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
5343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _width(width_),
5353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _height(height_),
5363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _image(new Image(image_))
5373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5393ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( double x_, double y_,
5413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double width_, double height_,
5423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const std::string &filename_ )
5433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  :_composition(CopyCompositeOp),
5443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _x(x_),
5453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _y(y_),
5463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _width(width_),
5473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _height(height_),
5483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _image(new Image(filename_))
5493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( double x_, double y_,
5533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  double width_, double height_,
5543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::Image &image_ )
5553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  :_composition(CopyCompositeOp),
5563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _x(x_),
5573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _y(y_),
5583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _width(width_),
5593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _height(height_),
5603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   _image(new Image(image_))
5613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5633ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( double x_, double y_,
5653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const std::string &filename_ )
5663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _composition(CopyCompositeOp),
5673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
5683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
5693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _width(0),
5703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _height(0),
5713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _image(new Image(filename_))
5723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _width=_image->columns();
5743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _height=_image->rows();
5753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5763ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( double x_, double y_,
5783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::Image &image_ )
5793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _composition(CopyCompositeOp),
5803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
5813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
5823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _width(0),
5833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _height(0),
5843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _image(new Image(image_))
5853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
5863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _width=_image->columns();
5873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _height=_image->rows();
5883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
5893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copy constructor
5903ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::DrawableCompositeImage
5913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawableCompositeImage& original_ )
5923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  :  Magick::DrawableBase(original_),
5933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _composition(original_._composition),
5943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _x(original_._x),
5953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _y(original_._y),
5963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _width(original_._width),
5973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _height(original_._height),
5983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _image(new Image(*original_._image))
5993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6013ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage::~DrawableCompositeImage( void )
6023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete _image;
6043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Assignment operator
6063ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableCompositeImage& Magick::DrawableCompositeImage::operator=
6073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy(const Magick::DrawableCompositeImage& original_ )
6083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // If not being set to ourself
6103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if ( this != &original_ )
6113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
6123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _composition = original_._composition;
6133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _x = original_._x;
6143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _y = original_._y;
6153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _width = original_._width;
6163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _height = original_._height;
6173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      Image* temp_image = new Image(*original_._image);
6183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      delete _image;
6193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _image = temp_image;
6203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
6213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return *this;
6223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableCompositeImage::filename( const std::string &filename_ )
6243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Image* temp_image = new Image(filename_);
6263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete _image;
6273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _image = temp_image;
6283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6293ed852eea50f9d4cd633efb8c2b054b8e33c253cristystd::string Magick::DrawableCompositeImage::filename( void ) const
6303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return _image->fileName();
6323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6343ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableCompositeImage::image( const Magick::Image &image_ )
6353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Image* temp_image = new Image(image_);
6373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete _image;
6383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _image = temp_image;
6393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6403ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::Image Magick::DrawableCompositeImage::image( void ) const
6413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return *_image;
6433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Specify image format used to output Base64 inlined image data.
6463ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableCompositeImage::magick( std::string magick_ )
6473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  _image->magick( magick_ );
6493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6503ed852eea50f9d4cd633efb8c2b054b8e33c253cristystd::string Magick::DrawableCompositeImage::magick( void )
6513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return _image->magick();
6533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableCompositeImage::operator()
6563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
6573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickWand
6593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *magick_wand;
6603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  magick_wand=NewMagickWandFromImage(_image->constImage());
6623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) DrawComposite( context_, _composition, _x, _y, _width, _height,
6633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     magick_wand );
6643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  magick_wand=DestroyMagickWand(magick_wand);
6653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6673ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableCompositeImage::copy() const
6683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
6693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableCompositeImage(*this);
6703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
6713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
672477784733254fb4ef89f2ce698f82b4de7d6e67fdirkMagick::DrawableDensity::DrawableDensity(const Point &density_)
673477784733254fb4ef89f2ce698f82b4de7d6e67fdirk  : _density(density_)
674477784733254fb4ef89f2ce698f82b4de7d6e67fdirk{
675477784733254fb4ef89f2ce698f82b4de7d6e67fdirk}
676477784733254fb4ef89f2ce698f82b4de7d6e67fdirk
677477784733254fb4ef89f2ce698f82b4de7d6e67fdirkMagick::DrawableDensity::DrawableDensity(const std::string &density_)
678477784733254fb4ef89f2ce698f82b4de7d6e67fdirk  : _density(density_)
679477784733254fb4ef89f2ce698f82b4de7d6e67fdirk{
680477784733254fb4ef89f2ce698f82b4de7d6e67fdirk}
681477784733254fb4ef89f2ce698f82b4de7d6e67fdirk
682477784733254fb4ef89f2ce698f82b4de7d6e67fdirkMagick::DrawableDensity::~DrawableDensity(void)
683477784733254fb4ef89f2ce698f82b4de7d6e67fdirk{
684477784733254fb4ef89f2ce698f82b4de7d6e67fdirk}
685477784733254fb4ef89f2ce698f82b4de7d6e67fdirk
686477784733254fb4ef89f2ce698f82b4de7d6e67fdirkvoid Magick::DrawableDensity::operator()(
687477784733254fb4ef89f2ce698f82b4de7d6e67fdirk  MagickCore::DrawingWand *context_) const
688477784733254fb4ef89f2ce698f82b4de7d6e67fdirk{
689477784733254fb4ef89f2ce698f82b4de7d6e67fdirk  DrawSetDensity(context_,_density.c_str());
690477784733254fb4ef89f2ce698f82b4de7d6e67fdirk}
691477784733254fb4ef89f2ce698f82b4de7d6e67fdirk
692477784733254fb4ef89f2ce698f82b4de7d6e67fdirkMagick::DrawableBase* Magick::DrawableDensity::copy() const
693477784733254fb4ef89f2ce698f82b4de7d6e67fdirk{
694477784733254fb4ef89f2ce698f82b4de7d6e67fdirk  return(new DrawableDensity(*this));
695477784733254fb4ef89f2ce698f82b4de7d6e67fdirk}
696477784733254fb4ef89f2ce698f82b4de7d6e67fdirk
6973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Ellipse
6983ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableEllipse::~DrawableEllipse( void )
6993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7013ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableEllipse::operator()
7023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
7033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawEllipse( context_, _originX, _originY, _radiusX, _radiusY,
7053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy               _arcStart, _arcEnd );
7063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7073ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableEllipse::copy() const
7083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableEllipse(*this);
7103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Specify drawing fill color
7133ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFillColor::DrawableFillColor( const Magick::Color &color_ )
7143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _color(color_)
7153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7173ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFillColor::DrawableFillColor
7183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawableFillColor& original_ )
7193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
7203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _color(original_._color)
7213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFillColor::~DrawableFillColor( void )
7243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7263ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableFillColor::operator()
7273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
7283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
729101ab708b0574518ac5715da4d3915400e9df79acristy  PixelInfo color = static_cast<PixelInfo>(_color);
7303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PixelWand *pixel_wand=NewPixelWand();
731f82c4a017e3711a91012dbccd159f6835435dd7fcristy  PixelSetPixelColor(pixel_wand,&color);
7323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetFillColor(context_,pixel_wand);
7333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  pixel_wand=DestroyPixelWand(pixel_wand);
7343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7353ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableFillColor::copy() const
7363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableFillColor(*this);
7383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
740e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableFillPatternUrl */
741e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableFillPatternUrl::DrawableFillPatternUrl(const std::string &url_)
742e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : _url(url_)
743e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
744e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
745e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
746e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableFillPatternUrl::DrawableFillPatternUrl(
747e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  const Magick::DrawableFillPatternUrl& original_)
748e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : DrawableBase(original_),
749e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _url(original_._url)
750e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
751e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
752e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
753e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableFillPatternUrl::~DrawableFillPatternUrl(void)
754e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
755e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
756e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
757e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableFillPatternUrl::operator()(
758e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  MagickCore::DrawingWand * context_) const
759e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
760e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetFillPatternURL(context_, _url.c_str());
761e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
762e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
763e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableFillPatternUrl::url(const std::string &url_)
764e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
765e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _url = url_;
766e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
767e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
768e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkstd::string Magick::DrawableFillPatternUrl::url(void) const
769e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
770e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_url);
771e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
772e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
773e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableFillPatternUrl::copy() const
774e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
775e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableFillPatternUrl(*this));
776e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
777e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
7783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Specify drawing fill fule
7793ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFillRule::~DrawableFillRule ( void )
7803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7823ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableFillRule::operator()
7833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
7843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetFillRule( context_, _fillRule );
7863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7873ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableFillRule::copy() const
7883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableFillRule(*this);
7903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
7913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
792c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirkMagick::DrawableFillOpacity::~DrawableFillOpacity(void)
7933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
7943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
795c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk
796c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirkvoid Magick::DrawableFillOpacity::operator()
797c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk  (MagickCore::DrawingWand *context_) const
7983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
799c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk  DrawSetFillOpacity(context_,_opacity);
8003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
801c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk
802c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirkMagick::DrawableBase* Magick::DrawableFillOpacity::copy() const
8033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
804c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk  return new DrawableFillOpacity(*this);
8053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Specify text font
8083ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFont::DrawableFont ( const std::string &font_ )
8093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _font(font_),
8103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _family(),
8113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _style(Magick::AnyStyle),
8123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _weight(400),
8133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _stretch(Magick::NormalStretch)
8143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8163ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFont::DrawableFont ( const std::string &family_,
8173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                     Magick::StyleType style_,
8189e7ec53e90ca58325dbbb1108f96d0b79af35b79cristy                                     const unsigned int weight_,
8193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                     Magick::StretchType stretch_ )
8203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _font(),
8213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _family(family_),
8223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _style(style_),
8233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _weight(weight_),
8243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _stretch(stretch_)
8253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8273ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFont::DrawableFont ( const Magick::DrawableFont& original_ )
8283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
8293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _font(original_._font),
8303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _family(original_._family),
8313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _style(original_._style),
8323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _weight(original_._weight),
8333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _stretch(original_._stretch)
8343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8363ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableFont::~DrawableFont ( void )
8373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8393ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableFont::operator()( MagickCore::DrawingWand * context_ ) const
8403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  // font
8423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if(_font.length())
8433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
8443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      (void) DrawSetFont( context_, _font.c_str() );
8453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
8463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if(_family.length())
8483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
8493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // font-family
8503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      (void) DrawSetFontFamily( context_, _family.c_str() );
8513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // font-style
8533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawSetFontStyle( context_, _style );
8543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // font-weight
8563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawSetFontWeight( context_, _weight );
8573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // font-stretch
8593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawSetFontStretch( context_, _stretch );
8603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
8613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8623ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableFont::copy() const
8633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableFont(*this);
8653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Specify text positioning gravity
8683ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableGravity::~DrawableGravity ( void )
8693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8713ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableGravity::operator()
8723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
8733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetGravity( context_, _gravity );
8753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8763ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableGravity::copy() const
8773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableGravity(*this);
8793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Line
8823ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableLine::~DrawableLine ( void )
8833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8853ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableLine::operator()( MagickCore::DrawingWand * context_ ) const
8863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawLine( context_, _startX, _startY, _endX, _endY );
8883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8893ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableLine::copy() const
8903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableLine(*this);
8923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Drawable Path
8953ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePath::DrawablePath ( const VPathList &path_ )
8963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _path(path_)
8973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
8983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
8993ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePath::DrawablePath ( const Magick::DrawablePath& original_ )
9003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
9013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _path(original_._path)
9023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9043ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePath::~DrawablePath ( void )
9053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9073ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePath::operator()( MagickCore::DrawingWand * context_ ) const
9083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathStart( context_ );
9103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( VPathList::const_iterator p = _path.begin();
9123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _path.end(); p++ )
9133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    p->operator()( context_ ); // FIXME, how to quit loop on error?
9143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathFinish( context_ );
9163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9173ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePath::copy() const
9183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePath(*this);
9203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Point
9233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePoint::~DrawablePoint ( void )
9243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9263ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePoint::operator()( MagickCore::DrawingWand * context_ ) const
9273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPoint( context_, _x, _y );
9293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9303ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePoint::copy() const
9313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePoint(*this);
9333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Text pointsize
9363ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePointSize::~DrawablePointSize ( void )
9373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9393ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePointSize::operator()
9403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
9413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetFontSize( context_, _pointSize );
9433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9443ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePointSize::copy() const
9453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePointSize(*this);
9473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Polygon (Coordinate list must contain at least three members)
9503ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePolygon::DrawablePolygon ( const CoordinateList &coordinates_ )
9513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
9523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9543ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePolygon::DrawablePolygon
9553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawablePolygon& original_ )
9563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
9573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
9583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9603ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePolygon::~DrawablePolygon ( void )
9613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9633ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePolygon::operator()
9643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
9653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
966bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t num_coords = (size_t) _coordinates.size();
9673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo *coordinates = new PointInfo[num_coords];
9683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo *q = coordinates;
9703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CoordinateList::const_iterator p = _coordinates.begin();
9713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  while( p != _coordinates.end() )
9733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
9743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q->x = p->x();
9753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q->y = p->y();
9763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q++;
9773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      p++;
9783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
9793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPolygon( context_, num_coords, coordinates );
9813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete [] coordinates;
9823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9833ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePolygon::copy() const
9843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePolygon(*this);
9863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Polyline (Coordinate list must contain at least three members)
9893ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePolyline::DrawablePolyline
9903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const CoordinateList &coordinates_ )
9913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
9923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
9943ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePolyline::DrawablePolyline
9953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawablePolyline& original_ )
9963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
9973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
9983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
9993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10003ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePolyline::~DrawablePolyline ( void )
10013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10033ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePolyline::operator()
10043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
10053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1006bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  size_t num_coords = (size_t) _coordinates.size();
10073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo *coordinates = new PointInfo[num_coords];
10083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointInfo *q = coordinates;
10103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CoordinateList::const_iterator p = _coordinates.begin();
10113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  while( p != _coordinates.end() )
10133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
10143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q->x = p->x();
10153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q->y = p->y();
10163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      q++;
10173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      p++;
10183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
10193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPolyline( context_, num_coords, coordinates );
10213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  delete [] coordinates;
10223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePolyline::copy() const
10243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePolyline(*this);
10263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Pop Graphic Context
10293ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePopGraphicContext::~DrawablePopGraphicContext ( void )
10303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10323ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePopGraphicContext::operator()
10333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
10343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PopDrawingWand( context_ );
10363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10373ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePopGraphicContext::copy() const
10383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePopGraphicContext(*this);
10403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Push Graphic Context
10433ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushGraphicContext::~DrawablePushGraphicContext ( void )
10443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10463ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePushGraphicContext::operator()
10473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
10483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PushDrawingWand( context_ );
10503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePushGraphicContext::copy() const
10523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePushGraphicContext(*this);
10543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Pop (terminate) Pattern definition
10573ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePopPattern::~DrawablePopPattern ( void )
10583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10603ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePopPattern::operator()
10613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
10623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) DrawPopPattern( context_ );
10643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10653ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePopPattern::copy() const
10663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePopPattern(*this);
10683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Push Pattern definition
10713ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushPattern::DrawablePushPattern
1072bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy( const std::string &id_, ssize_t x_, ssize_t y_,
10734e0eef0224b2612b06c74d42d7f7c20f66f7f8b3cristy  size_t width_, size_t height_ )
10743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _id(id_),
10753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
10763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
10773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _width(width_),
10783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _height(height_)
10793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10813ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushPattern::DrawablePushPattern
10823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawablePushPattern& original_ )
10833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
10843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _id(original_._id),
10853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(original_._x),
10863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(original_._y),
10873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _width(original_._width),
10883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _height(original_._height)
10893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10913ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawablePushPattern::~DrawablePushPattern ( void )
10923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10943ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawablePushPattern::operator()
10953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
10963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
10973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) DrawPushPattern( context_, _id.c_str(), _x, _y, _width, _height );
10983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
10993ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawablePushPattern::copy() const
11003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawablePushPattern(*this);
11023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Rectangle
11053ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableRectangle::~DrawableRectangle ( void )
11063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11083ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableRectangle::operator()
11093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
11103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawRectangle( context_, _upperLeftX, _upperLeftY,
11123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                 _lowerRightX, _lowerRightY );
11133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11143ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableRectangle::copy() const
11153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableRectangle(*this);
11173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Apply Rotation
11203ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableRotation::~DrawableRotation ( void )
11213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableRotation::operator()
11243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
11253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawRotate( context_, _angle );
11273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11283ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableRotation::copy() const
11293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableRotation(*this);
11313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Round Rectangle
11343ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableRoundRectangle::~DrawableRoundRectangle ( void )
11353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11373ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableRoundRectangle::operator()
11383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
11393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawRoundRectangle( context_, _centerX,_centerY, _width,_hight,
11413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                      _cornerWidth, _cornerHeight);
11423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11433ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableRoundRectangle::copy() const
11443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableRoundRectangle(*this);
11463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Apply Scaling
11493ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableScaling::~DrawableScaling ( void )
11503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11523ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableScaling::operator()
11533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
11543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawScale( context_, _x, _y );
11563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11573ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableScaling::copy() const
11583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableScaling(*this);
11603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Apply Skew in the X direction
11633ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableSkewX::~DrawableSkewX ( void )
11643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11663ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableSkewX::operator()
11673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
11683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSkewX( context_, _angle );
11703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11713ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableSkewX::copy() const
11723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableSkewX(*this);
11743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
11763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Apply Skew in the Y direction
11773ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableSkewY::~DrawableSkewY ( void )
11783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11803ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableSkewY::operator()( MagickCore::DrawingWand * context_ ) const
11813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSkewY( context_, _angle );
11833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11843ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableSkewY::copy() const
11853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableSkewY(*this);
11873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1189e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableStrokeDashArray */
1190e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokeDashArray::DrawableStrokeDashArray(const double* dasharray_)
11913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _size(0),
11923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _dasharray(0)
11933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
11946ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk  dasharray(dasharray_);
11953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
11966ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
1197e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokeDashArray::DrawableStrokeDashArray(
1198e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  const Magick::DrawableStrokeDashArray& original_)
11993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
12006145b19e9636dd905f51bd5fcf3e035dd4585c8acristy    _size(original_._size),
12016145b19e9636dd905f51bd5fcf3e035dd4585c8acristy    _dasharray(new double[_size+1])
12023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12036145b19e9636dd905f51bd5fcf3e035dd4585c8acristy  // Copy elements
12046145b19e9636dd905f51bd5fcf3e035dd4585c8acristy  {
12056145b19e9636dd905f51bd5fcf3e035dd4585c8acristy    for (size_t i=0; i < _size; i++)
12066145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      _dasharray[i]=original_._dasharray[i];
12076145b19e9636dd905f51bd5fcf3e035dd4585c8acristy    _dasharray[_size]=0.0;
12086145b19e9636dd905f51bd5fcf3e035dd4585c8acristy  }
12093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12106ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
1211e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokeDashArray::~DrawableStrokeDashArray(void)
12123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12138e03eb0e783659db05f8e9c285ab9c7472e7fb77cristy  delete [] _dasharray;
12146ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk  _size=0;
1215e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _dasharray=(double *) NULL;
12163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12176ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
1218e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokeDashArray& Magick::DrawableStrokeDashArray::operator=(
1219e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  const Magick::DrawableStrokeDashArray &original_)
12203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1221e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  if (this != &original_)
12223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
12236145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      delete [] _dasharray;
12246145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      _size=original_._size;
12256145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      _dasharray = new double[_size+1];
12266145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      // Copy elements
12276145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      {
12286145b19e9636dd905f51bd5fcf3e035dd4585c8acristy        for (size_t i=0; i < _size; i++)
12296145b19e9636dd905f51bd5fcf3e035dd4585c8acristy          _dasharray[i]=original_._dasharray[i];
12306145b19e9636dd905f51bd5fcf3e035dd4585c8acristy        _dasharray[_size]=0.0;
12316145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      }
12323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
1233e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(*this);
12343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12356ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
1236e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableStrokeDashArray::operator()(
12376ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk  MagickCore::DrawingWand *context_) const
12383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1239e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  (void) DrawSetStrokeDashArray(context_,(const unsigned long) _size,
1240e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk    _dasharray);
12413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12426ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
1243e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase *Magick::DrawableStrokeDashArray::copy() const
12443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1245e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableStrokeDashArray(*this));
12463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12476ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
1248e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableStrokeDashArray::dasharray(const double* dasharray_)
12493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
12506ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk  size_t
12516ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk    n;
12526ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk
12536145b19e9636dd905f51bd5fcf3e035dd4585c8acristy  delete [] _dasharray;
12546ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk  _size=0;
12556ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk  _dasharray=0;
12563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1257e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  if (dasharray_ != (const double *) NULL)
12583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1259e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk      const double
1260e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk        *p;
1261e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
12623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // Count elements in dash array
12636ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk      n=0;
12643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
1265e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk        p = dasharray_;
12666145b19e9636dd905f51bd5fcf3e035dd4585c8acristy        while(*p++ != 0.0)
12673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          n++;
12683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
12696ee69913aa0e7437e189c6bf55e5e406298fbaa9dirk      _size=n;
12703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // Allocate elements
12726145b19e9636dd905f51bd5fcf3e035dd4585c8acristy      _dasharray=new double[_size+1];
12733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      // Copy elements
12743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
12756145b19e9636dd905f51bd5fcf3e035dd4585c8acristy        for (size_t i=0; i < _size; i++)
12766145b19e9636dd905f51bd5fcf3e035dd4585c8acristy          _dasharray[i]=dasharray_[i];
12776145b19e9636dd905f51bd5fcf3e035dd4585c8acristy        _dasharray[_size]=0.0;
12783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
12793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
12803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
12813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1282e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkconst double* Magick::DrawableStrokeDashArray::dasharray(void) const
12833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1284e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_dasharray);
12853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1286e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1287e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableStrokeDashOffset */
1288e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokeDashOffset::~DrawableStrokeDashOffset(void)
1289e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1290e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1291e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1292e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableStrokeDashOffset::operator()
1293e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  ( MagickCore::DrawingWand * context_) const
12943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1295e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetStrokeDashOffset(context_,_offset);
12963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1297e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1298e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableStrokeDashOffset::copy() const
12993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1300e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableStrokeDashOffset(*this));
1301e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1302e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1303e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableStrokeDashOffset::offset(const double offset_)
1304e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1305e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _offset=offset_;
1306e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1307e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1308e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkdouble Magick::DrawableStrokeDashOffset::offset(void) const
1309e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1310e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_offset);
13113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Stroke linecap
13143ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeLineCap::~DrawableStrokeLineCap ( void )
13153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13173ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableStrokeLineCap::operator()
13183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
13193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetStrokeLineCap( context_, _linecap );
13213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13223ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableStrokeLineCap::copy() const
13233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableStrokeLineCap(*this);
13253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Stroke linejoin
13283ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeLineJoin::~DrawableStrokeLineJoin ( void )
13293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13313ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableStrokeLineJoin::operator()
13323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
13333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetStrokeLineJoin( context_, _linejoin );
13353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13363ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableStrokeLineJoin::copy() const
13373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableStrokeLineJoin(*this);
13393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
13413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Stroke miterlimit
13423ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableMiterLimit::~DrawableMiterLimit ( void )
13433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13453ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableMiterLimit::operator()
13463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
13473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetStrokeMiterLimit( context_, _miterlimit );
13493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13503ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableMiterLimit::copy() const
13513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableMiterLimit(*this);
13533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1355e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1356e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableStrokePatternUrl */
1357e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokePatternUrl::DrawableStrokePatternUrl(
1358e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  const std::string &url_)
1359e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : _url(url_)
1360e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1361e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1362e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1363e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokePatternUrl::DrawableStrokePatternUrl(
1364e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  const Magick::DrawableStrokePatternUrl& original_)
1365e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : DrawableBase(original_),
1366e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _url(original_._url)
1367e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1368e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1369e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1370e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableStrokePatternUrl::~DrawableStrokePatternUrl(void)
1371e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1372e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1373e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1374e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableStrokePatternUrl::operator()(
1375e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  MagickCore::DrawingWand * context_) const
1376e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1377e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetStrokePatternURL(context_, _url.c_str());
1378e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1379e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1380e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableStrokePatternUrl::url(const std::string &url_)
1381e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1382e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _url = url_;
1383e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1384e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1385e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkstd::string Magick::DrawableStrokePatternUrl::url(void) const
1386e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1387e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_url);
1388e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1389e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1390e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableStrokePatternUrl::copy() const
1391e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1392e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(new DrawableStrokePatternUrl(*this));
1393e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1394e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
13953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Stroke antialias
13963ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeAntialias::~DrawableStrokeAntialias ( void )
13973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
13983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
13993ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableStrokeAntialias::operator()
14003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( MagickCore::DrawingWand * context_ ) const
14013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetStrokeAntialias( context_, static_cast<MagickBooleanType>
14033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (_flag ? MagickTrue : MagickFalse) );
14043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14053ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableStrokeAntialias::copy() const
14063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableStrokeAntialias(*this);
14083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Stroke color
14113ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeColor::DrawableStrokeColor
14123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::Color &color_ )
14133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _color(color_)
14143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14163ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeColor::DrawableStrokeColor
14173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawableStrokeColor& original_ )
14183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
14193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _color(original_._color)
14203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14223ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeColor::~DrawableStrokeColor ( void )
14233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14253ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableStrokeColor::operator()
14263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
14273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1428101ab708b0574518ac5715da4d3915400e9df79acristy  PixelInfo color = static_cast<PixelInfo>(_color);
14293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PixelWand *pixel_wand=NewPixelWand();
1430f82c4a017e3711a91012dbccd159f6835435dd7fcristy  PixelSetPixelColor(pixel_wand,&color);
14313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetStrokeColor(context_,pixel_wand);
14323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  pixel_wand=DestroyPixelWand(pixel_wand);
14333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14343ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableStrokeColor::copy() const
14353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableStrokeColor(*this);
14373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1439c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirkMagick::DrawableStrokeOpacity::~DrawableStrokeOpacity(void)
14403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1442c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk
1443c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirkvoid Magick::DrawableStrokeOpacity::operator()
1444c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk  (MagickCore::DrawingWand * context_) const
14453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1446c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk  DrawSetStrokeOpacity(context_,_opacity);
14473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1448c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk
1449c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirkMagick::DrawableBase* Magick::DrawableStrokeOpacity::copy() const
14503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1451c8e845f3f7f8cf0458db8a34a631cda0b4b2c89cdirk  return new DrawableStrokeOpacity(*this);
14523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Stroke width
14553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableStrokeWidth::~DrawableStrokeWidth ( void )
14563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14583ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableStrokeWidth::operator()
14593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
14603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetStrokeWidth( context_, _width );
14623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14633ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableStrokeWidth::copy() const
14643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableStrokeWidth(*this);
14663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
14683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Draw text at point
14693ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableText::DrawableText ( const double x_, const double y_,
14703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                     const std::string &text_ )
14713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x(x_),
14723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
14733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _text(text_),
14743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _encoding()
14753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14773ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableText::DrawableText ( const double x_, const double y_,
14783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                     const std::string &text_,  const std::string &encoding_)
14793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x(x_),
14803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_),
14813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _text(text_),
14823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _encoding(encoding_)
14833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14853ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableText::DrawableText( const Magick::DrawableText& original_ )
14863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
14873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(original_._x),
14883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(original_._y),
14893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _text(original_._text),
14903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _encoding(original_._encoding)
14913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14933ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableText::~DrawableText ( void )
14943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
14963ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableText::operator()
14973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
14983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
14993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetTextEncoding( context_, _encoding.c_str() );
15003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawAnnotation( context_, _x, _y,
15013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  reinterpret_cast<const unsigned char*>(_text.c_str()) );
15023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15033ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableText::copy() const
15043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableText(*this);
15063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1508e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk/* DrawableTextAlignment */
1509e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableTextAlignment::DrawableTextAlignment(
1510e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  Magick::AlignType alignment_)
1511e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : _alignment(alignment_)
1512e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1513e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1514e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1515e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableTextAlignment::DrawableTextAlignment
1516e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk(const Magick::DrawableTextAlignment &original_)
1517e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  : DrawableBase(original_),
1518e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _alignment(original_._alignment)
1519e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1520e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1521e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1522e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableTextAlignment::~DrawableTextAlignment(void)
1523e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1524e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1525e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1526e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableTextAlignment::operator()(
1527e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  MagickCore::DrawingWand * context_) const
1528e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1529e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  DrawSetTextAlignment(context_, _alignment);
1530e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1531e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1532e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkvoid Magick::DrawableTextAlignment::alignment(AlignType alignment_)
1533e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1534e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  _alignment=alignment_;
1535e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1536e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1537e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::AlignType Magick::DrawableTextAlignment::alignment(void) const
1538e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1539e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return(_alignment);
1540e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1541e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
1542e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirkMagick::DrawableBase* Magick::DrawableTextAlignment::copy() const
1543e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk{
1544e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk  return new DrawableTextAlignment(*this);
1545e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk}
1546e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
15473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Text antialias
15483ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextAntialias::DrawableTextAntialias ( bool flag_ )
15493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _flag(flag_)
15503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15523ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextAntialias::DrawableTextAntialias( const Magick::DrawableTextAntialias &original_ )
15533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
15543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _flag(original_._flag)
15553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15573ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextAntialias::~DrawableTextAntialias ( void )
15583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15603ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableTextAntialias::operator()
15613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
15623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetTextAntialias( context_, static_cast<MagickBooleanType>
15643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (_flag ? MagickTrue : MagickFalse) );
15653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15663ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableTextAntialias::copy() const
15673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableTextAntialias(*this);
15693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1571e5b79ee9abe9ba71b3752e9f61748b0e5222bc1adirk
15723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Decoration (text decoration)
15733ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextDecoration::DrawableTextDecoration
15743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( Magick::DecorationType decoration_ )
15753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    : _decoration(decoration_)
15763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15783ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextDecoration::DrawableTextDecoration
15793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( const Magick::DrawableTextDecoration &original_ )
15803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    : DrawableBase (original_),
15813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      _decoration(original_._decoration)
15823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15843ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextDecoration::~DrawableTextDecoration( void )
15853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15873ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableTextDecoration::operator()
15883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
15893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetTextDecoration( context_, _decoration );
15913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15923ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableTextDecoration::copy() const
15933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
15943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableTextDecoration(*this);
15953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
15963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1597c084d39d394d2314dc1b250c02e249936e093607dirk// DrawableTextDirection
1598c084d39d394d2314dc1b250c02e249936e093607dirkMagick::DrawableTextDirection::DrawableTextDirection(
1599c084d39d394d2314dc1b250c02e249936e093607dirk  DirectionType direction_)
1600c084d39d394d2314dc1b250c02e249936e093607dirk  : _direction(direction_)
1601c084d39d394d2314dc1b250c02e249936e093607dirk{
1602c084d39d394d2314dc1b250c02e249936e093607dirk}
1603c084d39d394d2314dc1b250c02e249936e093607dirk
1604c084d39d394d2314dc1b250c02e249936e093607dirkMagick::DrawableTextDirection::~DrawableTextDirection(void)
1605c084d39d394d2314dc1b250c02e249936e093607dirk{
1606c084d39d394d2314dc1b250c02e249936e093607dirk}
1607c084d39d394d2314dc1b250c02e249936e093607dirk
1608c084d39d394d2314dc1b250c02e249936e093607dirkvoid Magick::DrawableTextDirection::operator()(
1609c084d39d394d2314dc1b250c02e249936e093607dirk  MagickCore::DrawingWand *context_) const
1610c084d39d394d2314dc1b250c02e249936e093607dirk{
1611c084d39d394d2314dc1b250c02e249936e093607dirk  DrawSetTextDirection(context_,_direction);
1612c084d39d394d2314dc1b250c02e249936e093607dirk}
1613c084d39d394d2314dc1b250c02e249936e093607dirk
1614c084d39d394d2314dc1b250c02e249936e093607dirkvoid Magick::DrawableTextDirection::direction(DirectionType direction_)
1615c084d39d394d2314dc1b250c02e249936e093607dirk{
1616c084d39d394d2314dc1b250c02e249936e093607dirk  _direction=direction_;
1617c084d39d394d2314dc1b250c02e249936e093607dirk}
1618c084d39d394d2314dc1b250c02e249936e093607dirk
1619c084d39d394d2314dc1b250c02e249936e093607dirkMagick::DirectionType Magick::DrawableTextDirection::direction(void) const
1620c084d39d394d2314dc1b250c02e249936e093607dirk{
1621c084d39d394d2314dc1b250c02e249936e093607dirk  return(_direction);
1622c084d39d394d2314dc1b250c02e249936e093607dirk}
1623c084d39d394d2314dc1b250c02e249936e093607dirk
1624c084d39d394d2314dc1b250c02e249936e093607dirkMagick::DrawableBase *Magick::DrawableTextDirection::copy() const
1625c084d39d394d2314dc1b250c02e249936e093607dirk{
1626c084d39d394d2314dc1b250c02e249936e093607dirk  return new DrawableTextDirection(*this);
1627c084d39d394d2314dc1b250c02e249936e093607dirk}
1628c084d39d394d2314dc1b250c02e249936e093607dirk
1629a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk// DrawableTextInterlineSpacing
1630a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableTextInterlineSpacing::DrawableTextInterlineSpacing(
1631a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  double spacing_)
1632a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  : _spacing(spacing_)
1633a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1634a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1635a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1636a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableTextInterlineSpacing::~DrawableTextInterlineSpacing(void)
1637a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1638a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1639a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1640a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::DrawableTextInterlineSpacing::operator()(
1641a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  MagickCore::DrawingWand *context_) const
1642a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1643a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  DrawSetTextInterlineSpacing(context_,_spacing);
1644a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1645a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1646a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::DrawableTextInterlineSpacing::spacing(double spacing_)
1647a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1648a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  _spacing=spacing_;
1649a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1650a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1651a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkdouble Magick::DrawableTextInterlineSpacing::spacing(void) const
1652a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1653a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return(_spacing);
1654a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1655a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1656a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableBase *Magick::DrawableTextInterlineSpacing::copy() const
1657a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1658a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return new DrawableTextInterlineSpacing(*this);
1659a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1660a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1661a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk// DrawableTextInterwordSpacing
1662a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableTextInterwordSpacing::DrawableTextInterwordSpacing(
1663a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  double spacing_)
1664a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  : _spacing(spacing_)
1665a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1666a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1667a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1668a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableTextInterwordSpacing::~DrawableTextInterwordSpacing(void)
1669a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1670a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1671a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1672a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::DrawableTextInterwordSpacing::operator()(
1673a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  MagickCore::DrawingWand *context_) const
1674a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1675a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  DrawSetTextInterwordSpacing(context_,_spacing);
1676a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1677a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1678a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::DrawableTextInterwordSpacing::spacing(double spacing_)
1679a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1680a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  _spacing=spacing_;
1681a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1682a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1683a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkdouble Magick::DrawableTextInterwordSpacing::spacing(void) const
1684a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1685a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return(_spacing);
1686a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1687a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1688a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableBase *Magick::DrawableTextInterwordSpacing::copy() const
1689a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1690a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return new DrawableTextInterwordSpacing(*this);
1691a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1692a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1693a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk// DrawableTextKerning
1694a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableTextKerning::DrawableTextKerning(
1695a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  double kerning_)
1696a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  : _kerning(kerning_)
1697a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1698a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1699a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1700a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableTextKerning::~DrawableTextKerning(void)
1701a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1702a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1703a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1704a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::DrawableTextKerning::operator()(
1705a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  MagickCore::DrawingWand *context_) const
1706a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1707a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  DrawSetTextKerning(context_,_kerning);
1708a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1709a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1710a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkvoid Magick::DrawableTextKerning::kerning(double kerning_)
1711a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1712a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  _kerning=kerning_;
1713a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1714a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1715a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkdouble Magick::DrawableTextKerning::kerning(void) const
1716a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1717a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return(_kerning);
1718a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1719a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
1720a424799a0e5bfd6d1b7941c044e067fbf18d319fdirkMagick::DrawableBase *Magick::DrawableTextKerning::copy() const
1721a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk{
1722a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk  return new DrawableTextKerning(*this);
1723a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk}
1724a424799a0e5bfd6d1b7941c044e067fbf18d319fdirk
17253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Set text undercolor
17263ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextUnderColor::DrawableTextUnderColor
17273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::Color &color_ )
17283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _color(color_)
17293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17313ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextUnderColor::DrawableTextUnderColor
17323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::DrawableTextUnderColor& original_ )
17333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : DrawableBase (original_),
17343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _color(original_._color)
17353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17373ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTextUnderColor::~DrawableTextUnderColor ( void )
17383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17403ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableTextUnderColor::operator()
17413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
17423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
1743101ab708b0574518ac5715da4d3915400e9df79acristy  PixelInfo color = static_cast<PixelInfo>(_color);
17443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PixelWand *pixel_wand=NewPixelWand();
1745f82c4a017e3711a91012dbccd159f6835435dd7fcristy  PixelSetPixelColor(pixel_wand,&color);
17463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetTextUnderColor(context_,pixel_wand);
17473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  pixel_wand=DestroyPixelWand(pixel_wand);
17483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17493ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableTextUnderColor::copy() const
17503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableTextUnderColor(*this);
17523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Apply Translation
17553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableTranslation::~DrawableTranslation ( void )
17563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17583ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableTranslation::operator()
17593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
17603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawTranslate( context_, _x, _y );
17623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17633ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableTranslation::copy() const
17643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableTranslation(*this);
17663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Set the size of the viewbox
17693ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableViewbox::~DrawableViewbox ( void )
17703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17723ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::DrawableViewbox::operator()
17733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
17743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawSetViewbox( context_, _x1, _y1, _x2, _y2 );
17763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17773ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::DrawableBase* Magick::DrawableViewbox::copy() const
17783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new DrawableViewbox(*this);
17803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
17813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
17833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Classes
17843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
17853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
17863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
17873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// PathArcArgs
17883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
1789af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator == ( const Magick::PathArcArgs& /*left_*/,
17903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathArcArgs& /*right_*/ )
17913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 1 );
17933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1794af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator != ( const Magick::PathArcArgs& /*left_*/,
17953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathArcArgs& /*right_*/ )
17963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
17973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
17983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1799af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator > ( const Magick::PathArcArgs& /*left_*/,
18003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                       const Magick::PathArcArgs& /*right_*/ )
18013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
18033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1804af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <  ( const Magick::PathArcArgs& /*left_*/,
18053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathArcArgs& /*right_*/ )
18063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return  ( false );
18083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1809af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator >= ( const Magick::PathArcArgs& left_,
18103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathArcArgs& right_ )
18113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ > right_ ) || ( left_ == right_ ) );
18133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1814af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <= ( const Magick::PathArcArgs& left_,
18153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathArcArgs& right_ )
18163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ < right_ ) || ( left_ == right_ ) );
18183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Default constructor
18203ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcArgs::PathArcArgs( void )
18213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  :  _radiusX(0),
18223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _radiusY(0),
18233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _xAxisRotation(0),
18243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _largeArcFlag(false),
18253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _sweepFlag(false),
18263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _x(0),
18273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _y(0)
18283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Normal constructor
18313ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcArgs::PathArcArgs( double radiusX_, double radiusY_,
18323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                  double xAxisRotation_, bool largeArcFlag_,
18333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                  bool sweepFlag_, double x_, double y_ )
18343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _radiusX(radiusX_),
18353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _radiusY(radiusY_),
18363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _xAxisRotation(xAxisRotation_),
18373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _largeArcFlag(largeArcFlag_),
18383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _sweepFlag(sweepFlag_),
18393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
18403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_)
18413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copy constructor
18443ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcArgs::PathArcArgs( const Magick::PathArcArgs &original_ )
18453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  :  _radiusX(original_._radiusX),
18463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _radiusY(original_._radiusY),
18473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _xAxisRotation(original_._xAxisRotation),
18483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _largeArcFlag(original_._largeArcFlag),
18493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _sweepFlag(original_._sweepFlag),
18503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _x(original_._x),
18513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _y(original_._y)
18523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Destructor
18553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcArgs::~PathArcArgs ( void )
18563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
18593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Arc
18603ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcAbs::PathArcAbs ( const Magick::PathArcArgs &coordinates_ )
18613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinates_)
18623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18643ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcAbs::PathArcAbs ( const PathArcArgsList &coordinates_ )
18653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
18663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18683ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcAbs::PathArcAbs ( const Magick::PathArcAbs& original_ )
18693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
18703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
18713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18733ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcAbs::~PathArcAbs ( void )
18743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18763ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathArcAbs::operator()( MagickCore::DrawingWand * context_ ) const
18773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( PathArcArgsList::const_iterator p = _coordinates.begin();
18793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
18803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
18813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathEllipticArcAbsolute( context_, p->radiusX(), p->radiusY(),
18823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                   p->xAxisRotation(), (MagickBooleanType) p->largeArcFlag(),
18833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                   (MagickBooleanType) p->sweepFlag(), p->x(), p->y() );
18843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
18853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18863ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathArcAbs::copy() const
18873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathArcAbs(*this);
18893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
18913ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcRel::PathArcRel ( const Magick::PathArcArgs &coordinates_ )
18923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinates_)
18933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18953ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcRel::PathArcRel ( const PathArcArgsList &coordinates_ )
18963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
18973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
18983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
18993ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcRel::PathArcRel ( const Magick::PathArcRel& original_ )
19003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
19013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
19023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19043ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathArcRel::~PathArcRel ( void )
19053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19073ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathArcRel::operator()( MagickCore::DrawingWand * context_ ) const
19083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( PathArcArgsList::const_iterator p = _coordinates.begin();
19103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
19113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
19123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathEllipticArcRelative( context_, p->radiusX(), p->radiusY(),
19133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                   p->xAxisRotation(), (MagickBooleanType) p->largeArcFlag(),
19143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                   (MagickBooleanType) p->sweepFlag(), p->x(), p->y() );
19153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
19163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19173ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathArcRel::copy() const
19183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathArcRel(*this);
19203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
19223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
19233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Closepath
19243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
19253ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathClosePath::~PathClosePath ( void )
19263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19283ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathClosePath::operator()( MagickCore::DrawingWand * context_ ) const
19293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathClose( context_ );
19313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19323ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathClosePath::copy() const
19333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathClosePath(*this);
19353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
19373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
19383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Curveto (Cubic Bezier)
19393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
1940af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator == ( const Magick::PathCurvetoArgs& /*left_*/,
19413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathCurvetoArgs& /*right_*/ )
19423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 1 );
19443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1945af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator != ( const Magick::PathCurvetoArgs& /*left_*/,
19463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathCurvetoArgs& /*right_*/ )
19473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
19493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1950af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator > ( const Magick::PathCurvetoArgs& /*left_*/,
19513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                       const Magick::PathCurvetoArgs& /*right_*/ )
19523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
19543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1955af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <  ( const Magick::PathCurvetoArgs& /*left_*/,
19563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathCurvetoArgs& /*right_*/ )
19573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return  ( false );
19593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1960af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator >= ( const Magick::PathCurvetoArgs& left_,
19613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathCurvetoArgs& right_ )
19623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ > right_ ) || ( left_ == right_ ) );
19643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1965af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <= ( const Magick::PathCurvetoArgs& left_,
19663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                        const Magick::PathCurvetoArgs& right_ )
19673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ < right_ ) || ( left_ == right_ ) );
19693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Default constructor
19713ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoArgs::PathCurvetoArgs( void )
19723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x1(0),
19733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y1(0),
19743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x2(0),
19753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y2(0),
19763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(0),
19773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(0)
19783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Normal constructor
19813ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoArgs::PathCurvetoArgs( double x1_, double y1_,
19823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                          double x2_, double y2_,
19833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                          double x_, double y_ )
19843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x1(x1_),
19853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y1(y1_),
19863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x2(x2_),
19873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y2(y2_),
19883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
19893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_)
19903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
19913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
19923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copy constructor
19933ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoArgs::PathCurvetoArgs( const PathCurvetoArgs &original_ )
19943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x1(original_._x1),
19953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y1(original_._y1),
19963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x2(original_._x2),
19973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y2(original_._y2),
19983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(original_._x),
19993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(original_._y)
20003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Destructor
20033ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoArgs::~PathCurvetoArgs ( void )
20043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
20073ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoAbs::PathCurvetoAbs ( const Magick::PathCurvetoArgs &args_ )
20083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(1,args_)
20093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20113ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoAbs::PathCurvetoAbs ( const PathCurveToArgsList &args_ )
20123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(args_)
20133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20153ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoAbs::PathCurvetoAbs
20163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy ( const Magick::PathCurvetoAbs& original_ )
20173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy   : VPathBase (original_),
20183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     _args(original_._args)
20193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20213ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoAbs::~PathCurvetoAbs ( void )
20223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20243ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathCurvetoAbs::operator()
20253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
20263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( PathCurveToArgsList::const_iterator p = _args.begin();
20283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _args.end(); p++ )
20293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
20303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathCurveToAbsolute( context_, p->x1(), p->y1(), p->x2(), p->y2(),
20313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                               p->x(), p->y() );
20323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
20333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20343ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathCurvetoAbs::copy() const
20353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathCurvetoAbs(*this);
20373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20383ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoRel::PathCurvetoRel ( const Magick::PathCurvetoArgs &args_ )
20393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(1,args_)
20403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20423ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoRel::PathCurvetoRel ( const PathCurveToArgsList &args_ )
20433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(args_)
20443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20463ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoRel::PathCurvetoRel
20473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathCurvetoRel& original_ )
20483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
20493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _args(original_._args)
20503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20523ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathCurvetoRel::~PathCurvetoRel ( void )
20533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathCurvetoRel::operator()
20563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
20573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( PathCurveToArgsList::const_iterator p = _args.begin();
20593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _args.end(); p++ )
20603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
20613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathCurveToRelative( context_, p->x1(), p->y1(), p->x2(), p->y2(),
20623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                               p->x(), p->y() );
20633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
20643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20653ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathCurvetoRel::copy() const
20663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathCurvetoRel(*this);
20683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20693ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoAbs::PathSmoothCurvetoAbs
20703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::Coordinate &coordinates_ )
20713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinates_)
20723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20743ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoAbs::PathSmoothCurvetoAbs
20753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const CoordinateList &coordinates_ )
20763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
20773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20793ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoAbs::PathSmoothCurvetoAbs
20803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathSmoothCurvetoAbs& original_ )
20813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
20823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
20833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20853ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoAbs::~PathSmoothCurvetoAbs ( void )
20863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
20883ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathSmoothCurvetoAbs::operator()
20893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
20903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
20913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
20923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
20933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
20943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      double x2 = p->x();
20953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      double y2 = p->y();
20963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      p++;
20973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      if(p != _coordinates.end() )
20983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        DrawPathCurveToSmoothAbsolute( context_, x2, y2, p->x(), p->y() );
20993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
21003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21013ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathSmoothCurvetoAbs::copy() const
21023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathSmoothCurvetoAbs(*this);
21043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21053ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoRel::PathSmoothCurvetoRel
21063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::Coordinate &coordinates_ )
21073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinates_)
21083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21103ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoRel::PathSmoothCurvetoRel
21113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const CoordinateList &coordinates_ )
21123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
21133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21153ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoRel::PathSmoothCurvetoRel
21163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathSmoothCurvetoRel& original_ )
21173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
21183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
21193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21213ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothCurvetoRel::~PathSmoothCurvetoRel ( void )
21223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21243ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathSmoothCurvetoRel::operator()
21253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
21263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
21283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
21293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
21303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      double x2 = p->x();
21313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      double y2 = p->y();
21323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      p++;
21333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      if(p != _coordinates.end() )
21343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        DrawPathCurveToSmoothRelative( context_, x2, y2, p->x(), p->y() );
21353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
21363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21373ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathSmoothCurvetoRel::copy() const
21383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathSmoothCurvetoRel(*this);
21403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
21423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
21433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Quadratic Curveto (Quadratic Bezier)
21443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
2145af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator ==
21463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
21473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
21483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 1 );
21503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2151af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator !=
21523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
21533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
21543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
21563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2157af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator >
21583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
21593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
21603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( 0 );
21623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2163af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <
21643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
21653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
21663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return  ( 0 );
21683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2169af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator >=
21703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs& left_,
21713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::PathQuadraticCurvetoArgs& right_ )
21723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ > right_ ) || ( left_ == right_ ) );
21743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2175af1dd259230d63d51f441c28bc23265a79b19c55cristyMagickPPExport int Magick::operator <=
21763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs& left_,
21773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const Magick::PathQuadraticCurvetoArgs& right_ )
21783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return ( ( left_ < right_ ) || ( left_ == right_ ) );
21803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Default Constructor
21823ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoArgs::PathQuadraticCurvetoArgs( void )
21833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x1(0),
21843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y1(0),
21853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(0),
21863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(0)
21873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
21893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Normal Constructor
21903ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoArgs::PathQuadraticCurvetoArgs( double x1_,
21913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                                            double y1_,
21923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                                            double x_,
21933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                                            double y_ )
21943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x1(x1_),
21953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y1(y1_),
21963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(x_),
21973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(y_)
21983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
21993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Copy Constructor
22013ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoArgs::PathQuadraticCurvetoArgs( const PathQuadraticCurvetoArgs &original_ )
22023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _x1(original_._x1),
22033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y1(original_._y1),
22043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _x(original_._x),
22053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _y(original_._y)
22063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Destructor
22093ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoArgs::~PathQuadraticCurvetoArgs ( void )
22103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
22133ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoAbs::PathQuadraticCurvetoAbs
22143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs &args_ )
22153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(1,args_)
22163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22183ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoAbs::PathQuadraticCurvetoAbs
22193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const PathQuadraticCurvetoArgsList &args_ )
22203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(args_)
22213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoAbs::PathQuadraticCurvetoAbs
22243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoAbs& original_ )
22253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
22263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _args(original_._args)
22273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22293ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoAbs::~PathQuadraticCurvetoAbs ( void )
22303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22323ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathQuadraticCurvetoAbs::operator()
22333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
22343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( PathQuadraticCurvetoArgsList::const_iterator p = _args.begin();
22363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _args.end(); p++ )
22373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
22383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathCurveToQuadraticBezierAbsolute( context_, p->x1(), p->y1(),
22393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                              p->x(), p->y() );
22403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
22413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22423ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathQuadraticCurvetoAbs::copy() const
22433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathQuadraticCurvetoAbs(*this);
22453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22463ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoRel::PathQuadraticCurvetoRel
22473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoArgs &args_ )
22483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(1,args_)
22493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoRel::PathQuadraticCurvetoRel
22523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const PathQuadraticCurvetoArgsList &args_ )
22533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _args(args_)
22543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22563ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoRel::PathQuadraticCurvetoRel
22573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathQuadraticCurvetoRel& original_ )
22583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
22593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _args(original_._args)
22603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22623ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathQuadraticCurvetoRel::~PathQuadraticCurvetoRel ( void )
22633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22653ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathQuadraticCurvetoRel::operator()
22663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
22673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( PathQuadraticCurvetoArgsList::const_iterator p = _args.begin();
22693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _args.end(); p++ )
22703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
22713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathCurveToQuadraticBezierRelative( context_, p->x1(), p->y1(),
22723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                                              p->x(), p->y() );
22733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
22743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22753ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathQuadraticCurvetoRel::copy() const
22763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathQuadraticCurvetoRel(*this);
22783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22793ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoAbs::PathSmoothQuadraticCurvetoAbs
22803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::Coordinate &coordinate_ )
22813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinate_)
22823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22843ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoAbs::PathSmoothQuadraticCurvetoAbs
22853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const CoordinateList &coordinates_ )
22863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
22873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22893ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoAbs::PathSmoothQuadraticCurvetoAbs
22903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::PathSmoothQuadraticCurvetoAbs& original_ )
22913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
22923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
22933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22953ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoAbs::~PathSmoothQuadraticCurvetoAbs ( void )
22963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
22973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
22983ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathSmoothQuadraticCurvetoAbs::operator()
22993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
23003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
23023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
23033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
23043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathCurveToQuadraticBezierSmoothAbsolute( context_, p->x(), p->y() );
23053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
23063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23073ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathSmoothQuadraticCurvetoAbs::copy() const
23083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathSmoothQuadraticCurvetoAbs(*this);
23103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23113ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoRel::PathSmoothQuadraticCurvetoRel
23123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const Magick::Coordinate &coordinate_ )
23133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinate_)
23143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23163ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoRel::PathSmoothQuadraticCurvetoRel
23173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const CoordinateList &coordinates_ )
23183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
23193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23213ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoRel::PathSmoothQuadraticCurvetoRel
23223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy( const PathSmoothQuadraticCurvetoRel& original_ )
23233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
23243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
23253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23273ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathSmoothQuadraticCurvetoRel::~PathSmoothQuadraticCurvetoRel ( void )
23283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23303ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathSmoothQuadraticCurvetoRel::operator()
23313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
23323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
23343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
23353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
23363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathCurveToQuadraticBezierSmoothRelative( context_, p->x(), p->y() );
23373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
23383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23393ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathSmoothQuadraticCurvetoRel::copy() const
23403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathSmoothQuadraticCurvetoRel(*this);
23423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
23443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
23453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Lineto
23463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
23473ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoAbs::PathLinetoAbs ( const Magick::Coordinate& coordinate_  )
23483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinate_)
23493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoAbs::PathLinetoAbs ( const CoordinateList &coordinates_ )
23523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
23533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23553ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoAbs::PathLinetoAbs ( const Magick::PathLinetoAbs& original_ )
23563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
23573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
23583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23603ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoAbs::~PathLinetoAbs ( void )
23613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23633ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathLinetoAbs::operator()( MagickCore::DrawingWand * context_ ) const
23643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
23663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
23673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
23683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathLineToAbsolute( context_, p->x(), p->y() );
23693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
23703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23713ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathLinetoAbs::copy() const
23723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathLinetoAbs(*this);
23743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23753ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoRel::PathLinetoRel ( const Magick::Coordinate& coordinate_  )
23763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinate_)
23773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23793ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoRel::PathLinetoRel ( const CoordinateList &coordinates_ )
23803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
23813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23833ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoRel::PathLinetoRel ( const Magick::PathLinetoRel& original_ )
23843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
23853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
23863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23883ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoRel::~PathLinetoRel ( void )
23893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23913ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathLinetoRel::operator()( MagickCore::DrawingWand * context_ ) const
23923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
23933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
23943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
23953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
23963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathLineToRelative( context_, p->x(), p->y() );
23973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
23983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
23993ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathLinetoRel::copy() const
24003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathLinetoRel(*this);
24023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
24043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
24053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Horizontal Lineto
24063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
24073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
24083ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoHorizontalAbs::~PathLinetoHorizontalAbs ( void )
24093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24113ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathLinetoHorizontalAbs::operator()
24123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
24133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathLineToHorizontalAbsolute( context_, _x );
24153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24163ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathLinetoHorizontalAbs::copy() const
24173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathLinetoHorizontalAbs(*this);
24193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24203ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoHorizontalRel::~PathLinetoHorizontalRel ( void )
24213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24233ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathLinetoHorizontalRel::operator()
24243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
24253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathLineToHorizontalRelative( context_, _x );
24273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24283ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathLinetoHorizontalRel::copy() const
24293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathLinetoHorizontalRel(*this);
24313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
24333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
24343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Vertical Lineto
24353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
24363ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoVerticalAbs::~PathLinetoVerticalAbs ( void )
24373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24393ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathLinetoVerticalAbs::operator()
24403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
24413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathLineToVerticalAbsolute( context_, _y );
24433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24443ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathLinetoVerticalAbs::copy() const
24453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathLinetoVerticalAbs(*this);
24473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24483ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathLinetoVerticalRel::~PathLinetoVerticalRel ( void )
24493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24513ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathLinetoVerticalRel::operator()
24523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ( MagickCore::DrawingWand * context_ ) const
24533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DrawPathLineToVerticalRelative( context_, _y );
24553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24563ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathLinetoVerticalRel::copy() const
24573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathLinetoVerticalRel(*this);
24593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
24613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
24623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy// Path Moveto
24633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy//
24643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
24653ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoAbs::PathMovetoAbs ( const Magick::Coordinate &coordinate_ )
24663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinate_)
24673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24693ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoAbs::PathMovetoAbs ( const CoordinateList &coordinates_ )
24703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
24713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24733ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoAbs::PathMovetoAbs ( const Magick::PathMovetoAbs& original_ )
24743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
24753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
24763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24783ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoAbs::~PathMovetoAbs ( void )
24793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24813ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathMovetoAbs::operator()( MagickCore::DrawingWand * context_ ) const
24823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
24843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
24853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
24863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathMoveToAbsolute( context_, p->x(), p->y() );
24873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
24883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24893ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathMovetoAbs::copy() const
24903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathMovetoAbs(*this);
24923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24933ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoRel::PathMovetoRel ( const Magick::Coordinate &coordinate_ )
24943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(1,coordinate_)
24953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
24963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
24973ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoRel::PathMovetoRel ( const CoordinateList &coordinates_ )
24983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : _coordinates(coordinates_)
24993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
25003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
25013ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoRel::PathMovetoRel ( const Magick::PathMovetoRel& original_ )
25023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  : VPathBase (original_),
25033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    _coordinates(original_._coordinates)
25043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
25053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
25063ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::PathMovetoRel::~PathMovetoRel ( void )
25073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
25083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
25093ed852eea50f9d4cd633efb8c2b054b8e33c253cristyvoid Magick::PathMovetoRel::operator()( MagickCore::DrawingWand * context_ ) const
25103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
25113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for( CoordinateList::const_iterator p = _coordinates.begin();
25123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy       p != _coordinates.end(); p++ )
25133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
25143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      DrawPathMoveToRelative( context_, p->x(), p->y() );
25153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
25163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
25173ed852eea50f9d4cd633efb8c2b054b8e33c253cristyMagick::VPathBase* Magick::PathMovetoRel::copy() const
25183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
25193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return new PathMovetoRel(*this);
25203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
25213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
25223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(EXPLICIT_TEMPLATE_INSTANTIATION)
2523263b876b613ee3cddda42810a4b421a73895327cdirk// template class std::vector<Magick::Coordinate>;
2524263b876b613ee3cddda42810a4b421a73895327cdirk// template class std::vector<const Magick::Drawable>;
2525263b876b613ee3cddda42810a4b421a73895327cdirk// template class std::vector<const Magick::PathArcArgs>;
2526263b876b613ee3cddda42810a4b421a73895327cdirk// template class std::vector<const Magick::PathCurvetoArgs>;
2527263b876b613ee3cddda42810a4b421a73895327cdirk// template class std::vector<const Magick::PathQuadraticCurvetoArgs>;
2528263b876b613ee3cddda42810a4b421a73895327cdirk// template class std::vector<const Magick::VPath>;
25293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
2530