1 // This may look like C code, but it is really -*- C++ -*-
2 //
3 // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003
4 // Copyright Dirk Lemstra 2014-2017
5 //
6 // Implementation of Drawable (Graphic objects)
7 //
8
9 #define MAGICKCORE_IMPLEMENTATION 1
10 #define MAGICK_PLUSPLUS_IMPLEMENTATION 1
11 #define MAGICK_DRAWABLE_IMPLEMENTATION
12
13 #include "Magick++/Include.h"
14 #include <math.h>
15 #include <string>
16
17 #include "Magick++/Drawable.h"
18 #include "Magick++/Image.h"
19
20 using namespace std;
21
operator ==(const Magick::Coordinate & left_,const Magick::Coordinate & right_)22 MagickPPExport int Magick::operator == (const Magick::Coordinate& left_,
23 const Magick::Coordinate& right_)
24 {
25 return((left_.x() == right_.x()) && (left_.y() == right_.y()));
26 }
27
operator !=(const Magick::Coordinate & left_,const Magick::Coordinate & right_)28 MagickPPExport int Magick::operator != (const Magick::Coordinate& left_,
29 const Magick::Coordinate& right_)
30 {
31 return(!(left_ == right_));
32 }
33
operator >(const Magick::Coordinate & left_,const Magick::Coordinate & right_)34 MagickPPExport int Magick::operator > (const Magick::Coordinate& left_,
35 const Magick::Coordinate& right_)
36 {
37 return (!(left_ < right_) && (left_ != right_));
38 }
39
operator <(const Magick::Coordinate & left_,const Magick::Coordinate & right_)40 MagickPPExport int Magick::operator < (const Magick::Coordinate& left_,
41 const Magick::Coordinate& right_)
42 {
43 // Based on distance from origin
44 return((sqrt(left_.x()*left_.x() + left_.y()*left_.y())) <
45 (sqrt(right_.x()*right_.x() + right_.y()*right_.y())));
46 }
47
operator >=(const Magick::Coordinate & left_,const Magick::Coordinate & right_)48 MagickPPExport int Magick::operator >= (const Magick::Coordinate& left_,
49 const Magick::Coordinate& right_)
50 {
51 return((left_ > right_) || (left_ == right_));
52 }
53
operator <=(const Magick::Coordinate & left_,const Magick::Coordinate & right_)54 MagickPPExport int Magick::operator <= (const Magick::Coordinate& left_,
55 const Magick::Coordinate& right_)
56 {
57 return((left_ < right_) || (left_ == right_));
58 }
59
60 /* DrawableBase */
DrawableBase()61 Magick::DrawableBase::DrawableBase()
62 {
63 }
64
~DrawableBase(void)65 Magick::DrawableBase::~DrawableBase(void)
66 {
67 }
68
operator ()(MagickCore::DrawingWand * context_) const69 void Magick::DrawableBase::operator()(MagickCore::DrawingWand * context_) const
70 {
71 (void) context_;
72 }
73
copy() const74 Magick::DrawableBase* Magick::DrawableBase::copy() const
75 {
76 return new DrawableBase(*this);
77 }
78
79 /* Drawable */
Drawable(void)80 Magick::Drawable::Drawable(void)
81 : dp((Magick::DrawableBase *) NULL)
82 {
83 }
84
Drawable(const Magick::DrawableBase & original_)85 Magick::Drawable::Drawable(const Magick::DrawableBase& original_)
86 : dp(original_.copy())
87 {
88 }
89
~Drawable(void)90 Magick::Drawable::~Drawable(void)
91 {
92 delete dp;
93 dp=(Magick::DrawableBase *) NULL;
94 }
95
Drawable(const Magick::Drawable & original_)96 Magick::Drawable::Drawable(const Magick::Drawable& original_)
97 : dp((original_.dp != (Magick::DrawableBase *) NULL ? original_.dp->copy() :
98 (Magick::DrawableBase *) NULL))
99 {
100 }
101
operator =(const Magick::Drawable & original_)102 Magick::Drawable& Magick::Drawable::operator= (
103 const Magick::Drawable& original_)
104 {
105 DrawableBase
106 *temp_dp;
107
108 if (this != &original_)
109 {
110 temp_dp=(original_.dp != (Magick::DrawableBase *) NULL ?
111 original_.dp->copy() : (Magick::DrawableBase *) NULL);
112 delete dp;
113 dp=temp_dp;
114 }
115 return(*this);
116 }
117
operator ()(MagickCore::DrawingWand * context_) const118 void Magick::Drawable::operator()(MagickCore::DrawingWand * context_) const
119 {
120 if (dp != (Magick::DrawableBase *) NULL)
121 dp->operator()(context_);
122 }
123
124 /*virtual*/
~VPathBase(void)125 Magick::VPathBase::~VPathBase ( void )
126 {
127 }
128
129 // Constructor
VPath(void)130 Magick::VPath::VPath ( void )
131 : dp(0)
132 {
133 }
134
135 // Construct from VPathBase
VPath(const Magick::VPathBase & original_)136 Magick::VPath::VPath ( const Magick::VPathBase& original_ )
137 : dp(original_.copy())
138 {
139 }
140
141 // Destructor
~VPath(void)142 /* virtual */ Magick::VPath::~VPath ( void )
143 {
144 delete dp;
145 dp = 0;
146 }
147
148 // Copy constructor
VPath(const Magick::VPath & original_)149 Magick::VPath::VPath ( const Magick::VPath& original_ )
150 : dp(original_.dp? original_.dp->copy(): 0)
151 {
152 }
153
154 // Assignment operator
operator =(const Magick::VPath & original_)155 Magick::VPath& Magick::VPath::operator= (const Magick::VPath& original_ )
156 {
157 if (this != &original_)
158 {
159 VPathBase* temp_dp = (original_.dp ? original_.dp->copy() : 0);
160 delete dp;
161 dp = temp_dp;
162 }
163 return *this;
164 }
165
166 // Operator to invoke contained object
operator ()(MagickCore::DrawingWand * context_) const167 void Magick::VPath::operator()( MagickCore::DrawingWand * context_ ) const
168 {
169 if(dp)
170 dp->operator()( context_ );
171 }
172
173 //
174 // Drawable Objects
175 //
176
177 // Affine (scaling, rotation, and translation)
DrawableAffine(double sx_,double sy_,double rx_,double ry_,double tx_,double ty_)178 Magick::DrawableAffine::DrawableAffine( double sx_, double sy_,
179 double rx_, double ry_,
180 double tx_, double ty_ )
181 {
182 _affine.sx = sx_;
183 _affine.rx = rx_;
184 _affine.ry = ry_;
185 _affine.sy = sy_;
186 _affine.tx = tx_;
187 _affine.ty = ty_;
188 }
DrawableAffine(void)189 Magick::DrawableAffine::DrawableAffine( void )
190 {
191 GetAffineMatrix(&_affine);
192 }
~DrawableAffine(void)193 Magick::DrawableAffine::~DrawableAffine( void )
194 {
195 }
operator ()(MagickCore::DrawingWand * context_) const196 void Magick::DrawableAffine::operator()( MagickCore::DrawingWand * context_ ) const
197 {
198 DrawAffine( context_, &_affine );
199 }
copy() const200 Magick::DrawableBase* Magick::DrawableAffine::copy() const
201 {
202 return new DrawableAffine(*this);
203 }
204
~DrawableAlpha(void)205 Magick::DrawableAlpha::~DrawableAlpha(void)
206 {
207 }
208
operator ()(MagickCore::DrawingWand * context_) const209 void Magick::DrawableAlpha::operator()(MagickCore::DrawingWand * context_) const
210 {
211 DrawAlpha(context_,_x,_y,_paintMethod);
212 }
213
copy() const214 Magick::DrawableBase* Magick::DrawableAlpha::copy() const
215 {
216 return new DrawableAlpha(*this);
217 }
218
219 // Arc
~DrawableArc(void)220 Magick::DrawableArc::~DrawableArc( void )
221 {
222 }
operator ()(MagickCore::DrawingWand * context_) const223 void Magick::DrawableArc::operator()( MagickCore::DrawingWand * context_ ) const
224 {
225 DrawArc( context_, _startX, _startY, _endX, _endY, _startDegrees, _endDegrees );
226 }
copy() const227 Magick::DrawableBase* Magick::DrawableArc::copy() const
228 {
229 return new DrawableArc(*this);
230 }
231
232 //
233 // Bezier curve
234 //
235 // Construct from coordinates (Coordinate list must contain at least three members)
DrawableBezier(const CoordinateList & coordinates_)236 Magick::DrawableBezier::DrawableBezier ( const CoordinateList &coordinates_ )
237 : _coordinates(coordinates_)
238 {
239 }
240 // Copy constructor
DrawableBezier(const Magick::DrawableBezier & original_)241 Magick::DrawableBezier::DrawableBezier( const Magick::DrawableBezier& original_ )
242 : DrawableBase (original_),
243 _coordinates(original_._coordinates)
244 {
245 }
246 // Destructor
~DrawableBezier(void)247 Magick::DrawableBezier::~DrawableBezier( void )
248 {
249 }
operator ()(MagickCore::DrawingWand * context_) const250 void Magick::DrawableBezier::operator()( MagickCore::DrawingWand * context_ ) const
251 {
252 size_t num_coords = (size_t) _coordinates.size();
253 PointInfo *coordinates = new PointInfo[num_coords];
254
255 PointInfo *q = coordinates;
256 CoordinateList::const_iterator p = _coordinates.begin();
257
258 while( p != _coordinates.end() )
259 {
260 q->x = p->x();
261 q->y = p->y();
262 q++;
263 p++;
264 }
265
266 DrawBezier( context_, num_coords, coordinates );
267 delete [] coordinates;
268 }
copy() const269 Magick::DrawableBase* Magick::DrawableBezier::copy() const
270 {
271 return new DrawableBezier(*this);
272 }
273
274
275 /* DrawableBorderColor */
DrawableBorderColor(const Magick::Color & color_)276 Magick::DrawableBorderColor::DrawableBorderColor(const Magick::Color &color_)
277 : _color(color_)
278 {
279 }
280
DrawableBorderColor(const Magick::DrawableBorderColor & original_)281 Magick::DrawableBorderColor::DrawableBorderColor
282 (const Magick::DrawableBorderColor &original_)
283 : DrawableBase(original_),
284 _color(original_._color)
285 {
286 }
287
~DrawableBorderColor(void)288 Magick::DrawableBorderColor::~DrawableBorderColor(void)
289 {
290 }
291
operator ()(MagickCore::DrawingWand * context_) const292 void Magick::DrawableBorderColor::operator()(
293 MagickCore::DrawingWand *context_) const
294 {
295 PixelInfo
296 color;
297
298 PixelWand
299 *pixel_wand;
300
301 color=static_cast<PixelInfo>(_color);
302 pixel_wand=NewPixelWand();
303 PixelSetPixelColor(pixel_wand,&color);
304 DrawSetBorderColor(context_,pixel_wand);
305 pixel_wand=DestroyPixelWand(pixel_wand);
306 }
307
color(const Color & color_)308 void Magick::DrawableBorderColor::color(const Color &color_)
309 {
310 _color=color_;
311 }
312
color(void) const313 Magick::Color Magick::DrawableBorderColor::color(void) const
314 {
315 return(_color);
316 }
317
copy() const318 Magick::DrawableBase* Magick::DrawableBorderColor::copy() const
319 {
320 return(new DrawableBorderColor(*this));
321 }
322
323
324 /* DrawableClipRule */
DrawableClipRule(const FillRule fillRule_)325 Magick::DrawableClipRule::DrawableClipRule(const FillRule fillRule_)
326 {
327 _fillRule=fillRule_;
328 }
329
~DrawableClipRule(void)330 Magick::DrawableClipRule::~DrawableClipRule(void)
331 {
332 }
333
operator ()(MagickCore::DrawingWand * context_) const334 void Magick::DrawableClipRule::operator()(
335 MagickCore::DrawingWand * context_) const
336 {
337 DrawSetClipRule(context_,_fillRule);
338 }
339
fillRule(const FillRule fillRule_)340 void Magick::DrawableClipRule::fillRule(const FillRule fillRule_)
341 {
342 _fillRule=fillRule_;
343 }
344
fillRule(void) const345 Magick::FillRule Magick::DrawableClipRule::fillRule(void) const
346 {
347 return(_fillRule);
348 }
349
copy() const350 Magick::DrawableBase* Magick::DrawableClipRule::copy() const
351 {
352 return(new DrawableClipRule(*this));
353 }
354
355
356 /* DrawableClipUnits */
DrawableClipUnits(const ClipPathUnits units_)357 Magick::DrawableClipUnits::DrawableClipUnits(const ClipPathUnits units_)
358 {
359 _units = units_;
360 }
361
~DrawableClipUnits(void)362 Magick::DrawableClipUnits::~DrawableClipUnits(void)
363 {
364 }
365
operator ()(MagickCore::DrawingWand * context_) const366 void Magick::DrawableClipUnits::operator()(
367 MagickCore::DrawingWand * context_) const
368 {
369 DrawSetClipUnits(context_, _units);
370 }
371
units(const ClipPathUnits units_)372 void Magick::DrawableClipUnits::units(const ClipPathUnits units_)
373 {
374 _units = units_;
375 }
376
units(void) const377 Magick::ClipPathUnits Magick::DrawableClipUnits::units(void) const
378 {
379 return(_units);
380 }
381
copy() const382 Magick::DrawableBase* Magick::DrawableClipUnits::copy() const
383 {
384 return(new DrawableClipUnits(*this));
385 }
386
387
388 //
389 //Clip Path
390 //
391
392 // Pop (terminate) Clip path definition
~DrawablePopClipPath(void)393 Magick::DrawablePopClipPath::~DrawablePopClipPath ( void )
394 {
395 }
operator ()(MagickCore::DrawingWand * context_) const396 void Magick::DrawablePopClipPath::operator() ( MagickCore::DrawingWand * context_ ) const
397 {
398 DrawPopClipPath( context_ );
399 DrawPopDefs(context_);
400 }
copy() const401 Magick::DrawableBase* Magick::DrawablePopClipPath::copy() const
402 {
403 return new DrawablePopClipPath(*this);
404 }
405
406 // Push clip path definition
DrawablePushClipPath(const std::string & id_)407 Magick::DrawablePushClipPath::DrawablePushClipPath( const std::string &id_)
408 : _id(id_.c_str()) //multithread safe const char*
409 {
410 }
DrawablePushClipPath(const Magick::DrawablePushClipPath & original_)411 Magick::DrawablePushClipPath::DrawablePushClipPath
412 ( const Magick::DrawablePushClipPath& original_ ) //multithread safe const char*
413 : DrawableBase (original_),
414 _id(original_._id.c_str())
415 {
416 }
~DrawablePushClipPath(void)417 Magick::DrawablePushClipPath::~DrawablePushClipPath( void )
418 {
419 }
operator ()(MagickCore::DrawingWand * context_) const420 void Magick::DrawablePushClipPath::operator()
421 ( MagickCore::DrawingWand * context_ ) const
422 {
423 DrawPushDefs(context_);
424 DrawPushClipPath( context_, _id.c_str());
425 }
copy() const426 Magick::DrawableBase* Magick::DrawablePushClipPath::copy() const
427 {
428 return new DrawablePushClipPath(*this);
429 }
430 //
431 // ClipPath
432 //
DrawableClipPath(const std::string & id_)433 Magick::DrawableClipPath::DrawableClipPath( const std::string &id_ )
434 :_id(id_.c_str())
435 {
436 }
437
DrawableClipPath(const Magick::DrawableClipPath & original_)438 Magick::DrawableClipPath::DrawableClipPath ( const Magick::DrawableClipPath& original_ )
439 : DrawableBase (original_),
440 _id(original_._id.c_str())
441 {
442 }
~DrawableClipPath(void)443 Magick::DrawableClipPath::~DrawableClipPath( void )
444 {
445 }
operator ()(MagickCore::DrawingWand * context_) const446 void Magick::DrawableClipPath::operator()( MagickCore::DrawingWand * context_ ) const
447 {
448 (void) DrawSetClipPath( context_, _id.c_str());
449 }
copy() const450 Magick::DrawableBase* Magick::DrawableClipPath::copy() const
451 {
452 return new DrawableClipPath(*this);
453 }
454
455 // Circle
~DrawableCircle(void)456 Magick::DrawableCircle::~DrawableCircle ( void )
457 {
458 }
operator ()(MagickCore::DrawingWand * context_) const459 void Magick::DrawableCircle::operator()( MagickCore::DrawingWand * context_ ) const
460 {
461 DrawCircle( context_, _originX, _originY, _perimX, _perimY );
462 }
copy() const463 Magick::DrawableBase* Magick::DrawableCircle::copy() const
464 {
465 return new DrawableCircle(*this);
466 }
467
468 // Colorize at point using PaintMethod
~DrawableColor(void)469 Magick::DrawableColor::~DrawableColor( void )
470 {
471 }
operator ()(MagickCore::DrawingWand * context_) const472 void Magick::DrawableColor::operator()( MagickCore::DrawingWand * context_ ) const
473 {
474 DrawColor( context_, _x, _y, _paintMethod );
475 }
copy() const476 Magick::DrawableBase* Magick::DrawableColor::copy() const
477 {
478 return new DrawableColor(*this);
479 }
480
481 // Draw image at point
DrawableCompositeImage(double x_,double y_,double width_,double height_,const std::string & filename_,Magick::CompositeOperator composition_)482 Magick::DrawableCompositeImage::DrawableCompositeImage
483 ( double x_, double y_,
484 double width_, double height_,
485 const std::string &filename_,
486 Magick::CompositeOperator composition_ )
487 : _composition(composition_),
488 _x(x_),
489 _y(y_),
490 _width(width_),
491 _height(height_),
492 _image(new Image(filename_))
493 {
494 }
DrawableCompositeImage(double x_,double y_,double width_,double height_,const Magick::Image & image_,Magick::CompositeOperator composition_)495 Magick::DrawableCompositeImage::DrawableCompositeImage
496 ( double x_, double y_,
497 double width_, double height_,
498 const Magick::Image &image_,
499 Magick::CompositeOperator composition_ )
500 : _composition(composition_),
501 _x(x_),
502 _y(y_),
503 _width(width_),
504 _height(height_),
505 _image(new Image(image_))
506 {
507 }
DrawableCompositeImage(double x_,double y_,double width_,double height_,const std::string & filename_)508 Magick::DrawableCompositeImage::DrawableCompositeImage
509 ( double x_, double y_,
510 double width_, double height_,
511 const std::string &filename_ )
512 :_composition(CopyCompositeOp),
513 _x(x_),
514 _y(y_),
515 _width(width_),
516 _height(height_),
517 _image(new Image(filename_))
518 {
519 }
DrawableCompositeImage(double x_,double y_,double width_,double height_,const Magick::Image & image_)520 Magick::DrawableCompositeImage::DrawableCompositeImage
521 ( double x_, double y_,
522 double width_, double height_,
523 const Magick::Image &image_ )
524 :_composition(CopyCompositeOp),
525 _x(x_),
526 _y(y_),
527 _width(width_),
528 _height(height_),
529 _image(new Image(image_))
530 {
531 }
DrawableCompositeImage(double x_,double y_,const std::string & filename_)532 Magick::DrawableCompositeImage::DrawableCompositeImage
533 ( double x_, double y_,
534 const std::string &filename_ )
535 : _composition(CopyCompositeOp),
536 _x(x_),
537 _y(y_),
538 _width(0),
539 _height(0),
540 _image(new Image(filename_))
541 {
542 _width=_image->columns();
543 _height=_image->rows();
544 }
DrawableCompositeImage(double x_,double y_,const Magick::Image & image_)545 Magick::DrawableCompositeImage::DrawableCompositeImage
546 ( double x_, double y_,
547 const Magick::Image &image_ )
548 : _composition(CopyCompositeOp),
549 _x(x_),
550 _y(y_),
551 _width(0),
552 _height(0),
553 _image(new Image(image_))
554 {
555 _width=_image->columns();
556 _height=_image->rows();
557 }
558 // Copy constructor
DrawableCompositeImage(const Magick::DrawableCompositeImage & original_)559 Magick::DrawableCompositeImage::DrawableCompositeImage
560 ( const Magick::DrawableCompositeImage& original_ )
561 : Magick::DrawableBase(original_),
562 _composition(original_._composition),
563 _x(original_._x),
564 _y(original_._y),
565 _width(original_._width),
566 _height(original_._height),
567 _image(new Image(*original_._image))
568 {
569 }
~DrawableCompositeImage(void)570 Magick::DrawableCompositeImage::~DrawableCompositeImage( void )
571 {
572 delete _image;
573 }
574 // Assignment operator
operator =(const Magick::DrawableCompositeImage & original_)575 Magick::DrawableCompositeImage& Magick::DrawableCompositeImage::operator=
576 (const Magick::DrawableCompositeImage& original_ )
577 {
578 // If not being set to ourself
579 if ( this != &original_ )
580 {
581 _composition = original_._composition;
582 _x = original_._x;
583 _y = original_._y;
584 _width = original_._width;
585 _height = original_._height;
586 Image* temp_image = new Image(*original_._image);
587 delete _image;
588 _image = temp_image;
589 }
590 return *this;
591 }
filename(const std::string & filename_)592 void Magick::DrawableCompositeImage::filename( const std::string &filename_ )
593 {
594 Image* temp_image = new Image(filename_);
595 delete _image;
596 _image = temp_image;
597 }
filename(void) const598 std::string Magick::DrawableCompositeImage::filename( void ) const
599 {
600 return _image->fileName();
601 }
602
image(const Magick::Image & image_)603 void Magick::DrawableCompositeImage::image( const Magick::Image &image_ )
604 {
605 Image* temp_image = new Image(image_);
606 delete _image;
607 _image = temp_image;
608 }
image(void) const609 Magick::Image Magick::DrawableCompositeImage::image( void ) const
610 {
611 return *_image;
612 }
613
614 // Specify image format used to output Base64 inlined image data.
magick(std::string magick_)615 void Magick::DrawableCompositeImage::magick( std::string magick_ )
616 {
617 _image->magick( magick_ );
618 }
magick(void)619 std::string Magick::DrawableCompositeImage::magick( void )
620 {
621 return _image->magick();
622 }
623
operator ()(MagickCore::DrawingWand * context_) const624 void Magick::DrawableCompositeImage::operator()
625 ( MagickCore::DrawingWand * context_ ) const
626 {
627 MagickWand
628 *magick_wand;
629
630 magick_wand=NewMagickWandFromImage(_image->constImage());
631 (void) DrawComposite( context_, _composition, _x, _y, _width, _height,
632 magick_wand );
633 magick_wand=DestroyMagickWand(magick_wand);
634 }
635
copy() const636 Magick::DrawableBase* Magick::DrawableCompositeImage::copy() const
637 {
638 return new DrawableCompositeImage(*this);
639 }
640
DrawableDensity(const Point & density_)641 Magick::DrawableDensity::DrawableDensity(const Point &density_)
642 : _density(density_)
643 {
644 }
645
DrawableDensity(const std::string & density_)646 Magick::DrawableDensity::DrawableDensity(const std::string &density_)
647 : _density(density_)
648 {
649 }
650
~DrawableDensity(void)651 Magick::DrawableDensity::~DrawableDensity(void)
652 {
653 }
654
operator ()(MagickCore::DrawingWand * context_) const655 void Magick::DrawableDensity::operator()(
656 MagickCore::DrawingWand *context_) const
657 {
658 DrawSetDensity(context_,_density.c_str());
659 }
660
copy() const661 Magick::DrawableBase* Magick::DrawableDensity::copy() const
662 {
663 return(new DrawableDensity(*this));
664 }
665
666 // Ellipse
~DrawableEllipse(void)667 Magick::DrawableEllipse::~DrawableEllipse( void )
668 {
669 }
operator ()(MagickCore::DrawingWand * context_) const670 void Magick::DrawableEllipse::operator()
671 ( MagickCore::DrawingWand * context_ ) const
672 {
673 DrawEllipse( context_, _originX, _originY, _radiusX, _radiusY,
674 _arcStart, _arcEnd );
675 }
copy() const676 Magick::DrawableBase* Magick::DrawableEllipse::copy() const
677 {
678 return new DrawableEllipse(*this);
679 }
680
681 // Specify drawing fill color
DrawableFillColor(const Magick::Color & color_)682 Magick::DrawableFillColor::DrawableFillColor( const Magick::Color &color_ )
683 : _color(color_)
684 {
685 }
DrawableFillColor(const Magick::DrawableFillColor & original_)686 Magick::DrawableFillColor::DrawableFillColor
687 ( const Magick::DrawableFillColor& original_ )
688 : DrawableBase (original_),
689 _color(original_._color)
690 {
691 }
~DrawableFillColor(void)692 Magick::DrawableFillColor::~DrawableFillColor( void )
693 {
694 }
operator ()(MagickCore::DrawingWand * context_) const695 void Magick::DrawableFillColor::operator()
696 ( MagickCore::DrawingWand * context_ ) const
697 {
698 PixelInfo color = static_cast<PixelInfo>(_color);
699 PixelWand *pixel_wand=NewPixelWand();
700 PixelSetPixelColor(pixel_wand,&color);
701 DrawSetFillColor(context_,pixel_wand);
702 pixel_wand=DestroyPixelWand(pixel_wand);
703 }
copy() const704 Magick::DrawableBase* Magick::DrawableFillColor::copy() const
705 {
706 return new DrawableFillColor(*this);
707 }
708
709 /* DrawableFillPatternUrl */
DrawableFillPatternUrl(const std::string & url_)710 Magick::DrawableFillPatternUrl::DrawableFillPatternUrl(const std::string &url_)
711 : _url(url_)
712 {
713 }
714
DrawableFillPatternUrl(const Magick::DrawableFillPatternUrl & original_)715 Magick::DrawableFillPatternUrl::DrawableFillPatternUrl(
716 const Magick::DrawableFillPatternUrl& original_)
717 : DrawableBase(original_),
718 _url(original_._url)
719 {
720 }
721
~DrawableFillPatternUrl(void)722 Magick::DrawableFillPatternUrl::~DrawableFillPatternUrl(void)
723 {
724 }
725
operator ()(MagickCore::DrawingWand * context_) const726 void Magick::DrawableFillPatternUrl::operator()(
727 MagickCore::DrawingWand * context_) const
728 {
729 DrawSetFillPatternURL(context_, _url.c_str());
730 }
731
url(const std::string & url_)732 void Magick::DrawableFillPatternUrl::url(const std::string &url_)
733 {
734 _url = url_;
735 }
736
url(void) const737 std::string Magick::DrawableFillPatternUrl::url(void) const
738 {
739 return(_url);
740 }
741
copy() const742 Magick::DrawableBase* Magick::DrawableFillPatternUrl::copy() const
743 {
744 return(new DrawableFillPatternUrl(*this));
745 }
746
747 // Specify drawing fill fule
~DrawableFillRule(void)748 Magick::DrawableFillRule::~DrawableFillRule ( void )
749 {
750 }
operator ()(MagickCore::DrawingWand * context_) const751 void Magick::DrawableFillRule::operator()
752 ( MagickCore::DrawingWand * context_ ) const
753 {
754 DrawSetFillRule( context_, _fillRule );
755 }
copy() const756 Magick::DrawableBase* Magick::DrawableFillRule::copy() const
757 {
758 return new DrawableFillRule(*this);
759 }
760
~DrawableFillOpacity(void)761 Magick::DrawableFillOpacity::~DrawableFillOpacity(void)
762 {
763 }
764
operator ()(MagickCore::DrawingWand * context_) const765 void Magick::DrawableFillOpacity::operator()
766 (MagickCore::DrawingWand *context_) const
767 {
768 DrawSetFillOpacity(context_,_opacity);
769 }
770
copy() const771 Magick::DrawableBase* Magick::DrawableFillOpacity::copy() const
772 {
773 return new DrawableFillOpacity(*this);
774 }
775
776 // Specify text font
DrawableFont(const std::string & font_)777 Magick::DrawableFont::DrawableFont ( const std::string &font_ )
778 : _font(font_),
779 _family(),
780 _style(Magick::AnyStyle),
781 _weight(400),
782 _stretch(Magick::NormalStretch)
783 {
784 }
DrawableFont(const std::string & family_,Magick::StyleType style_,const unsigned int weight_,Magick::StretchType stretch_)785 Magick::DrawableFont::DrawableFont ( const std::string &family_,
786 Magick::StyleType style_,
787 const unsigned int weight_,
788 Magick::StretchType stretch_ )
789 : _font(),
790 _family(family_),
791 _style(style_),
792 _weight(weight_),
793 _stretch(stretch_)
794 {
795 }
DrawableFont(const Magick::DrawableFont & original_)796 Magick::DrawableFont::DrawableFont ( const Magick::DrawableFont& original_ )
797 : DrawableBase (original_),
798 _font(original_._font),
799 _family(original_._family),
800 _style(original_._style),
801 _weight(original_._weight),
802 _stretch(original_._stretch)
803 {
804 }
~DrawableFont(void)805 Magick::DrawableFont::~DrawableFont ( void )
806 {
807 }
operator ()(MagickCore::DrawingWand * context_) const808 void Magick::DrawableFont::operator()( MagickCore::DrawingWand * context_ ) const
809 {
810 // font
811 if(_font.length())
812 {
813 (void) DrawSetFont( context_, _font.c_str() );
814 }
815
816 if(_family.length())
817 {
818 // font-family
819 (void) DrawSetFontFamily( context_, _family.c_str() );
820
821 // font-style
822 DrawSetFontStyle( context_, _style );
823
824 // font-weight
825 DrawSetFontWeight( context_, _weight );
826
827 // font-stretch
828 DrawSetFontStretch( context_, _stretch );
829 }
830 }
copy() const831 Magick::DrawableBase* Magick::DrawableFont::copy() const
832 {
833 return new DrawableFont(*this);
834 }
835
836 // Specify text positioning gravity
~DrawableGravity(void)837 Magick::DrawableGravity::~DrawableGravity ( void )
838 {
839 }
operator ()(MagickCore::DrawingWand * context_) const840 void Magick::DrawableGravity::operator()
841 ( MagickCore::DrawingWand * context_ ) const
842 {
843 DrawSetGravity( context_, _gravity );
844 }
copy() const845 Magick::DrawableBase* Magick::DrawableGravity::copy() const
846 {
847 return new DrawableGravity(*this);
848 }
849
850 // Line
~DrawableLine(void)851 Magick::DrawableLine::~DrawableLine ( void )
852 {
853 }
operator ()(MagickCore::DrawingWand * context_) const854 void Magick::DrawableLine::operator()( MagickCore::DrawingWand * context_ ) const
855 {
856 DrawLine( context_, _startX, _startY, _endX, _endY );
857 }
copy() const858 Magick::DrawableBase* Magick::DrawableLine::copy() const
859 {
860 return new DrawableLine(*this);
861 }
862
863 // Drawable Path
DrawablePath(const VPathList & path_)864 Magick::DrawablePath::DrawablePath ( const VPathList &path_ )
865 : _path(path_)
866 {
867 }
DrawablePath(const Magick::DrawablePath & original_)868 Magick::DrawablePath::DrawablePath ( const Magick::DrawablePath& original_ )
869 : DrawableBase (original_),
870 _path(original_._path)
871 {
872 }
~DrawablePath(void)873 Magick::DrawablePath::~DrawablePath ( void )
874 {
875 }
operator ()(MagickCore::DrawingWand * context_) const876 void Magick::DrawablePath::operator()( MagickCore::DrawingWand * context_ ) const
877 {
878 DrawPathStart( context_ );
879
880 for( VPathList::const_iterator p = _path.begin();
881 p != _path.end(); p++ )
882 p->operator()( context_ ); // FIXME, how to quit loop on error?
883
884 DrawPathFinish( context_ );
885 }
copy() const886 Magick::DrawableBase* Magick::DrawablePath::copy() const
887 {
888 return new DrawablePath(*this);
889 }
890
891 // Point
~DrawablePoint(void)892 Magick::DrawablePoint::~DrawablePoint ( void )
893 {
894 }
operator ()(MagickCore::DrawingWand * context_) const895 void Magick::DrawablePoint::operator()( MagickCore::DrawingWand * context_ ) const
896 {
897 DrawPoint( context_, _x, _y );
898 }
copy() const899 Magick::DrawableBase* Magick::DrawablePoint::copy() const
900 {
901 return new DrawablePoint(*this);
902 }
903
904 // Text pointsize
~DrawablePointSize(void)905 Magick::DrawablePointSize::~DrawablePointSize ( void )
906 {
907 }
operator ()(MagickCore::DrawingWand * context_) const908 void Magick::DrawablePointSize::operator()
909 ( MagickCore::DrawingWand * context_ ) const
910 {
911 DrawSetFontSize( context_, _pointSize );
912 }
copy() const913 Magick::DrawableBase* Magick::DrawablePointSize::copy() const
914 {
915 return new DrawablePointSize(*this);
916 }
917
918 // Polygon (Coordinate list must contain at least three members)
DrawablePolygon(const CoordinateList & coordinates_)919 Magick::DrawablePolygon::DrawablePolygon ( const CoordinateList &coordinates_ )
920 : _coordinates(coordinates_)
921 {
922 }
DrawablePolygon(const Magick::DrawablePolygon & original_)923 Magick::DrawablePolygon::DrawablePolygon
924 ( const Magick::DrawablePolygon& original_ )
925 : DrawableBase (original_),
926 _coordinates(original_._coordinates)
927 {
928 }
~DrawablePolygon(void)929 Magick::DrawablePolygon::~DrawablePolygon ( void )
930 {
931 }
operator ()(MagickCore::DrawingWand * context_) const932 void Magick::DrawablePolygon::operator()
933 ( MagickCore::DrawingWand * context_ ) const
934 {
935 size_t num_coords = (size_t) _coordinates.size();
936 PointInfo *coordinates = new PointInfo[num_coords];
937
938 PointInfo *q = coordinates;
939 CoordinateList::const_iterator p = _coordinates.begin();
940
941 while( p != _coordinates.end() )
942 {
943 q->x = p->x();
944 q->y = p->y();
945 q++;
946 p++;
947 }
948
949 DrawPolygon( context_, num_coords, coordinates );
950 delete [] coordinates;
951 }
copy() const952 Magick::DrawableBase* Magick::DrawablePolygon::copy() const
953 {
954 return new DrawablePolygon(*this);
955 }
956
957 // Polyline (Coordinate list must contain at least three members)
DrawablePolyline(const CoordinateList & coordinates_)958 Magick::DrawablePolyline::DrawablePolyline
959 ( const CoordinateList &coordinates_ )
960 : _coordinates(coordinates_)
961 {
962 }
DrawablePolyline(const Magick::DrawablePolyline & original_)963 Magick::DrawablePolyline::DrawablePolyline
964 ( const Magick::DrawablePolyline& original_ )
965 : DrawableBase (original_),
966 _coordinates(original_._coordinates)
967 {
968 }
~DrawablePolyline(void)969 Magick::DrawablePolyline::~DrawablePolyline ( void )
970 {
971 }
operator ()(MagickCore::DrawingWand * context_) const972 void Magick::DrawablePolyline::operator()
973 ( MagickCore::DrawingWand * context_ ) const
974 {
975 size_t num_coords = (size_t) _coordinates.size();
976 PointInfo *coordinates = new PointInfo[num_coords];
977
978 PointInfo *q = coordinates;
979 CoordinateList::const_iterator p = _coordinates.begin();
980
981 while( p != _coordinates.end() )
982 {
983 q->x = p->x();
984 q->y = p->y();
985 q++;
986 p++;
987 }
988
989 DrawPolyline( context_, num_coords, coordinates );
990 delete [] coordinates;
991 }
copy() const992 Magick::DrawableBase* Magick::DrawablePolyline::copy() const
993 {
994 return new DrawablePolyline(*this);
995 }
996
997 // Pop Graphic Context
~DrawablePopGraphicContext(void)998 Magick::DrawablePopGraphicContext::~DrawablePopGraphicContext ( void )
999 {
1000 }
operator ()(MagickCore::DrawingWand * context_) const1001 void Magick::DrawablePopGraphicContext::operator()
1002 ( MagickCore::DrawingWand * context_ ) const
1003 {
1004 PopDrawingWand( context_ );
1005 }
copy() const1006 Magick::DrawableBase* Magick::DrawablePopGraphicContext::copy() const
1007 {
1008 return new DrawablePopGraphicContext(*this);
1009 }
1010
1011 // Push Graphic Context
~DrawablePushGraphicContext(void)1012 Magick::DrawablePushGraphicContext::~DrawablePushGraphicContext ( void )
1013 {
1014 }
operator ()(MagickCore::DrawingWand * context_) const1015 void Magick::DrawablePushGraphicContext::operator()
1016 ( MagickCore::DrawingWand * context_ ) const
1017 {
1018 PushDrawingWand( context_ );
1019 }
copy() const1020 Magick::DrawableBase* Magick::DrawablePushGraphicContext::copy() const
1021 {
1022 return new DrawablePushGraphicContext(*this);
1023 }
1024
1025 // Pop (terminate) Pattern definition
~DrawablePopPattern(void)1026 Magick::DrawablePopPattern::~DrawablePopPattern ( void )
1027 {
1028 }
operator ()(MagickCore::DrawingWand * context_) const1029 void Magick::DrawablePopPattern::operator()
1030 ( MagickCore::DrawingWand * context_ ) const
1031 {
1032 (void) DrawPopPattern( context_ );
1033 }
copy() const1034 Magick::DrawableBase* Magick::DrawablePopPattern::copy() const
1035 {
1036 return new DrawablePopPattern(*this);
1037 }
1038
1039 // Push Pattern definition
DrawablePushPattern(const std::string & id_,ssize_t x_,ssize_t y_,size_t width_,size_t height_)1040 Magick::DrawablePushPattern::DrawablePushPattern
1041 ( const std::string &id_, ssize_t x_, ssize_t y_,
1042 size_t width_, size_t height_ )
1043 : _id(id_),
1044 _x(x_),
1045 _y(y_),
1046 _width(width_),
1047 _height(height_)
1048 {
1049 }
DrawablePushPattern(const Magick::DrawablePushPattern & original_)1050 Magick::DrawablePushPattern::DrawablePushPattern
1051 ( const Magick::DrawablePushPattern& original_ )
1052 : DrawableBase (original_),
1053 _id(original_._id),
1054 _x(original_._x),
1055 _y(original_._y),
1056 _width(original_._width),
1057 _height(original_._height)
1058 {
1059 }
~DrawablePushPattern(void)1060 Magick::DrawablePushPattern::~DrawablePushPattern ( void )
1061 {
1062 }
operator ()(MagickCore::DrawingWand * context_) const1063 void Magick::DrawablePushPattern::operator()
1064 ( MagickCore::DrawingWand * context_ ) const
1065 {
1066 (void) DrawPushPattern( context_, _id.c_str(), _x, _y, _width, _height );
1067 }
copy() const1068 Magick::DrawableBase* Magick::DrawablePushPattern::copy() const
1069 {
1070 return new DrawablePushPattern(*this);
1071 }
1072
1073 // Rectangle
~DrawableRectangle(void)1074 Magick::DrawableRectangle::~DrawableRectangle ( void )
1075 {
1076 }
operator ()(MagickCore::DrawingWand * context_) const1077 void Magick::DrawableRectangle::operator()
1078 ( MagickCore::DrawingWand * context_ ) const
1079 {
1080 DrawRectangle( context_, _upperLeftX, _upperLeftY,
1081 _lowerRightX, _lowerRightY );
1082 }
copy() const1083 Magick::DrawableBase* Magick::DrawableRectangle::copy() const
1084 {
1085 return new DrawableRectangle(*this);
1086 }
1087
1088 // Apply Rotation
~DrawableRotation(void)1089 Magick::DrawableRotation::~DrawableRotation ( void )
1090 {
1091 }
operator ()(MagickCore::DrawingWand * context_) const1092 void Magick::DrawableRotation::operator()
1093 ( MagickCore::DrawingWand * context_ ) const
1094 {
1095 DrawRotate( context_, _angle );
1096 }
copy() const1097 Magick::DrawableBase* Magick::DrawableRotation::copy() const
1098 {
1099 return new DrawableRotation(*this);
1100 }
1101
1102 // Round Rectangle
~DrawableRoundRectangle(void)1103 Magick::DrawableRoundRectangle::~DrawableRoundRectangle ( void )
1104 {
1105 }
operator ()(MagickCore::DrawingWand * context_) const1106 void Magick::DrawableRoundRectangle::operator()
1107 ( MagickCore::DrawingWand * context_ ) const
1108 {
1109 DrawRoundRectangle(context_,_upperLeftX,_upperLeftY,_lowerRightX,
1110 _lowerRightY,_cornerWidth, _cornerHeight);
1111 }
copy() const1112 Magick::DrawableBase* Magick::DrawableRoundRectangle::copy() const
1113 {
1114 return new DrawableRoundRectangle(*this);
1115 }
1116
1117 // Apply Scaling
~DrawableScaling(void)1118 Magick::DrawableScaling::~DrawableScaling ( void )
1119 {
1120 }
operator ()(MagickCore::DrawingWand * context_) const1121 void Magick::DrawableScaling::operator()
1122 ( MagickCore::DrawingWand * context_ ) const
1123 {
1124 DrawScale( context_, _x, _y );
1125 }
copy() const1126 Magick::DrawableBase* Magick::DrawableScaling::copy() const
1127 {
1128 return new DrawableScaling(*this);
1129 }
1130
1131 // Apply Skew in the X direction
~DrawableSkewX(void)1132 Magick::DrawableSkewX::~DrawableSkewX ( void )
1133 {
1134 }
operator ()(MagickCore::DrawingWand * context_) const1135 void Magick::DrawableSkewX::operator()
1136 ( MagickCore::DrawingWand * context_ ) const
1137 {
1138 DrawSkewX( context_, _angle );
1139 }
copy() const1140 Magick::DrawableBase* Magick::DrawableSkewX::copy() const
1141 {
1142 return new DrawableSkewX(*this);
1143 }
1144
1145 // Apply Skew in the Y direction
~DrawableSkewY(void)1146 Magick::DrawableSkewY::~DrawableSkewY ( void )
1147 {
1148 }
operator ()(MagickCore::DrawingWand * context_) const1149 void Magick::DrawableSkewY::operator()( MagickCore::DrawingWand * context_ ) const
1150 {
1151 DrawSkewY( context_, _angle );
1152 }
copy() const1153 Magick::DrawableBase* Magick::DrawableSkewY::copy() const
1154 {
1155 return new DrawableSkewY(*this);
1156 }
1157
1158 /* DrawableStrokeDashArray */
DrawableStrokeDashArray(const double * dasharray_)1159 Magick::DrawableStrokeDashArray::DrawableStrokeDashArray(const double* dasharray_)
1160 : _size(0),
1161 _dasharray(0)
1162 {
1163 dasharray(dasharray_);
1164 }
1165
DrawableStrokeDashArray(const Magick::DrawableStrokeDashArray & original_)1166 Magick::DrawableStrokeDashArray::DrawableStrokeDashArray(
1167 const Magick::DrawableStrokeDashArray& original_)
1168 : DrawableBase (original_),
1169 _size(original_._size),
1170 _dasharray(new double[_size+1])
1171 {
1172 // Copy elements
1173 {
1174 for (size_t i=0; i < _size; i++)
1175 _dasharray[i]=original_._dasharray[i];
1176 _dasharray[_size]=0.0;
1177 }
1178 }
1179
~DrawableStrokeDashArray(void)1180 Magick::DrawableStrokeDashArray::~DrawableStrokeDashArray(void)
1181 {
1182 delete [] _dasharray;
1183 _size=0;
1184 _dasharray=(double *) NULL;
1185 }
1186
operator =(const Magick::DrawableStrokeDashArray & original_)1187 Magick::DrawableStrokeDashArray& Magick::DrawableStrokeDashArray::operator=(
1188 const Magick::DrawableStrokeDashArray &original_)
1189 {
1190 if (this != &original_)
1191 {
1192 delete [] _dasharray;
1193 _size=original_._size;
1194 _dasharray = new double[_size+1];
1195 // Copy elements
1196 {
1197 for (size_t i=0; i < _size; i++)
1198 _dasharray[i]=original_._dasharray[i];
1199 _dasharray[_size]=0.0;
1200 }
1201 }
1202 return(*this);
1203 }
1204
operator ()(MagickCore::DrawingWand * context_) const1205 void Magick::DrawableStrokeDashArray::operator()(
1206 MagickCore::DrawingWand *context_) const
1207 {
1208 (void) DrawSetStrokeDashArray(context_,(const unsigned long) _size,
1209 _dasharray);
1210 }
1211
copy() const1212 Magick::DrawableBase *Magick::DrawableStrokeDashArray::copy() const
1213 {
1214 return(new DrawableStrokeDashArray(*this));
1215 }
1216
dasharray(const double * dasharray_)1217 void Magick::DrawableStrokeDashArray::dasharray(const double* dasharray_)
1218 {
1219 size_t
1220 n;
1221
1222 delete [] _dasharray;
1223 _size=0;
1224 _dasharray=0;
1225
1226 if (dasharray_ != (const double *) NULL)
1227 {
1228 const double
1229 *p;
1230
1231 // Count elements in dash array
1232 n=0;
1233 {
1234 p = dasharray_;
1235 while(*p++ != 0.0)
1236 n++;
1237 }
1238 _size=n;
1239
1240 // Allocate elements
1241 _dasharray=new double[_size+1];
1242 // Copy elements
1243 {
1244 for (size_t i=0; i < _size; i++)
1245 _dasharray[i]=dasharray_[i];
1246 _dasharray[_size]=0.0;
1247 }
1248 }
1249 }
1250
dasharray(void) const1251 const double* Magick::DrawableStrokeDashArray::dasharray(void) const
1252 {
1253 return(_dasharray);
1254 }
1255
1256 /* DrawableStrokeDashOffset */
~DrawableStrokeDashOffset(void)1257 Magick::DrawableStrokeDashOffset::~DrawableStrokeDashOffset(void)
1258 {
1259 }
1260
operator ()(MagickCore::DrawingWand * context_) const1261 void Magick::DrawableStrokeDashOffset::operator()
1262 ( MagickCore::DrawingWand * context_) const
1263 {
1264 DrawSetStrokeDashOffset(context_,_offset);
1265 }
1266
copy() const1267 Magick::DrawableBase* Magick::DrawableStrokeDashOffset::copy() const
1268 {
1269 return(new DrawableStrokeDashOffset(*this));
1270 }
1271
offset(const double offset_)1272 void Magick::DrawableStrokeDashOffset::offset(const double offset_)
1273 {
1274 _offset=offset_;
1275 }
1276
offset(void) const1277 double Magick::DrawableStrokeDashOffset::offset(void) const
1278 {
1279 return(_offset);
1280 }
1281
1282 // Stroke linecap
~DrawableStrokeLineCap(void)1283 Magick::DrawableStrokeLineCap::~DrawableStrokeLineCap ( void )
1284 {
1285 }
operator ()(MagickCore::DrawingWand * context_) const1286 void Magick::DrawableStrokeLineCap::operator()
1287 ( MagickCore::DrawingWand * context_ ) const
1288 {
1289 DrawSetStrokeLineCap( context_, _linecap );
1290 }
copy() const1291 Magick::DrawableBase* Magick::DrawableStrokeLineCap::copy() const
1292 {
1293 return new DrawableStrokeLineCap(*this);
1294 }
1295
1296 // Stroke linejoin
~DrawableStrokeLineJoin(void)1297 Magick::DrawableStrokeLineJoin::~DrawableStrokeLineJoin ( void )
1298 {
1299 }
operator ()(MagickCore::DrawingWand * context_) const1300 void Magick::DrawableStrokeLineJoin::operator()
1301 ( MagickCore::DrawingWand * context_ ) const
1302 {
1303 DrawSetStrokeLineJoin( context_, _linejoin );
1304 }
copy() const1305 Magick::DrawableBase* Magick::DrawableStrokeLineJoin::copy() const
1306 {
1307 return new DrawableStrokeLineJoin(*this);
1308 }
1309
1310 // Stroke miterlimit
~DrawableMiterLimit(void)1311 Magick::DrawableMiterLimit::~DrawableMiterLimit ( void )
1312 {
1313 }
operator ()(MagickCore::DrawingWand * context_) const1314 void Magick::DrawableMiterLimit::operator()
1315 ( MagickCore::DrawingWand * context_ ) const
1316 {
1317 DrawSetStrokeMiterLimit( context_, _miterlimit );
1318 }
copy() const1319 Magick::DrawableBase* Magick::DrawableMiterLimit::copy() const
1320 {
1321 return new DrawableMiterLimit(*this);
1322 }
1323
1324
1325 /* DrawableStrokePatternUrl */
DrawableStrokePatternUrl(const std::string & url_)1326 Magick::DrawableStrokePatternUrl::DrawableStrokePatternUrl(
1327 const std::string &url_)
1328 : _url(url_)
1329 {
1330 }
1331
DrawableStrokePatternUrl(const Magick::DrawableStrokePatternUrl & original_)1332 Magick::DrawableStrokePatternUrl::DrawableStrokePatternUrl(
1333 const Magick::DrawableStrokePatternUrl& original_)
1334 : DrawableBase(original_),
1335 _url(original_._url)
1336 {
1337 }
1338
~DrawableStrokePatternUrl(void)1339 Magick::DrawableStrokePatternUrl::~DrawableStrokePatternUrl(void)
1340 {
1341 }
1342
operator ()(MagickCore::DrawingWand * context_) const1343 void Magick::DrawableStrokePatternUrl::operator()(
1344 MagickCore::DrawingWand * context_) const
1345 {
1346 DrawSetStrokePatternURL(context_, _url.c_str());
1347 }
1348
url(const std::string & url_)1349 void Magick::DrawableStrokePatternUrl::url(const std::string &url_)
1350 {
1351 _url = url_;
1352 }
1353
url(void) const1354 std::string Magick::DrawableStrokePatternUrl::url(void) const
1355 {
1356 return(_url);
1357 }
1358
copy() const1359 Magick::DrawableBase* Magick::DrawableStrokePatternUrl::copy() const
1360 {
1361 return(new DrawableStrokePatternUrl(*this));
1362 }
1363
1364 // Stroke antialias
~DrawableStrokeAntialias(void)1365 Magick::DrawableStrokeAntialias::~DrawableStrokeAntialias ( void )
1366 {
1367 }
operator ()(MagickCore::DrawingWand * context_) const1368 void Magick::DrawableStrokeAntialias::operator()
1369 ( MagickCore::DrawingWand * context_ ) const
1370 {
1371 DrawSetStrokeAntialias( context_, static_cast<MagickBooleanType>
1372 (_flag ? MagickTrue : MagickFalse) );
1373 }
copy() const1374 Magick::DrawableBase* Magick::DrawableStrokeAntialias::copy() const
1375 {
1376 return new DrawableStrokeAntialias(*this);
1377 }
1378
1379 // Stroke color
DrawableStrokeColor(const Magick::Color & color_)1380 Magick::DrawableStrokeColor::DrawableStrokeColor
1381 ( const Magick::Color &color_ )
1382 : _color(color_)
1383 {
1384 }
DrawableStrokeColor(const Magick::DrawableStrokeColor & original_)1385 Magick::DrawableStrokeColor::DrawableStrokeColor
1386 ( const Magick::DrawableStrokeColor& original_ )
1387 : DrawableBase (original_),
1388 _color(original_._color)
1389 {
1390 }
~DrawableStrokeColor(void)1391 Magick::DrawableStrokeColor::~DrawableStrokeColor ( void )
1392 {
1393 }
operator ()(MagickCore::DrawingWand * context_) const1394 void Magick::DrawableStrokeColor::operator()
1395 ( MagickCore::DrawingWand * context_ ) const
1396 {
1397 PixelInfo color = static_cast<PixelInfo>(_color);
1398 PixelWand *pixel_wand=NewPixelWand();
1399 PixelSetPixelColor(pixel_wand,&color);
1400 DrawSetStrokeColor(context_,pixel_wand);
1401 pixel_wand=DestroyPixelWand(pixel_wand);
1402 }
copy() const1403 Magick::DrawableBase* Magick::DrawableStrokeColor::copy() const
1404 {
1405 return new DrawableStrokeColor(*this);
1406 }
1407
~DrawableStrokeOpacity(void)1408 Magick::DrawableStrokeOpacity::~DrawableStrokeOpacity(void)
1409 {
1410 }
1411
operator ()(MagickCore::DrawingWand * context_) const1412 void Magick::DrawableStrokeOpacity::operator()
1413 (MagickCore::DrawingWand * context_) const
1414 {
1415 DrawSetStrokeOpacity(context_,_opacity);
1416 }
1417
copy() const1418 Magick::DrawableBase* Magick::DrawableStrokeOpacity::copy() const
1419 {
1420 return new DrawableStrokeOpacity(*this);
1421 }
1422
1423 // Stroke width
~DrawableStrokeWidth(void)1424 Magick::DrawableStrokeWidth::~DrawableStrokeWidth ( void )
1425 {
1426 }
operator ()(MagickCore::DrawingWand * context_) const1427 void Magick::DrawableStrokeWidth::operator()
1428 ( MagickCore::DrawingWand * context_ ) const
1429 {
1430 DrawSetStrokeWidth( context_, _width );
1431 }
copy() const1432 Magick::DrawableBase* Magick::DrawableStrokeWidth::copy() const
1433 {
1434 return new DrawableStrokeWidth(*this);
1435 }
1436
1437 // Draw text at point
DrawableText(const double x_,const double y_,const std::string & text_)1438 Magick::DrawableText::DrawableText ( const double x_, const double y_,
1439 const std::string &text_ )
1440 : _x(x_),
1441 _y(y_),
1442 _text(text_),
1443 _encoding()
1444 {
1445 }
DrawableText(const double x_,const double y_,const std::string & text_,const std::string & encoding_)1446 Magick::DrawableText::DrawableText ( const double x_, const double y_,
1447 const std::string &text_, const std::string &encoding_)
1448 : _x(x_),
1449 _y(y_),
1450 _text(text_),
1451 _encoding(encoding_)
1452 {
1453 }
DrawableText(const Magick::DrawableText & original_)1454 Magick::DrawableText::DrawableText( const Magick::DrawableText& original_ )
1455 : DrawableBase (original_),
1456 _x(original_._x),
1457 _y(original_._y),
1458 _text(original_._text),
1459 _encoding(original_._encoding)
1460 {
1461 }
~DrawableText(void)1462 Magick::DrawableText::~DrawableText ( void )
1463 {
1464 }
operator ()(MagickCore::DrawingWand * context_) const1465 void Magick::DrawableText::operator()
1466 ( MagickCore::DrawingWand * context_ ) const
1467 {
1468 DrawSetTextEncoding( context_, _encoding.c_str() );
1469 DrawAnnotation( context_, _x, _y,
1470 reinterpret_cast<const unsigned char*>(_text.c_str()) );
1471 }
copy() const1472 Magick::DrawableBase* Magick::DrawableText::copy() const
1473 {
1474 return new DrawableText(*this);
1475 }
1476
1477 /* DrawableTextAlignment */
DrawableTextAlignment(Magick::AlignType alignment_)1478 Magick::DrawableTextAlignment::DrawableTextAlignment(
1479 Magick::AlignType alignment_)
1480 : _alignment(alignment_)
1481 {
1482 }
1483
DrawableTextAlignment(const Magick::DrawableTextAlignment & original_)1484 Magick::DrawableTextAlignment::DrawableTextAlignment
1485 (const Magick::DrawableTextAlignment &original_)
1486 : DrawableBase(original_),
1487 _alignment(original_._alignment)
1488 {
1489 }
1490
~DrawableTextAlignment(void)1491 Magick::DrawableTextAlignment::~DrawableTextAlignment(void)
1492 {
1493 }
1494
operator ()(MagickCore::DrawingWand * context_) const1495 void Magick::DrawableTextAlignment::operator()(
1496 MagickCore::DrawingWand * context_) const
1497 {
1498 DrawSetTextAlignment(context_, _alignment);
1499 }
1500
alignment(AlignType alignment_)1501 void Magick::DrawableTextAlignment::alignment(AlignType alignment_)
1502 {
1503 _alignment=alignment_;
1504 }
1505
alignment(void) const1506 Magick::AlignType Magick::DrawableTextAlignment::alignment(void) const
1507 {
1508 return(_alignment);
1509 }
1510
copy() const1511 Magick::DrawableBase* Magick::DrawableTextAlignment::copy() const
1512 {
1513 return new DrawableTextAlignment(*this);
1514 }
1515
1516 // Text antialias
DrawableTextAntialias(bool flag_)1517 Magick::DrawableTextAntialias::DrawableTextAntialias ( bool flag_ )
1518 : _flag(flag_)
1519 {
1520 }
DrawableTextAntialias(const Magick::DrawableTextAntialias & original_)1521 Magick::DrawableTextAntialias::DrawableTextAntialias( const Magick::DrawableTextAntialias &original_ )
1522 : DrawableBase (original_),
1523 _flag(original_._flag)
1524 {
1525 }
~DrawableTextAntialias(void)1526 Magick::DrawableTextAntialias::~DrawableTextAntialias ( void )
1527 {
1528 }
operator ()(MagickCore::DrawingWand * context_) const1529 void Magick::DrawableTextAntialias::operator()
1530 ( MagickCore::DrawingWand * context_ ) const
1531 {
1532 DrawSetTextAntialias( context_, static_cast<MagickBooleanType>
1533 (_flag ? MagickTrue : MagickFalse) );
1534 }
copy() const1535 Magick::DrawableBase* Magick::DrawableTextAntialias::copy() const
1536 {
1537 return new DrawableTextAntialias(*this);
1538 }
1539
1540
1541 // Decoration (text decoration)
DrawableTextDecoration(Magick::DecorationType decoration_)1542 Magick::DrawableTextDecoration::DrawableTextDecoration
1543 ( Magick::DecorationType decoration_ )
1544 : _decoration(decoration_)
1545 {
1546 }
DrawableTextDecoration(const Magick::DrawableTextDecoration & original_)1547 Magick::DrawableTextDecoration::DrawableTextDecoration
1548 ( const Magick::DrawableTextDecoration &original_ )
1549 : DrawableBase (original_),
1550 _decoration(original_._decoration)
1551 {
1552 }
~DrawableTextDecoration(void)1553 Magick::DrawableTextDecoration::~DrawableTextDecoration( void )
1554 {
1555 }
operator ()(MagickCore::DrawingWand * context_) const1556 void Magick::DrawableTextDecoration::operator()
1557 ( MagickCore::DrawingWand * context_ ) const
1558 {
1559 DrawSetTextDecoration( context_, _decoration );
1560 }
copy() const1561 Magick::DrawableBase* Magick::DrawableTextDecoration::copy() const
1562 {
1563 return new DrawableTextDecoration(*this);
1564 }
1565
1566 // DrawableTextDirection
DrawableTextDirection(DirectionType direction_)1567 Magick::DrawableTextDirection::DrawableTextDirection(
1568 DirectionType direction_)
1569 : _direction(direction_)
1570 {
1571 }
1572
~DrawableTextDirection(void)1573 Magick::DrawableTextDirection::~DrawableTextDirection(void)
1574 {
1575 }
1576
operator ()(MagickCore::DrawingWand * context_) const1577 void Magick::DrawableTextDirection::operator()(
1578 MagickCore::DrawingWand *context_) const
1579 {
1580 DrawSetTextDirection(context_,_direction);
1581 }
1582
direction(DirectionType direction_)1583 void Magick::DrawableTextDirection::direction(DirectionType direction_)
1584 {
1585 _direction=direction_;
1586 }
1587
direction(void) const1588 Magick::DirectionType Magick::DrawableTextDirection::direction(void) const
1589 {
1590 return(_direction);
1591 }
1592
copy() const1593 Magick::DrawableBase *Magick::DrawableTextDirection::copy() const
1594 {
1595 return new DrawableTextDirection(*this);
1596 }
1597
1598 // DrawableTextInterlineSpacing
DrawableTextInterlineSpacing(double spacing_)1599 Magick::DrawableTextInterlineSpacing::DrawableTextInterlineSpacing(
1600 double spacing_)
1601 : _spacing(spacing_)
1602 {
1603 }
1604
~DrawableTextInterlineSpacing(void)1605 Magick::DrawableTextInterlineSpacing::~DrawableTextInterlineSpacing(void)
1606 {
1607 }
1608
operator ()(MagickCore::DrawingWand * context_) const1609 void Magick::DrawableTextInterlineSpacing::operator()(
1610 MagickCore::DrawingWand *context_) const
1611 {
1612 DrawSetTextInterlineSpacing(context_,_spacing);
1613 }
1614
spacing(double spacing_)1615 void Magick::DrawableTextInterlineSpacing::spacing(double spacing_)
1616 {
1617 _spacing=spacing_;
1618 }
1619
spacing(void) const1620 double Magick::DrawableTextInterlineSpacing::spacing(void) const
1621 {
1622 return(_spacing);
1623 }
1624
copy() const1625 Magick::DrawableBase *Magick::DrawableTextInterlineSpacing::copy() const
1626 {
1627 return new DrawableTextInterlineSpacing(*this);
1628 }
1629
1630 // DrawableTextInterwordSpacing
DrawableTextInterwordSpacing(double spacing_)1631 Magick::DrawableTextInterwordSpacing::DrawableTextInterwordSpacing(
1632 double spacing_)
1633 : _spacing(spacing_)
1634 {
1635 }
1636
~DrawableTextInterwordSpacing(void)1637 Magick::DrawableTextInterwordSpacing::~DrawableTextInterwordSpacing(void)
1638 {
1639 }
1640
operator ()(MagickCore::DrawingWand * context_) const1641 void Magick::DrawableTextInterwordSpacing::operator()(
1642 MagickCore::DrawingWand *context_) const
1643 {
1644 DrawSetTextInterwordSpacing(context_,_spacing);
1645 }
1646
spacing(double spacing_)1647 void Magick::DrawableTextInterwordSpacing::spacing(double spacing_)
1648 {
1649 _spacing=spacing_;
1650 }
1651
spacing(void) const1652 double Magick::DrawableTextInterwordSpacing::spacing(void) const
1653 {
1654 return(_spacing);
1655 }
1656
copy() const1657 Magick::DrawableBase *Magick::DrawableTextInterwordSpacing::copy() const
1658 {
1659 return new DrawableTextInterwordSpacing(*this);
1660 }
1661
1662 // DrawableTextKerning
DrawableTextKerning(double kerning_)1663 Magick::DrawableTextKerning::DrawableTextKerning(
1664 double kerning_)
1665 : _kerning(kerning_)
1666 {
1667 }
1668
~DrawableTextKerning(void)1669 Magick::DrawableTextKerning::~DrawableTextKerning(void)
1670 {
1671 }
1672
operator ()(MagickCore::DrawingWand * context_) const1673 void Magick::DrawableTextKerning::operator()(
1674 MagickCore::DrawingWand *context_) const
1675 {
1676 DrawSetTextKerning(context_,_kerning);
1677 }
1678
kerning(double kerning_)1679 void Magick::DrawableTextKerning::kerning(double kerning_)
1680 {
1681 _kerning=kerning_;
1682 }
1683
kerning(void) const1684 double Magick::DrawableTextKerning::kerning(void) const
1685 {
1686 return(_kerning);
1687 }
1688
copy() const1689 Magick::DrawableBase *Magick::DrawableTextKerning::copy() const
1690 {
1691 return new DrawableTextKerning(*this);
1692 }
1693
1694 // Set text undercolor
DrawableTextUnderColor(const Magick::Color & color_)1695 Magick::DrawableTextUnderColor::DrawableTextUnderColor
1696 ( const Magick::Color &color_ )
1697 : _color(color_)
1698 {
1699 }
DrawableTextUnderColor(const Magick::DrawableTextUnderColor & original_)1700 Magick::DrawableTextUnderColor::DrawableTextUnderColor
1701 ( const Magick::DrawableTextUnderColor& original_ )
1702 : DrawableBase (original_),
1703 _color(original_._color)
1704 {
1705 }
~DrawableTextUnderColor(void)1706 Magick::DrawableTextUnderColor::~DrawableTextUnderColor ( void )
1707 {
1708 }
operator ()(MagickCore::DrawingWand * context_) const1709 void Magick::DrawableTextUnderColor::operator()
1710 ( MagickCore::DrawingWand * context_ ) const
1711 {
1712 PixelInfo color = static_cast<PixelInfo>(_color);
1713 PixelWand *pixel_wand=NewPixelWand();
1714 PixelSetPixelColor(pixel_wand,&color);
1715 DrawSetTextUnderColor(context_,pixel_wand);
1716 pixel_wand=DestroyPixelWand(pixel_wand);
1717 }
copy() const1718 Magick::DrawableBase* Magick::DrawableTextUnderColor::copy() const
1719 {
1720 return new DrawableTextUnderColor(*this);
1721 }
1722
1723 // Apply Translation
~DrawableTranslation(void)1724 Magick::DrawableTranslation::~DrawableTranslation ( void )
1725 {
1726 }
operator ()(MagickCore::DrawingWand * context_) const1727 void Magick::DrawableTranslation::operator()
1728 ( MagickCore::DrawingWand * context_ ) const
1729 {
1730 DrawTranslate( context_, _x, _y );
1731 }
copy() const1732 Magick::DrawableBase* Magick::DrawableTranslation::copy() const
1733 {
1734 return new DrawableTranslation(*this);
1735 }
1736
1737 // Set the size of the viewbox
~DrawableViewbox(void)1738 Magick::DrawableViewbox::~DrawableViewbox ( void )
1739 {
1740 }
operator ()(MagickCore::DrawingWand * context_) const1741 void Magick::DrawableViewbox::operator()
1742 ( MagickCore::DrawingWand * context_ ) const
1743 {
1744 DrawSetViewbox( context_, _x1, _y1, _x2, _y2 );
1745 }
copy() const1746 Magick::DrawableBase* Magick::DrawableViewbox::copy() const
1747 {
1748 return new DrawableViewbox(*this);
1749 }
1750
1751 //
1752 // Path Classes
1753 //
1754
1755 //
1756 // PathArcArgs
1757 //
operator ==(const Magick::PathArcArgs &,const Magick::PathArcArgs &)1758 MagickPPExport int Magick::operator == ( const Magick::PathArcArgs& /*left_*/,
1759 const Magick::PathArcArgs& /*right_*/ )
1760 {
1761 return ( 1 );
1762 }
operator !=(const Magick::PathArcArgs &,const Magick::PathArcArgs &)1763 MagickPPExport int Magick::operator != ( const Magick::PathArcArgs& /*left_*/,
1764 const Magick::PathArcArgs& /*right_*/ )
1765 {
1766 return ( 0 );
1767 }
operator >(const Magick::PathArcArgs &,const Magick::PathArcArgs &)1768 MagickPPExport int Magick::operator > ( const Magick::PathArcArgs& /*left_*/,
1769 const Magick::PathArcArgs& /*right_*/ )
1770 {
1771 return ( 0 );
1772 }
operator <(const Magick::PathArcArgs &,const Magick::PathArcArgs &)1773 MagickPPExport int Magick::operator < ( const Magick::PathArcArgs& /*left_*/,
1774 const Magick::PathArcArgs& /*right_*/ )
1775 {
1776 return ( false );
1777 }
operator >=(const Magick::PathArcArgs & left_,const Magick::PathArcArgs & right_)1778 MagickPPExport int Magick::operator >= ( const Magick::PathArcArgs& left_,
1779 const Magick::PathArcArgs& right_ )
1780 {
1781 return ( ( left_ > right_ ) || ( left_ == right_ ) );
1782 }
operator <=(const Magick::PathArcArgs & left_,const Magick::PathArcArgs & right_)1783 MagickPPExport int Magick::operator <= ( const Magick::PathArcArgs& left_,
1784 const Magick::PathArcArgs& right_ )
1785 {
1786 return ( ( left_ < right_ ) || ( left_ == right_ ) );
1787 }
1788 // Default constructor
PathArcArgs(void)1789 Magick::PathArcArgs::PathArcArgs( void )
1790 : _radiusX(0),
1791 _radiusY(0),
1792 _xAxisRotation(0),
1793 _largeArcFlag(false),
1794 _sweepFlag(false),
1795 _x(0),
1796 _y(0)
1797 {
1798 }
1799 // Normal constructor
PathArcArgs(double radiusX_,double radiusY_,double xAxisRotation_,bool largeArcFlag_,bool sweepFlag_,double x_,double y_)1800 Magick::PathArcArgs::PathArcArgs( double radiusX_, double radiusY_,
1801 double xAxisRotation_, bool largeArcFlag_,
1802 bool sweepFlag_, double x_, double y_ )
1803 : _radiusX(radiusX_),
1804 _radiusY(radiusY_),
1805 _xAxisRotation(xAxisRotation_),
1806 _largeArcFlag(largeArcFlag_),
1807 _sweepFlag(sweepFlag_),
1808 _x(x_),
1809 _y(y_)
1810 {
1811 }
1812 // Copy constructor
PathArcArgs(const Magick::PathArcArgs & original_)1813 Magick::PathArcArgs::PathArcArgs( const Magick::PathArcArgs &original_ )
1814 : _radiusX(original_._radiusX),
1815 _radiusY(original_._radiusY),
1816 _xAxisRotation(original_._xAxisRotation),
1817 _largeArcFlag(original_._largeArcFlag),
1818 _sweepFlag(original_._sweepFlag),
1819 _x(original_._x),
1820 _y(original_._y)
1821 {
1822 }
1823 // Destructor
~PathArcArgs(void)1824 Magick::PathArcArgs::~PathArcArgs ( void )
1825 {
1826 }
1827
1828 // Path Arc
PathArcAbs(const Magick::PathArcArgs & coordinates_)1829 Magick::PathArcAbs::PathArcAbs ( const Magick::PathArcArgs &coordinates_ )
1830 : _coordinates(1,coordinates_)
1831 {
1832 }
PathArcAbs(const PathArcArgsList & coordinates_)1833 Magick::PathArcAbs::PathArcAbs ( const PathArcArgsList &coordinates_ )
1834 : _coordinates(coordinates_)
1835 {
1836 }
PathArcAbs(const Magick::PathArcAbs & original_)1837 Magick::PathArcAbs::PathArcAbs ( const Magick::PathArcAbs& original_ )
1838 : VPathBase (original_),
1839 _coordinates(original_._coordinates)
1840 {
1841 }
~PathArcAbs(void)1842 Magick::PathArcAbs::~PathArcAbs ( void )
1843 {
1844 }
operator ()(MagickCore::DrawingWand * context_) const1845 void Magick::PathArcAbs::operator()( MagickCore::DrawingWand * context_ ) const
1846 {
1847 for( PathArcArgsList::const_iterator p = _coordinates.begin();
1848 p != _coordinates.end(); p++ )
1849 {
1850 DrawPathEllipticArcAbsolute( context_, p->radiusX(), p->radiusY(),
1851 p->xAxisRotation(), (MagickBooleanType) p->largeArcFlag(),
1852 (MagickBooleanType) p->sweepFlag(), p->x(), p->y() );
1853 }
1854 }
copy() const1855 Magick::VPathBase* Magick::PathArcAbs::copy() const
1856 {
1857 return new PathArcAbs(*this);
1858 }
1859
PathArcRel(const Magick::PathArcArgs & coordinates_)1860 Magick::PathArcRel::PathArcRel ( const Magick::PathArcArgs &coordinates_ )
1861 : _coordinates(1,coordinates_)
1862 {
1863 }
PathArcRel(const PathArcArgsList & coordinates_)1864 Magick::PathArcRel::PathArcRel ( const PathArcArgsList &coordinates_ )
1865 : _coordinates(coordinates_)
1866 {
1867 }
PathArcRel(const Magick::PathArcRel & original_)1868 Magick::PathArcRel::PathArcRel ( const Magick::PathArcRel& original_ )
1869 : VPathBase (original_),
1870 _coordinates(original_._coordinates)
1871 {
1872 }
~PathArcRel(void)1873 Magick::PathArcRel::~PathArcRel ( void )
1874 {
1875 }
operator ()(MagickCore::DrawingWand * context_) const1876 void Magick::PathArcRel::operator()( MagickCore::DrawingWand * context_ ) const
1877 {
1878 for( PathArcArgsList::const_iterator p = _coordinates.begin();
1879 p != _coordinates.end(); p++ )
1880 {
1881 DrawPathEllipticArcRelative( context_, p->radiusX(), p->radiusY(),
1882 p->xAxisRotation(), (MagickBooleanType) p->largeArcFlag(),
1883 (MagickBooleanType) p->sweepFlag(), p->x(), p->y() );
1884 }
1885 }
copy() const1886 Magick::VPathBase* Magick::PathArcRel::copy() const
1887 {
1888 return new PathArcRel(*this);
1889 }
1890
1891 //
1892 // Path Closepath
1893 //
~PathClosePath(void)1894 Magick::PathClosePath::~PathClosePath ( void )
1895 {
1896 }
operator ()(MagickCore::DrawingWand * context_) const1897 void Magick::PathClosePath::operator()( MagickCore::DrawingWand * context_ ) const
1898 {
1899 DrawPathClose( context_ );
1900 }
copy() const1901 Magick::VPathBase* Magick::PathClosePath::copy() const
1902 {
1903 return new PathClosePath(*this);
1904 }
1905
1906 //
1907 // Path Curveto (Cubic Bezier)
1908 //
operator ==(const Magick::PathCurvetoArgs &,const Magick::PathCurvetoArgs &)1909 MagickPPExport int Magick::operator == ( const Magick::PathCurvetoArgs& /*left_*/,
1910 const Magick::PathCurvetoArgs& /*right_*/ )
1911 {
1912 return ( 1 );
1913 }
operator !=(const Magick::PathCurvetoArgs &,const Magick::PathCurvetoArgs &)1914 MagickPPExport int Magick::operator != ( const Magick::PathCurvetoArgs& /*left_*/,
1915 const Magick::PathCurvetoArgs& /*right_*/ )
1916 {
1917 return ( 0 );
1918 }
operator >(const Magick::PathCurvetoArgs &,const Magick::PathCurvetoArgs &)1919 MagickPPExport int Magick::operator > ( const Magick::PathCurvetoArgs& /*left_*/,
1920 const Magick::PathCurvetoArgs& /*right_*/ )
1921 {
1922 return ( 0 );
1923 }
operator <(const Magick::PathCurvetoArgs &,const Magick::PathCurvetoArgs &)1924 MagickPPExport int Magick::operator < ( const Magick::PathCurvetoArgs& /*left_*/,
1925 const Magick::PathCurvetoArgs& /*right_*/ )
1926 {
1927 return ( false );
1928 }
operator >=(const Magick::PathCurvetoArgs & left_,const Magick::PathCurvetoArgs & right_)1929 MagickPPExport int Magick::operator >= ( const Magick::PathCurvetoArgs& left_,
1930 const Magick::PathCurvetoArgs& right_ )
1931 {
1932 return ( ( left_ > right_ ) || ( left_ == right_ ) );
1933 }
operator <=(const Magick::PathCurvetoArgs & left_,const Magick::PathCurvetoArgs & right_)1934 MagickPPExport int Magick::operator <= ( const Magick::PathCurvetoArgs& left_,
1935 const Magick::PathCurvetoArgs& right_ )
1936 {
1937 return ( ( left_ < right_ ) || ( left_ == right_ ) );
1938 }
1939 // Default constructor
PathCurvetoArgs(void)1940 Magick::PathCurvetoArgs::PathCurvetoArgs( void )
1941 : _x1(0),
1942 _y1(0),
1943 _x2(0),
1944 _y2(0),
1945 _x(0),
1946 _y(0)
1947 {
1948 }
1949 // Normal constructor
PathCurvetoArgs(double x1_,double y1_,double x2_,double y2_,double x_,double y_)1950 Magick::PathCurvetoArgs::PathCurvetoArgs( double x1_, double y1_,
1951 double x2_, double y2_,
1952 double x_, double y_ )
1953 : _x1(x1_),
1954 _y1(y1_),
1955 _x2(x2_),
1956 _y2(y2_),
1957 _x(x_),
1958 _y(y_)
1959 {
1960 }
1961 // Copy constructor
PathCurvetoArgs(const PathCurvetoArgs & original_)1962 Magick::PathCurvetoArgs::PathCurvetoArgs( const PathCurvetoArgs &original_ )
1963 : _x1(original_._x1),
1964 _y1(original_._y1),
1965 _x2(original_._x2),
1966 _y2(original_._y2),
1967 _x(original_._x),
1968 _y(original_._y)
1969 {
1970 }
1971 // Destructor
~PathCurvetoArgs(void)1972 Magick::PathCurvetoArgs::~PathCurvetoArgs ( void )
1973 {
1974 }
1975
PathCurvetoAbs(const Magick::PathCurvetoArgs & args_)1976 Magick::PathCurvetoAbs::PathCurvetoAbs ( const Magick::PathCurvetoArgs &args_ )
1977 : _args(1,args_)
1978 {
1979 }
PathCurvetoAbs(const PathCurveToArgsList & args_)1980 Magick::PathCurvetoAbs::PathCurvetoAbs ( const PathCurveToArgsList &args_ )
1981 : _args(args_)
1982 {
1983 }
PathCurvetoAbs(const Magick::PathCurvetoAbs & original_)1984 Magick::PathCurvetoAbs::PathCurvetoAbs
1985 ( const Magick::PathCurvetoAbs& original_ )
1986 : VPathBase (original_),
1987 _args(original_._args)
1988 {
1989 }
~PathCurvetoAbs(void)1990 Magick::PathCurvetoAbs::~PathCurvetoAbs ( void )
1991 {
1992 }
operator ()(MagickCore::DrawingWand * context_) const1993 void Magick::PathCurvetoAbs::operator()
1994 ( MagickCore::DrawingWand * context_ ) const
1995 {
1996 for( PathCurveToArgsList::const_iterator p = _args.begin();
1997 p != _args.end(); p++ )
1998 {
1999 DrawPathCurveToAbsolute( context_, p->x1(), p->y1(), p->x2(), p->y2(),
2000 p->x(), p->y() );
2001 }
2002 }
copy() const2003 Magick::VPathBase* Magick::PathCurvetoAbs::copy() const
2004 {
2005 return new PathCurvetoAbs(*this);
2006 }
PathCurvetoRel(const Magick::PathCurvetoArgs & args_)2007 Magick::PathCurvetoRel::PathCurvetoRel ( const Magick::PathCurvetoArgs &args_ )
2008 : _args(1,args_)
2009 {
2010 }
PathCurvetoRel(const PathCurveToArgsList & args_)2011 Magick::PathCurvetoRel::PathCurvetoRel ( const PathCurveToArgsList &args_ )
2012 : _args(args_)
2013 {
2014 }
PathCurvetoRel(const Magick::PathCurvetoRel & original_)2015 Magick::PathCurvetoRel::PathCurvetoRel
2016 ( const Magick::PathCurvetoRel& original_ )
2017 : VPathBase (original_),
2018 _args(original_._args)
2019 {
2020 }
~PathCurvetoRel(void)2021 Magick::PathCurvetoRel::~PathCurvetoRel ( void )
2022 {
2023 }
operator ()(MagickCore::DrawingWand * context_) const2024 void Magick::PathCurvetoRel::operator()
2025 ( MagickCore::DrawingWand * context_ ) const
2026 {
2027 for( PathCurveToArgsList::const_iterator p = _args.begin();
2028 p != _args.end(); p++ )
2029 {
2030 DrawPathCurveToRelative( context_, p->x1(), p->y1(), p->x2(), p->y2(),
2031 p->x(), p->y() );
2032 }
2033 }
copy() const2034 Magick::VPathBase* Magick::PathCurvetoRel::copy() const
2035 {
2036 return new PathCurvetoRel(*this);
2037 }
PathSmoothCurvetoAbs(const Magick::Coordinate & coordinates_)2038 Magick::PathSmoothCurvetoAbs::PathSmoothCurvetoAbs
2039 ( const Magick::Coordinate &coordinates_ )
2040 : _coordinates(1,coordinates_)
2041 {
2042 }
PathSmoothCurvetoAbs(const CoordinateList & coordinates_)2043 Magick::PathSmoothCurvetoAbs::PathSmoothCurvetoAbs
2044 ( const CoordinateList &coordinates_ )
2045 : _coordinates(coordinates_)
2046 {
2047 }
PathSmoothCurvetoAbs(const Magick::PathSmoothCurvetoAbs & original_)2048 Magick::PathSmoothCurvetoAbs::PathSmoothCurvetoAbs
2049 ( const Magick::PathSmoothCurvetoAbs& original_ )
2050 : VPathBase (original_),
2051 _coordinates(original_._coordinates)
2052 {
2053 }
~PathSmoothCurvetoAbs(void)2054 Magick::PathSmoothCurvetoAbs::~PathSmoothCurvetoAbs ( void )
2055 {
2056 }
operator ()(MagickCore::DrawingWand * context_) const2057 void Magick::PathSmoothCurvetoAbs::operator()
2058 ( MagickCore::DrawingWand * context_ ) const
2059 {
2060 for( CoordinateList::const_iterator p = _coordinates.begin();
2061 p != _coordinates.end(); p++ )
2062 {
2063 double x2 = p->x();
2064 double y2 = p->y();
2065 p++;
2066 if (p == _coordinates.end() )
2067 break;
2068 DrawPathCurveToSmoothAbsolute( context_, x2, y2, p->x(), p->y() );
2069 }
2070 }
copy() const2071 Magick::VPathBase* Magick::PathSmoothCurvetoAbs::copy() const
2072 {
2073 return new PathSmoothCurvetoAbs(*this);
2074 }
PathSmoothCurvetoRel(const Magick::Coordinate & coordinates_)2075 Magick::PathSmoothCurvetoRel::PathSmoothCurvetoRel
2076 ( const Magick::Coordinate &coordinates_ )
2077 : _coordinates(1,coordinates_)
2078 {
2079 }
PathSmoothCurvetoRel(const CoordinateList & coordinates_)2080 Magick::PathSmoothCurvetoRel::PathSmoothCurvetoRel
2081 ( const CoordinateList &coordinates_ )
2082 : _coordinates(coordinates_)
2083 {
2084 }
PathSmoothCurvetoRel(const Magick::PathSmoothCurvetoRel & original_)2085 Magick::PathSmoothCurvetoRel::PathSmoothCurvetoRel
2086 ( const Magick::PathSmoothCurvetoRel& original_ )
2087 : VPathBase (original_),
2088 _coordinates(original_._coordinates)
2089 {
2090 }
~PathSmoothCurvetoRel(void)2091 Magick::PathSmoothCurvetoRel::~PathSmoothCurvetoRel ( void )
2092 {
2093 }
operator ()(MagickCore::DrawingWand * context_) const2094 void Magick::PathSmoothCurvetoRel::operator()
2095 ( MagickCore::DrawingWand * context_ ) const
2096 {
2097 for( CoordinateList::const_iterator p = _coordinates.begin();
2098 p != _coordinates.end(); p++ )
2099 {
2100 double x2 = p->x();
2101 double y2 = p->y();
2102 p++;
2103 if (p == _coordinates.end() )
2104 break;
2105 DrawPathCurveToSmoothRelative( context_, x2, y2, p->x(), p->y() );
2106 }
2107 }
copy() const2108 Magick::VPathBase* Magick::PathSmoothCurvetoRel::copy() const
2109 {
2110 return new PathSmoothCurvetoRel(*this);
2111 }
2112
2113 //
2114 // Quadratic Curveto (Quadratic Bezier)
2115 //
operator ==(const Magick::PathQuadraticCurvetoArgs &,const Magick::PathQuadraticCurvetoArgs &)2116 MagickPPExport int Magick::operator ==
2117 ( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
2118 const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
2119 {
2120 return ( 1 );
2121 }
operator !=(const Magick::PathQuadraticCurvetoArgs &,const Magick::PathQuadraticCurvetoArgs &)2122 MagickPPExport int Magick::operator !=
2123 ( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
2124 const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
2125 {
2126 return ( 0 );
2127 }
operator >(const Magick::PathQuadraticCurvetoArgs &,const Magick::PathQuadraticCurvetoArgs &)2128 MagickPPExport int Magick::operator >
2129 ( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
2130 const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
2131 {
2132 return ( 0 );
2133 }
operator <(const Magick::PathQuadraticCurvetoArgs &,const Magick::PathQuadraticCurvetoArgs &)2134 MagickPPExport int Magick::operator <
2135 ( const Magick::PathQuadraticCurvetoArgs& /*left_*/,
2136 const Magick::PathQuadraticCurvetoArgs& /*right_*/ )
2137 {
2138 return ( 0 );
2139 }
operator >=(const Magick::PathQuadraticCurvetoArgs & left_,const Magick::PathQuadraticCurvetoArgs & right_)2140 MagickPPExport int Magick::operator >=
2141 ( const Magick::PathQuadraticCurvetoArgs& left_,
2142 const Magick::PathQuadraticCurvetoArgs& right_ )
2143 {
2144 return ( ( left_ > right_ ) || ( left_ == right_ ) );
2145 }
operator <=(const Magick::PathQuadraticCurvetoArgs & left_,const Magick::PathQuadraticCurvetoArgs & right_)2146 MagickPPExport int Magick::operator <=
2147 ( const Magick::PathQuadraticCurvetoArgs& left_,
2148 const Magick::PathQuadraticCurvetoArgs& right_ )
2149 {
2150 return ( ( left_ < right_ ) || ( left_ == right_ ) );
2151 }
2152 // Default Constructor
PathQuadraticCurvetoArgs(void)2153 Magick::PathQuadraticCurvetoArgs::PathQuadraticCurvetoArgs( void )
2154 : _x1(0),
2155 _y1(0),
2156 _x(0),
2157 _y(0)
2158 {
2159 }
2160 // Normal Constructor
PathQuadraticCurvetoArgs(double x1_,double y1_,double x_,double y_)2161 Magick::PathQuadraticCurvetoArgs::PathQuadraticCurvetoArgs( double x1_,
2162 double y1_,
2163 double x_,
2164 double y_ )
2165 : _x1(x1_),
2166 _y1(y1_),
2167 _x(x_),
2168 _y(y_)
2169 {
2170 }
2171 // Copy Constructor
PathQuadraticCurvetoArgs(const PathQuadraticCurvetoArgs & original_)2172 Magick::PathQuadraticCurvetoArgs::PathQuadraticCurvetoArgs( const PathQuadraticCurvetoArgs &original_ )
2173 : _x1(original_._x1),
2174 _y1(original_._y1),
2175 _x(original_._x),
2176 _y(original_._y)
2177 {
2178 }
2179 // Destructor
~PathQuadraticCurvetoArgs(void)2180 Magick::PathQuadraticCurvetoArgs::~PathQuadraticCurvetoArgs ( void )
2181 {
2182 }
2183
PathQuadraticCurvetoAbs(const Magick::PathQuadraticCurvetoArgs & args_)2184 Magick::PathQuadraticCurvetoAbs::PathQuadraticCurvetoAbs
2185 ( const Magick::PathQuadraticCurvetoArgs &args_ )
2186 : _args(1,args_)
2187 {
2188 }
PathQuadraticCurvetoAbs(const PathQuadraticCurvetoArgsList & args_)2189 Magick::PathQuadraticCurvetoAbs::PathQuadraticCurvetoAbs
2190 ( const PathQuadraticCurvetoArgsList &args_ )
2191 : _args(args_)
2192 {
2193 }
PathQuadraticCurvetoAbs(const Magick::PathQuadraticCurvetoAbs & original_)2194 Magick::PathQuadraticCurvetoAbs::PathQuadraticCurvetoAbs
2195 ( const Magick::PathQuadraticCurvetoAbs& original_ )
2196 : VPathBase (original_),
2197 _args(original_._args)
2198 {
2199 }
~PathQuadraticCurvetoAbs(void)2200 Magick::PathQuadraticCurvetoAbs::~PathQuadraticCurvetoAbs ( void )
2201 {
2202 }
operator ()(MagickCore::DrawingWand * context_) const2203 void Magick::PathQuadraticCurvetoAbs::operator()
2204 ( MagickCore::DrawingWand * context_ ) const
2205 {
2206 for( PathQuadraticCurvetoArgsList::const_iterator p = _args.begin();
2207 p != _args.end(); p++ )
2208 {
2209 DrawPathCurveToQuadraticBezierAbsolute( context_, p->x1(), p->y1(),
2210 p->x(), p->y() );
2211 }
2212 }
copy() const2213 Magick::VPathBase* Magick::PathQuadraticCurvetoAbs::copy() const
2214 {
2215 return new PathQuadraticCurvetoAbs(*this);
2216 }
PathQuadraticCurvetoRel(const Magick::PathQuadraticCurvetoArgs & args_)2217 Magick::PathQuadraticCurvetoRel::PathQuadraticCurvetoRel
2218 ( const Magick::PathQuadraticCurvetoArgs &args_ )
2219 : _args(1,args_)
2220 {
2221 }
PathQuadraticCurvetoRel(const PathQuadraticCurvetoArgsList & args_)2222 Magick::PathQuadraticCurvetoRel::PathQuadraticCurvetoRel
2223 ( const PathQuadraticCurvetoArgsList &args_ )
2224 : _args(args_)
2225 {
2226 }
PathQuadraticCurvetoRel(const Magick::PathQuadraticCurvetoRel & original_)2227 Magick::PathQuadraticCurvetoRel::PathQuadraticCurvetoRel
2228 ( const Magick::PathQuadraticCurvetoRel& original_ )
2229 : VPathBase (original_),
2230 _args(original_._args)
2231 {
2232 }
~PathQuadraticCurvetoRel(void)2233 Magick::PathQuadraticCurvetoRel::~PathQuadraticCurvetoRel ( void )
2234 {
2235 }
operator ()(MagickCore::DrawingWand * context_) const2236 void Magick::PathQuadraticCurvetoRel::operator()
2237 ( MagickCore::DrawingWand * context_ ) const
2238 {
2239 for( PathQuadraticCurvetoArgsList::const_iterator p = _args.begin();
2240 p != _args.end(); p++ )
2241 {
2242 DrawPathCurveToQuadraticBezierRelative( context_, p->x1(), p->y1(),
2243 p->x(), p->y() );
2244 }
2245 }
copy() const2246 Magick::VPathBase* Magick::PathQuadraticCurvetoRel::copy() const
2247 {
2248 return new PathQuadraticCurvetoRel(*this);
2249 }
PathSmoothQuadraticCurvetoAbs(const Magick::Coordinate & coordinate_)2250 Magick::PathSmoothQuadraticCurvetoAbs::PathSmoothQuadraticCurvetoAbs
2251 ( const Magick::Coordinate &coordinate_ )
2252 : _coordinates(1,coordinate_)
2253 {
2254 }
PathSmoothQuadraticCurvetoAbs(const CoordinateList & coordinates_)2255 Magick::PathSmoothQuadraticCurvetoAbs::PathSmoothQuadraticCurvetoAbs
2256 ( const CoordinateList &coordinates_ )
2257 : _coordinates(coordinates_)
2258 {
2259 }
PathSmoothQuadraticCurvetoAbs(const Magick::PathSmoothQuadraticCurvetoAbs & original_)2260 Magick::PathSmoothQuadraticCurvetoAbs::PathSmoothQuadraticCurvetoAbs
2261 ( const Magick::PathSmoothQuadraticCurvetoAbs& original_ )
2262 : VPathBase (original_),
2263 _coordinates(original_._coordinates)
2264 {
2265 }
~PathSmoothQuadraticCurvetoAbs(void)2266 Magick::PathSmoothQuadraticCurvetoAbs::~PathSmoothQuadraticCurvetoAbs ( void )
2267 {
2268 }
operator ()(MagickCore::DrawingWand * context_) const2269 void Magick::PathSmoothQuadraticCurvetoAbs::operator()
2270 ( MagickCore::DrawingWand * context_ ) const
2271 {
2272 for( CoordinateList::const_iterator p = _coordinates.begin();
2273 p != _coordinates.end(); p++ )
2274 {
2275 DrawPathCurveToQuadraticBezierSmoothAbsolute( context_, p->x(), p->y() );
2276 }
2277 }
copy() const2278 Magick::VPathBase* Magick::PathSmoothQuadraticCurvetoAbs::copy() const
2279 {
2280 return new PathSmoothQuadraticCurvetoAbs(*this);
2281 }
PathSmoothQuadraticCurvetoRel(const Magick::Coordinate & coordinate_)2282 Magick::PathSmoothQuadraticCurvetoRel::PathSmoothQuadraticCurvetoRel
2283 ( const Magick::Coordinate &coordinate_ )
2284 : _coordinates(1,coordinate_)
2285 {
2286 }
PathSmoothQuadraticCurvetoRel(const CoordinateList & coordinates_)2287 Magick::PathSmoothQuadraticCurvetoRel::PathSmoothQuadraticCurvetoRel
2288 ( const CoordinateList &coordinates_ )
2289 : _coordinates(coordinates_)
2290 {
2291 }
PathSmoothQuadraticCurvetoRel(const PathSmoothQuadraticCurvetoRel & original_)2292 Magick::PathSmoothQuadraticCurvetoRel::PathSmoothQuadraticCurvetoRel
2293 ( const PathSmoothQuadraticCurvetoRel& original_ )
2294 : VPathBase (original_),
2295 _coordinates(original_._coordinates)
2296 {
2297 }
~PathSmoothQuadraticCurvetoRel(void)2298 Magick::PathSmoothQuadraticCurvetoRel::~PathSmoothQuadraticCurvetoRel ( void )
2299 {
2300 }
operator ()(MagickCore::DrawingWand * context_) const2301 void Magick::PathSmoothQuadraticCurvetoRel::operator()
2302 ( MagickCore::DrawingWand * context_ ) const
2303 {
2304 for( CoordinateList::const_iterator p = _coordinates.begin();
2305 p != _coordinates.end(); p++ )
2306 {
2307 DrawPathCurveToQuadraticBezierSmoothRelative( context_, p->x(), p->y() );
2308 }
2309 }
copy() const2310 Magick::VPathBase* Magick::PathSmoothQuadraticCurvetoRel::copy() const
2311 {
2312 return new PathSmoothQuadraticCurvetoRel(*this);
2313 }
2314
2315 //
2316 // Path Lineto
2317 //
PathLinetoAbs(const Magick::Coordinate & coordinate_)2318 Magick::PathLinetoAbs::PathLinetoAbs ( const Magick::Coordinate& coordinate_ )
2319 : _coordinates(1,coordinate_)
2320 {
2321 }
PathLinetoAbs(const CoordinateList & coordinates_)2322 Magick::PathLinetoAbs::PathLinetoAbs ( const CoordinateList &coordinates_ )
2323 : _coordinates(coordinates_)
2324 {
2325 }
PathLinetoAbs(const Magick::PathLinetoAbs & original_)2326 Magick::PathLinetoAbs::PathLinetoAbs ( const Magick::PathLinetoAbs& original_ )
2327 : VPathBase (original_),
2328 _coordinates(original_._coordinates)
2329 {
2330 }
~PathLinetoAbs(void)2331 Magick::PathLinetoAbs::~PathLinetoAbs ( void )
2332 {
2333 }
operator ()(MagickCore::DrawingWand * context_) const2334 void Magick::PathLinetoAbs::operator()( MagickCore::DrawingWand * context_ ) const
2335 {
2336 for( CoordinateList::const_iterator p = _coordinates.begin();
2337 p != _coordinates.end(); p++ )
2338 {
2339 DrawPathLineToAbsolute( context_, p->x(), p->y() );
2340 }
2341 }
copy() const2342 Magick::VPathBase* Magick::PathLinetoAbs::copy() const
2343 {
2344 return new PathLinetoAbs(*this);
2345 }
PathLinetoRel(const Magick::Coordinate & coordinate_)2346 Magick::PathLinetoRel::PathLinetoRel ( const Magick::Coordinate& coordinate_ )
2347 : _coordinates(1,coordinate_)
2348 {
2349 }
PathLinetoRel(const CoordinateList & coordinates_)2350 Magick::PathLinetoRel::PathLinetoRel ( const CoordinateList &coordinates_ )
2351 : _coordinates(coordinates_)
2352 {
2353 }
PathLinetoRel(const Magick::PathLinetoRel & original_)2354 Magick::PathLinetoRel::PathLinetoRel ( const Magick::PathLinetoRel& original_ )
2355 : VPathBase (original_),
2356 _coordinates(original_._coordinates)
2357 {
2358 }
~PathLinetoRel(void)2359 Magick::PathLinetoRel::~PathLinetoRel ( void )
2360 {
2361 }
operator ()(MagickCore::DrawingWand * context_) const2362 void Magick::PathLinetoRel::operator()( MagickCore::DrawingWand * context_ ) const
2363 {
2364 for( CoordinateList::const_iterator p = _coordinates.begin();
2365 p != _coordinates.end(); p++ )
2366 {
2367 DrawPathLineToRelative( context_, p->x(), p->y() );
2368 }
2369 }
copy() const2370 Magick::VPathBase* Magick::PathLinetoRel::copy() const
2371 {
2372 return new PathLinetoRel(*this);
2373 }
2374
2375 //
2376 // Path Horizontal Lineto
2377 //
2378
~PathLinetoHorizontalAbs(void)2379 Magick::PathLinetoHorizontalAbs::~PathLinetoHorizontalAbs ( void )
2380 {
2381 }
operator ()(MagickCore::DrawingWand * context_) const2382 void Magick::PathLinetoHorizontalAbs::operator()
2383 ( MagickCore::DrawingWand * context_ ) const
2384 {
2385 DrawPathLineToHorizontalAbsolute( context_, _x );
2386 }
copy() const2387 Magick::VPathBase* Magick::PathLinetoHorizontalAbs::copy() const
2388 {
2389 return new PathLinetoHorizontalAbs(*this);
2390 }
~PathLinetoHorizontalRel(void)2391 Magick::PathLinetoHorizontalRel::~PathLinetoHorizontalRel ( void )
2392 {
2393 }
operator ()(MagickCore::DrawingWand * context_) const2394 void Magick::PathLinetoHorizontalRel::operator()
2395 ( MagickCore::DrawingWand * context_ ) const
2396 {
2397 DrawPathLineToHorizontalRelative( context_, _x );
2398 }
copy() const2399 Magick::VPathBase* Magick::PathLinetoHorizontalRel::copy() const
2400 {
2401 return new PathLinetoHorizontalRel(*this);
2402 }
2403
2404 //
2405 // Path Vertical Lineto
2406 //
~PathLinetoVerticalAbs(void)2407 Magick::PathLinetoVerticalAbs::~PathLinetoVerticalAbs ( void )
2408 {
2409 }
operator ()(MagickCore::DrawingWand * context_) const2410 void Magick::PathLinetoVerticalAbs::operator()
2411 ( MagickCore::DrawingWand * context_ ) const
2412 {
2413 DrawPathLineToVerticalAbsolute( context_, _y );
2414 }
copy() const2415 Magick::VPathBase* Magick::PathLinetoVerticalAbs::copy() const
2416 {
2417 return new PathLinetoVerticalAbs(*this);
2418 }
~PathLinetoVerticalRel(void)2419 Magick::PathLinetoVerticalRel::~PathLinetoVerticalRel ( void )
2420 {
2421 }
operator ()(MagickCore::DrawingWand * context_) const2422 void Magick::PathLinetoVerticalRel::operator()
2423 ( MagickCore::DrawingWand * context_ ) const
2424 {
2425 DrawPathLineToVerticalRelative( context_, _y );
2426 }
copy() const2427 Magick::VPathBase* Magick::PathLinetoVerticalRel::copy() const
2428 {
2429 return new PathLinetoVerticalRel(*this);
2430 }
2431
2432 //
2433 // Path Moveto
2434 //
2435
PathMovetoAbs(const Magick::Coordinate & coordinate_)2436 Magick::PathMovetoAbs::PathMovetoAbs ( const Magick::Coordinate &coordinate_ )
2437 : _coordinates(1,coordinate_)
2438 {
2439 }
PathMovetoAbs(const CoordinateList & coordinates_)2440 Magick::PathMovetoAbs::PathMovetoAbs ( const CoordinateList &coordinates_ )
2441 : _coordinates(coordinates_)
2442 {
2443 }
PathMovetoAbs(const Magick::PathMovetoAbs & original_)2444 Magick::PathMovetoAbs::PathMovetoAbs ( const Magick::PathMovetoAbs& original_ )
2445 : VPathBase (original_),
2446 _coordinates(original_._coordinates)
2447 {
2448 }
~PathMovetoAbs(void)2449 Magick::PathMovetoAbs::~PathMovetoAbs ( void )
2450 {
2451 }
operator ()(MagickCore::DrawingWand * context_) const2452 void Magick::PathMovetoAbs::operator()( MagickCore::DrawingWand * context_ ) const
2453 {
2454 for( CoordinateList::const_iterator p = _coordinates.begin();
2455 p != _coordinates.end(); p++ )
2456 {
2457 DrawPathMoveToAbsolute( context_, p->x(), p->y() );
2458 }
2459 }
copy() const2460 Magick::VPathBase* Magick::PathMovetoAbs::copy() const
2461 {
2462 return new PathMovetoAbs(*this);
2463 }
PathMovetoRel(const Magick::Coordinate & coordinate_)2464 Magick::PathMovetoRel::PathMovetoRel ( const Magick::Coordinate &coordinate_ )
2465 : _coordinates(1,coordinate_)
2466 {
2467 }
PathMovetoRel(const CoordinateList & coordinates_)2468 Magick::PathMovetoRel::PathMovetoRel ( const CoordinateList &coordinates_ )
2469 : _coordinates(coordinates_)
2470 {
2471 }
PathMovetoRel(const Magick::PathMovetoRel & original_)2472 Magick::PathMovetoRel::PathMovetoRel ( const Magick::PathMovetoRel& original_ )
2473 : VPathBase (original_),
2474 _coordinates(original_._coordinates)
2475 {
2476 }
~PathMovetoRel(void)2477 Magick::PathMovetoRel::~PathMovetoRel ( void )
2478 {
2479 }
operator ()(MagickCore::DrawingWand * context_) const2480 void Magick::PathMovetoRel::operator()( MagickCore::DrawingWand * context_ ) const
2481 {
2482 for( CoordinateList::const_iterator p = _coordinates.begin();
2483 p != _coordinates.end(); p++ )
2484 {
2485 DrawPathMoveToRelative( context_, p->x(), p->y() );
2486 }
2487 }
copy() const2488 Magick::VPathBase* Magick::PathMovetoRel::copy() const
2489 {
2490 return new PathMovetoRel(*this);
2491 }
2492
2493 #if defined(EXPLICIT_TEMPLATE_INSTANTIATION)
2494 // template class std::vector<Magick::Coordinate>;
2495 // template class std::vector<const Magick::Drawable>;
2496 // template class std::vector<const Magick::PathArcArgs>;
2497 // template class std::vector<const Magick::PathCurvetoArgs>;
2498 // template class std::vector<const Magick::PathQuadraticCurvetoArgs>;
2499 // template class std::vector<const Magick::VPath>;
2500 #endif
2501