1
// This may look like C code, but it is really -*- C++ -*-
3
// Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002
5
// Definition of Drawable (Graphic objects)
7
// The technique used for instantiating classes which derive from STL
8
// templates is described in Microsoft MSDN Article ID: Q168958
9
// "HOWTO: Exporting STL Components Inside & Outside of a Class".
12
#if !defined(Magick_Drawable_header)
13
#define Magick_Drawable_header
15
#include "Magick++/Include.h"
21
#include "Magick++/Color.h"
22
#include "Magick++/Geometry.h"
24
#if defined(MagickDLLBuild)
25
# if defined(MAGICK_DRAWABLE_IMPLEMENTATION)
26
# define MagickDrawableExtern
28
# pragma warning( disable: 4231 ) // Disable warning regarding using extern
29
# define MagickDrawableExtern extern
30
# endif // MAGICK_DRAWABLE_IMPLEMENTATION
32
# define MagickDrawableExtern
33
#endif // MagickDLLBuild
39
// Representation of an x,y coordinate
41
class MagickDLLDecl Coordinate
48
Coordinate ( double x_, double y_ )
52
virtual ~Coordinate ()
59
double x ( void ) const
68
double y ( void ) const
78
typedef std::list<Magick::Coordinate> CoordinateList;
80
#if defined(MagickDLLBuild)
82
MagickDrawableExtern template class MagickDLLDecl
83
std::allocator<Magick::Coordinate>;
85
MagickDrawableExtern template class MagickDLLDecl
86
std::list<Magick::Coordinate, std::allocator<Magick::Coordinate> >;
88
#endif // MagickDLLBuild
90
// Compare two Coordinate objects regardless of LHS/RHS
91
MagickDLLDeclExtern int operator == ( const Coordinate& left_,
92
const Coordinate& right_ );
93
MagickDLLDeclExtern int operator != ( const Coordinate& left_,
94
const Coordinate& right_ );
95
MagickDLLDeclExtern int operator > ( const Coordinate& left_,
96
const Coordinate& right_ );
97
MagickDLLDeclExtern int operator < ( const Coordinate& left_,
98
const Coordinate& right_ );
99
MagickDLLDeclExtern int operator >= ( const Coordinate& left_,
100
const Coordinate& right_ );
101
MagickDLLDeclExtern int operator <= ( const Coordinate& left_,
102
const Coordinate& right_ );
105
// Base class for all drawable objects
107
//struct MagickDLLDecl std::unary_function<MagickLib::DrawContext,void>;
108
class MagickDLLDecl DrawableBase:
109
public std::unary_function<MagickLib::DrawContext,void>
113
DrawableBase ( void )
117
virtual ~DrawableBase ( void );
119
// Operator to invoke equivalent draw API call
120
virtual void operator()( MagickLib::DrawContext ) const = 0;
122
// Return polymorphic copy of object
123
virtual DrawableBase* copy() const = 0;
129
// Representation of a drawable surrogate object to manage drawable objects
131
#undef Drawable // Conflict with <X11/Xproto.h>
132
class MagickDLLDecl Drawable
139
// Construct from DrawableBase
140
Drawable ( const DrawableBase& original_ );
146
Drawable ( const Drawable& original_ );
148
// Assignment operator
149
Drawable& operator= (const Drawable& original_ );
151
// Operator to invoke contained object
152
void operator()( MagickLib::DrawContext context_ ) const;
158
// Compare two Drawable objects regardless of LHS/RHS
159
MagickDLLDeclExtern int operator == ( const Drawable& left_,
160
const Drawable& right_ );
161
MagickDLLDeclExtern int operator != ( const Drawable& left_,
162
const Drawable& right_ );
163
MagickDLLDeclExtern int operator > ( const Drawable& left_,
164
const Drawable& right_ );
165
MagickDLLDeclExtern int operator < ( const Drawable& left_,
166
const Drawable& right_ );
167
MagickDLLDeclExtern int operator >= ( const Drawable& left_,
168
const Drawable& right_ );
169
MagickDLLDeclExtern int operator <= ( const Drawable& left_,
170
const Drawable& right_ );
172
typedef std::list<Magick::Drawable> DrawableList;
174
#if defined(MagickDLLBuild)
176
MagickDrawableExtern template class MagickDLLDecl
177
std::allocator<Magick::Drawable>;
179
MagickDrawableExtern template class MagickDLLDecl
180
std::list<Magick::Drawable, std::allocator<Magick::Drawable> >;
182
#endif // MagickDLLBuild
185
// Base class for all drawable path elements for use with
188
class MagickDLLDecl VPathBase
196
virtual ~VPathBase ( void );
198
// Assignment operator
199
// const VPathBase& operator= (const VPathBase& original_ );
201
// Operator to invoke equivalent draw API call
202
virtual void operator()( MagickLib::DrawContext context_ ) const = 0;
204
// Return polymorphic copy of object
205
virtual VPathBase* copy() const = 0;
209
// Representation of a drawable path element surrogate object to
210
// manage drawable path elements so they may be passed as a list to
213
class MagickDLLDecl VPath
219
// Construct from VPathBase
220
VPath ( const VPathBase& original_ );
223
virtual ~VPath ( void );
226
VPath ( const VPath& original_ );
228
// Assignment operator
229
VPath& operator= (const VPath& original_ );
231
// Operator to invoke contained object
232
void operator()( MagickLib::DrawContext context_ ) const;
238
// Compare two VPath objects regardless of LHS/RHS
239
MagickDLLDeclExtern int operator == ( const VPath& left_,
240
const VPath& right_ );
241
MagickDLLDeclExtern int operator != ( const VPath& left_,
242
const VPath& right_ );
243
MagickDLLDeclExtern int operator > ( const VPath& left_,
244
const VPath& right_ );
245
MagickDLLDeclExtern int operator < ( const VPath& left_,
246
const VPath& right_ );
247
MagickDLLDeclExtern int operator >= ( const VPath& left_,
248
const VPath& right_ );
249
MagickDLLDeclExtern int operator <= ( const VPath& left_,
250
const VPath& right_ );
252
typedef std::list<Magick::VPath> VPathList;
254
#if defined(MagickDLLBuild)
256
MagickDrawableExtern template class MagickDLLDecl
257
std::allocator<Magick::VPath>;
259
MagickDrawableExtern template class MagickDLLDecl
260
std::list<Magick::VPath, std::allocator<Magick::VPath> >;
262
#endif // MagickDLLBuild
268
// Affine (scaling, rotation, and translation)
269
class MagickDLLDecl DrawableAffine : public DrawableBase
272
DrawableAffine ( double sx_, double sy_,
273
double rx_, double ry_,
274
double tx_, double ty_ );
276
DrawableAffine ( void );
278
/*virtual*/ ~DrawableAffine( void );
280
// Operator to invoke equivalent draw API call
281
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
283
// Return polymorphic copy of object
285
DrawableBase* copy() const;
287
void sx( const double sx_ )
291
double sx( void ) const
296
void sy( const double sy_ )
300
double sy( void ) const
305
void rx( const double rx_ )
309
double rx( void ) const
314
void ry( const double ry_ )
318
double ry( void ) const
323
void tx( const double tx_ )
327
double tx( void ) const
332
void ty( const double ty_ )
336
double ty( void ) const
342
MagickLib::AffineMatrix _affine;
346
class MagickDLLDecl DrawableArc : public DrawableBase
349
DrawableArc ( double startX_, double startY_,
350
double endX_, double endY_,
351
double startDegrees_, double endDegrees_ )
356
_startDegrees(startDegrees_),
357
_endDegrees(endDegrees_)
360
/*virtual*/ ~DrawableArc( void );
362
// Operator to invoke equivalent draw API call
363
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
365
// Return polymorphic copy of object
366
/*virtual*/ DrawableBase* copy() const;
368
void startX( double startX_ )
372
double startX( void ) const
377
void startY( double startY_ )
381
double startY( void ) const
386
void endX( double endX_ )
390
double endX( void ) const
395
void endY( double endY_ )
399
double endY( void ) const
404
void startDegrees( double startDegrees_ )
406
_startDegrees = startDegrees_;
408
double startDegrees( void ) const
410
return _startDegrees;
413
void endDegrees( double endDegrees_ )
415
_endDegrees = endDegrees_;
417
double endDegrees( void ) const
427
double _startDegrees;
431
// Bezier curve (Coordinate list must contain at least three members)
432
class MagickDLLDecl DrawableBezier : public DrawableBase
435
// Construct from coordinates
436
DrawableBezier ( const CoordinateList &coordinates_ );
439
DrawableBezier ( const DrawableBezier& original_ );
442
/*virtual*/ ~DrawableBezier ( void );
444
// Operator to invoke equivalent draw API call
445
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
447
// Return polymorphic copy of object
448
/*virtual*/ DrawableBase* copy() const;
451
CoordinateList _coordinates;
455
// Pop (terminate) clip path definition
456
class MagickDLLDecl DrawablePopClipPath : public DrawableBase
459
DrawablePopClipPath ( void )
464
/*virtual*/ ~DrawablePopClipPath ( void );
466
// Operator to invoke equivalent draw API call
467
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
469
// Return polymorphic copy of object
470
/*virtual*/ DrawableBase* copy() const;
476
// Push (create) Clip path definition
477
class MagickDLLDecl DrawablePushClipPath : public DrawableBase
480
DrawablePushClipPath ( const std::string &id_);
482
DrawablePushClipPath ( const DrawablePushClipPath& original_ );
484
/*virtual*/ ~DrawablePushClipPath ( void );
486
// Operator to invoke equivalent draw API call
487
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
489
// Return polymorphic copy of object
490
/*virtual*/ DrawableBase* copy() const;
497
class MagickDLLDecl DrawableClipPath : public DrawableBase
500
DrawableClipPath ( const std::string &id_ );
501
DrawableClipPath ( const DrawableClipPath& original_ );
503
/*virtual*/ ~DrawableClipPath ( void );
505
// Operator to invoke equivalent draw API call
506
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
508
// Return polymorphic copy of object
509
/*virtual*/ DrawableBase* copy() const;
511
void clip_path( const std::string &id_ )
513
_id = id_.c_str(); //multithread safe
515
std::string clip_path( void ) const
525
class MagickDLLDecl DrawableCircle : public DrawableBase
528
DrawableCircle ( double originX_, double originY_,
529
double perimX_, double perimY_ )
530
: _originX(originX_),
537
/*virtual*/ ~DrawableCircle ( void );
539
// Operator to invoke equivalent draw API call
540
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
542
// Return polymorphic copy of object
543
/*virtual*/ DrawableBase* copy() const;
545
void originX( double originX_ )
549
double originX( void ) const
554
void originY( double originY_ )
558
double originY( void ) const
563
void perimX( double perimX_ )
567
double perimX( void ) const
572
void perimY( double perimY_ )
576
double perimY( void ) const
588
// Colorize at point using PaintMethod
589
class MagickDLLDecl DrawableColor : public DrawableBase
592
DrawableColor ( double x_, double y_,
593
PaintMethod paintMethod_ )
596
_paintMethod(paintMethod_)
599
/*virtual*/ ~DrawableColor ( void );
601
// Operator to invoke equivalent draw API call
602
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
604
// Return polymorphic copy of object
605
/*virtual*/ DrawableBase* copy() const;
611
double x( void ) const
620
double y( void ) const
625
void paintMethod( PaintMethod paintMethod_ )
627
_paintMethod = paintMethod_;
629
PaintMethod paintMethod( void ) const
637
PaintMethod _paintMethod;
640
// Draw image at point, scaled to size specified by width and height
641
class MagickDLLDecl Image;
642
class MagickDLLDecl DrawableCompositeImage : public DrawableBase
645
DrawableCompositeImage ( double x_, double y_,
646
const std::string &filename_ );
648
DrawableCompositeImage ( double x_, double y_,
649
const Image &image_ );
651
DrawableCompositeImage ( double x_, double y_,
652
double width_, double height_,
653
const std::string &filename_ );
655
DrawableCompositeImage ( double x_, double y_,
656
double width_, double height_,
657
const Image &image_ );
659
DrawableCompositeImage ( double x_, double y_,
660
double width_, double height_,
661
const std::string &filename_,
662
CompositeOperator composition_ );
664
DrawableCompositeImage ( double x_, double y_,
665
double width_, double height_,
667
CompositeOperator composition_ );
670
DrawableCompositeImage ( const DrawableCompositeImage& original_ );
673
/*virtual*/ ~DrawableCompositeImage( void );
675
// Assignment operator
676
DrawableCompositeImage& operator=
677
(const DrawableCompositeImage& original_ );
679
// Operator to invoke equivalent draw API call
680
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
682
// Return polymorphic copy of object
683
/*virtual*/ DrawableBase* copy() const;
685
void composition( CompositeOperator composition_ )
687
_composition = composition_;
689
CompositeOperator composition( void ) const
694
void filename( const std::string &image_ );
695
std::string filename( void ) const;
701
double x( void ) const
710
double y( void ) const
715
void width( double width_ )
719
double width( void ) const
724
void height( double height_ )
728
double height( void ) const
733
void image( const Image &image_ );
734
Magick::Image image( void ) const;
736
// Specify image format used to output Base64 inlined image data.
737
void magick( std::string magick_ );
738
std::string magick( void );
741
CompositeOperator _composition;
750
class MagickDLLDecl DrawableEllipse : public DrawableBase
753
DrawableEllipse ( double originX_, double originY_,
754
double radiusX_, double radiusY_,
755
double arcStart_, double arcEnd_ )
756
: _originX(originX_),
760
_arcStart(arcStart_),
764
/*virtual*/ ~DrawableEllipse( void );
766
// Operator to invoke equivalent draw API call
767
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
769
// Return polymorphic copy of object
770
/*virtual*/ DrawableBase* copy() const;
772
void originX( double originX_ )
776
double originX( void ) const
781
void originY( double originY_ )
785
double originY( void ) const
790
void radiusX( double radiusX_ )
794
double radiusX( void ) const
799
void radiusY( double radiusY_ )
803
double radiusY( void ) const
808
void arcStart( double arcStart_ )
810
_arcStart = arcStart_;
812
double arcStart( void ) const
817
void arcEnd( double arcEnd_ )
821
double arcEnd( void ) const
835
// Specify drawing fill color
836
class MagickDLLDecl DrawableFillColor : public DrawableBase
839
DrawableFillColor ( const Color &color_ );
841
DrawableFillColor ( const DrawableFillColor& original_ );
843
/*virtual*/ ~DrawableFillColor( void );
845
// Operator to invoke equivalent draw API call
846
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
848
// Return polymorphic copy of object
849
/*virtual*/ DrawableBase* copy() const;
851
void color( const Color &color_ )
855
Color color( void ) const
864
// Specify fill rule (fill-rule)
865
class MagickDLLDecl DrawableFillRule : public DrawableBase
868
DrawableFillRule ( const FillRule fillRule_ )
869
: _fillRule(fillRule_)
873
/*virtual*/ ~DrawableFillRule ( void );
875
// Operator to invoke equivalent draw API call
876
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
878
// Return polymorphic copy of object
879
/*virtual*/ DrawableBase* copy() const;
881
void fillRule( const FillRule fillRule_ )
883
_fillRule = fillRule_;
885
FillRule fillRule( void ) const
894
// Specify drawing fill opacity
895
class MagickDLLDecl DrawableFillOpacity : public DrawableBase
898
DrawableFillOpacity ( double opacity_ )
903
/*virtual*/ ~DrawableFillOpacity ( void );
905
// Operator to invoke equivalent draw API call
906
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
908
// Return polymorphic copy of object
909
/*virtual*/ DrawableBase* copy() const;
911
void opacity( double opacity_ )
915
double opacity( void ) const
925
class MagickDLLDecl DrawableFont : public DrawableBase
928
DrawableFont ( const std::string &font_ );
930
DrawableFont ( const std::string &family_,
932
const unsigned long weight_,
933
StretchType stretch_ );
934
DrawableFont ( const DrawableFont& original_ );
936
/*virtual*/ ~DrawableFont ( void );
938
// Operator to invoke equivalent draw API call
939
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
941
// Return polymorphic copy of object
942
/*virtual*/ DrawableBase* copy() const;
944
void font( const std::string &font_ )
948
std::string font( void ) const
957
unsigned long _weight;
958
StretchType _stretch;
961
// Specify text positioning gravity
962
class MagickDLLDecl DrawableGravity : public DrawableBase
965
DrawableGravity ( GravityType gravity_ )
970
/*virtual*/ ~DrawableGravity ( void );
972
// Operator to invoke equivalent draw API call
973
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
975
// Return polymorphic copy of object
976
/*virtual*/ DrawableBase* copy() const;
978
void gravity( GravityType gravity_ )
982
GravityType gravity( void ) const
988
GravityType _gravity;
992
class MagickDLLDecl DrawableLine : public DrawableBase
995
DrawableLine ( double startX_, double startY_,
996
double endX_, double endY_ )
1003
/*virtual*/ ~DrawableLine ( void );
1005
// Operator to invoke equivalent draw API call
1006
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1008
// Return polymorphic copy of object
1009
/*virtual*/ DrawableBase* copy() const;
1011
void startX( double startX_ )
1015
double startX( void ) const
1020
void startY( double startY_ )
1024
double startY( void ) const
1029
void endX( double endX_ )
1033
double endX( void ) const
1038
void endY( double endY_ )
1042
double endY( void ) const
1054
// Change pixel matte value to transparent using PaintMethod
1055
class MagickDLLDecl DrawableMatte : public DrawableBase
1058
DrawableMatte ( double x_, double y_,
1059
PaintMethod paintMethod_ )
1062
_paintMethod(paintMethod_)
1065
/*virtual*/ ~DrawableMatte ( void );
1067
// Operator to invoke equivalent draw API call
1068
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1070
// Return polymorphic copy of object
1071
/*virtual*/ DrawableBase* copy() const;
1077
double x( void ) const
1086
double y( void ) const
1091
void paintMethod( PaintMethod paintMethod_ )
1093
_paintMethod = paintMethod_;
1095
PaintMethod paintMethod( void ) const
1097
return _paintMethod;
1103
PaintMethod _paintMethod;
1107
class MagickDLLDecl DrawablePath : public DrawableBase
1110
DrawablePath ( const VPathList &path_ );
1112
DrawablePath ( const DrawablePath& original_ );
1114
/*virtual*/ ~DrawablePath ( void );
1116
// Operator to invoke equivalent draw API call
1117
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1119
// Return polymorphic copy of object
1120
/*virtual*/ DrawableBase* copy() const;
1127
class MagickDLLDecl DrawablePoint : public DrawableBase
1130
DrawablePoint ( double x_, double y_ )
1135
/*virtual*/ ~DrawablePoint ( void );
1137
// Operator to invoke equivalent draw API call
1138
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1140
// Return polymorphic copy of object
1141
/*virtual*/ DrawableBase* copy() const;
1147
double x( void ) const
1156
double y( void ) const
1167
class MagickDLLDecl DrawablePointSize : public DrawableBase
1170
DrawablePointSize ( double pointSize_ )
1171
: _pointSize(pointSize_)
1174
/*virtual*/ ~DrawablePointSize ( void );
1176
// Operator to invoke equivalent draw API call
1177
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1179
// Return polymorphic copy of object
1180
/*virtual*/ DrawableBase* copy() const;
1182
void pointSize( double pointSize_ )
1184
_pointSize = pointSize_;
1186
double pointSize( void ) const
1195
// Polygon (Coordinate list must contain at least three members)
1196
class MagickDLLDecl DrawablePolygon : public DrawableBase
1199
DrawablePolygon ( const CoordinateList &coordinates_ );
1201
DrawablePolygon ( const DrawablePolygon& original_ );
1203
/*virtual*/ ~DrawablePolygon ( void );
1205
// Operator to invoke equivalent draw API call
1206
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1208
// Return polymorphic copy of object
1209
/*virtual*/ DrawableBase* copy() const;
1212
CoordinateList _coordinates;
1215
// Polyline (Coordinate list must contain at least three members)
1216
class MagickDLLDecl DrawablePolyline : public DrawableBase
1219
DrawablePolyline ( const CoordinateList &coordinates_ );
1221
DrawablePolyline ( const DrawablePolyline& original_ );
1223
/*virtual*/ ~DrawablePolyline ( void );
1225
// Operator to invoke equivalent draw API call
1226
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1228
// Return polymorphic copy of object
1229
/*virtual*/ DrawableBase* copy() const;
1232
CoordinateList _coordinates;
1235
// Pop Graphic Context
1236
class MagickDLLDecl DrawablePopGraphicContext : public DrawableBase
1239
DrawablePopGraphicContext ( void )
1244
/*virtual*/ ~DrawablePopGraphicContext ( void );
1246
// Operator to invoke equivalent draw API call
1247
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1249
// Return polymorphic copy of object
1250
/*virtual*/ DrawableBase* copy() const;
1256
// Push Graphic Context
1257
class MagickDLLDecl DrawablePushGraphicContext : public DrawableBase
1260
DrawablePushGraphicContext ( void )
1265
/*virtual*/ ~DrawablePushGraphicContext ( void );
1267
// Operator to invoke equivalent draw API call
1268
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1270
// Return polymorphic copy of object
1271
/*virtual*/ DrawableBase* copy() const;
1277
// Pop (terminate) Pattern definition
1278
class MagickDLLDecl DrawablePopPattern : public DrawableBase
1281
DrawablePopPattern ( void )
1286
/*virtual*/ ~DrawablePopPattern ( void );
1288
// Operator to invoke equivalent draw API call
1289
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1291
// Return polymorphic copy of object
1292
/*virtual*/ DrawableBase* copy() const;
1298
// Push (create) Pattern definition
1299
class MagickDLLDecl DrawablePushPattern : public DrawableBase
1302
DrawablePushPattern ( const std::string &id_, long x_, long y_,
1303
long width_, long height_ );
1305
DrawablePushPattern ( const DrawablePushPattern& original_ );
1307
/*virtual*/ ~DrawablePushPattern ( void );
1309
// Operator to invoke equivalent draw API call
1310
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1312
// Return polymorphic copy of object
1313
/*virtual*/ DrawableBase* copy() const;
1324
class MagickDLLDecl DrawableRectangle : public DrawableBase
1327
DrawableRectangle ( double upperLeftX_, double upperLeftY_,
1328
double lowerRightX_, double lowerRightY_ )
1329
: _upperLeftX(upperLeftX_),
1330
_upperLeftY(upperLeftY_),
1331
_lowerRightX(lowerRightX_),
1332
_lowerRightY(lowerRightY_)
1335
/*virtual*/ ~DrawableRectangle ( void );
1337
// Operator to invoke equivalent draw API call
1338
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1340
// Return polymorphic copy of object
1341
/*virtual*/ DrawableBase* copy() const;
1343
void upperLeftX( double upperLeftX_ )
1345
_upperLeftX = upperLeftX_;
1347
double upperLeftX( void ) const
1352
void upperLeftY( double upperLeftY_ )
1354
_upperLeftY = upperLeftY_;
1356
double upperLeftY( void ) const
1361
void lowerRightX( double lowerRightX_ )
1363
_lowerRightX = lowerRightX_;
1365
double lowerRightX( void ) const
1367
return _lowerRightX;
1370
void lowerRightY( double lowerRightY_ )
1372
_lowerRightY = lowerRightY_;
1374
double lowerRightY( void ) const
1376
return _lowerRightY;
1382
double _lowerRightX;
1383
double _lowerRightY;
1387
class MagickDLLDecl DrawableRotation : public DrawableBase
1390
DrawableRotation ( double angle_ )
1394
/*virtual*/ ~DrawableRotation ( void );
1396
// Operator to invoke equivalent draw API call
1397
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1399
// Return polymorphic copy of object
1400
/*virtual*/ DrawableBase* copy() const;
1402
void angle( double angle_ )
1406
double angle( void ) const
1416
class MagickDLLDecl DrawableRoundRectangle : public DrawableBase
1419
DrawableRoundRectangle ( double centerX_, double centerY_,
1420
double width_, double hight_,
1421
double cornerWidth_, double cornerHeight_ )
1422
: _centerX(centerX_),
1426
_cornerWidth(cornerWidth_),
1427
_cornerHeight(cornerHeight_)
1430
/*virtual*/ ~DrawableRoundRectangle ( void );
1432
// Operator to invoke equivalent draw API call
1433
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1435
// Return polymorphic copy of object
1436
/*virtual*/ DrawableBase* copy() const;
1438
void centerX( double centerX_ )
1440
_centerX = centerX_;
1442
double centerX( void ) const
1447
void centerY( double centerY_ )
1449
_centerY = centerY_;
1451
double centerY( void ) const
1456
void width( double width_ )
1460
double width( void ) const
1465
void hight( double hight_ )
1469
double hight( void ) const
1474
void cornerWidth( double cornerWidth_ )
1476
_cornerWidth = cornerWidth_;
1478
double cornerWidth( void ) const
1480
return _cornerWidth;
1483
void cornerHeight( double cornerHeight_ )
1485
_cornerHeight = cornerHeight_;
1487
double cornerHeight( void ) const
1489
return _cornerHeight;
1497
double _cornerWidth;
1498
double _cornerHeight;
1502
class MagickDLLDecl DrawableScaling : public DrawableBase
1505
DrawableScaling ( double x_, double y_ )
1510
/*virtual*/ ~DrawableScaling ( void );
1512
// Operator to invoke equivalent draw API call
1513
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1515
// Return polymorphic copy of object
1516
/*virtual*/ DrawableBase* copy() const;
1522
double x( void ) const
1531
double y( void ) const
1541
// Apply Skew in X direction
1542
class MagickDLLDecl DrawableSkewX : public DrawableBase
1545
DrawableSkewX ( double angle_ )
1549
/*virtual*/ ~DrawableSkewX ( void );
1551
// Operator to invoke equivalent draw API call
1552
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1554
// Return polymorphic copy of object
1555
/*virtual*/ DrawableBase* copy() const;
1557
void angle( double angle_ )
1561
double angle( void ) const
1570
// Apply Skew in Y direction
1571
class MagickDLLDecl DrawableSkewY : public DrawableBase
1574
DrawableSkewY ( double angle_ )
1578
/*virtual*/ ~DrawableSkewY ( void );
1580
// Operator to invoke equivalent draw API call
1581
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1583
// Return polymorphic copy of object
1584
/*virtual*/ DrawableBase* copy() const;
1586
void angle( double angle_ )
1590
double angle( void ) const
1600
class MagickDLLDecl DrawableDashArray : public DrawableBase
1603
DrawableDashArray( const double* dasharray_ );
1604
DrawableDashArray( const unsigned int* dasharray_ ); // Deprecated
1605
DrawableDashArray( const Magick::DrawableDashArray &original_ );
1607
/*virtual*/ ~DrawableDashArray( void );
1609
// Operator to invoke equivalent draw API call
1610
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1612
// Return polymorphic copy of object
1613
/*virtual*/ DrawableBase* copy() const;
1615
void dasharray( const double* dasharray_ );
1616
void dasharray( const unsigned int* dasharray_ ); // Deprecated
1618
const double* dasharray( void ) const
1623
DrawableDashArray& operator=(const Magick::DrawableDashArray &original_);
1630
// Stroke dashoffset
1631
class MagickDLLDecl DrawableDashOffset : public DrawableBase
1634
DrawableDashOffset ( const double offset_ )
1638
/*virtual*/ ~DrawableDashOffset ( void );
1640
// Operator to invoke equivalent draw API call
1641
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1643
// Return polymorphic copy of object
1644
/*virtual*/ DrawableBase* copy() const;
1646
void offset( const double offset_ )
1650
double offset( void ) const
1660
class MagickDLLDecl DrawableStrokeLineCap : public DrawableBase
1663
DrawableStrokeLineCap ( LineCap linecap_ )
1664
: _linecap(linecap_)
1667
/*virtual*/ ~DrawableStrokeLineCap ( void );
1669
// Operator to invoke equivalent draw API call
1670
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1672
// Return polymorphic copy of object
1673
/*virtual*/ DrawableBase* copy() const;
1675
void linecap( LineCap linecap_ )
1677
_linecap = linecap_;
1679
LineCap linecap( void ) const
1689
class MagickDLLDecl DrawableStrokeLineJoin : public DrawableBase
1692
DrawableStrokeLineJoin ( LineJoin linejoin_ )
1693
: _linejoin(linejoin_)
1696
/*virtual*/ ~DrawableStrokeLineJoin ( void );
1698
// Operator to invoke equivalent draw API call
1699
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1701
// Return polymorphic copy of object
1702
/*virtual*/ DrawableBase* copy() const;
1704
void linejoin( LineJoin linejoin_ )
1706
_linejoin = linejoin_;
1708
LineJoin linejoin( void ) const
1717
// Stroke miterlimit
1718
class MagickDLLDecl DrawableMiterLimit : public DrawableBase
1721
DrawableMiterLimit ( unsigned int miterlimit_ )
1722
: _miterlimit(miterlimit_)
1725
/*virtual*/ ~DrawableMiterLimit ( void );
1727
// Operator to invoke equivalent draw API call
1728
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1730
// Return polymorphic copy of object
1731
/*virtual*/ DrawableBase* copy() const;
1733
void miterlimit( unsigned int miterlimit_ )
1735
_miterlimit = miterlimit_;
1737
unsigned int miterlimit( void ) const
1743
unsigned int _miterlimit;
1748
class MagickDLLDecl DrawableStrokeAntialias : public DrawableBase
1751
DrawableStrokeAntialias ( bool flag_ )
1755
/*virtual*/ ~DrawableStrokeAntialias ( void );
1757
// Operator to invoke equivalent draw API call
1758
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1760
// Return polymorphic copy of object
1761
/*virtual*/ DrawableBase* copy() const;
1763
void flag( bool flag_ )
1767
bool flag( void ) const
1777
class MagickDLLDecl DrawableStrokeColor : public DrawableBase
1780
DrawableStrokeColor ( const Color &color_ );
1782
DrawableStrokeColor ( const DrawableStrokeColor& original_ );
1784
/*virtual*/ ~DrawableStrokeColor ( void );
1786
// Operator to invoke equivalent draw API call
1787
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1789
// Return polymorphic copy of object
1790
/*virtual*/ DrawableBase* copy() const;
1792
void color( const Color& color_ )
1796
Color color( void ) const
1806
class MagickDLLDecl DrawableStrokeOpacity : public DrawableBase
1809
DrawableStrokeOpacity ( double opacity_ )
1810
: _opacity(opacity_)
1814
/*virtual*/ ~DrawableStrokeOpacity ( void );
1816
// Operator to invoke equivalent draw API call
1817
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1819
// Return polymorphic copy of object
1820
/*virtual*/ DrawableBase* copy() const;
1822
void opacity( double opacity_ )
1824
_opacity = opacity_;
1826
double opacity( void ) const
1836
class MagickDLLDecl DrawableStrokeWidth : public DrawableBase
1839
DrawableStrokeWidth ( double width_ )
1843
/*virtual*/ ~DrawableStrokeWidth ( void );
1845
// Operator to invoke equivalent draw API call
1846
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1848
// Return polymorphic copy of object
1849
/*virtual*/ DrawableBase* copy() const;
1851
void width( double width_ )
1855
double width( void ) const
1864
// Draw text at point
1865
class MagickDLLDecl DrawableText : public DrawableBase
1868
DrawableText ( const double x_, const double y_,
1869
const std::string &text_ );
1870
DrawableText ( const double x_, const double y_,
1871
const std::string &text_, const std::string &encoding_);
1873
DrawableText ( const DrawableText& original_ );
1875
/*virtual*/ ~DrawableText ( void );
1877
// Operator to invoke equivalent draw API call
1878
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1880
// Return polymorphic copy of object
1881
/*virtual*/ DrawableBase* copy() const;
1883
void encoding(const std::string &encoding_)
1885
_encoding = encoding_;
1892
double x( void ) const
1901
double y( void ) const
1906
void text( const std::string &text_ )
1910
std::string text( void ) const
1919
std::string _encoding;
1923
class MagickDLLDecl DrawableTextAntialias : public DrawableBase
1926
DrawableTextAntialias ( bool flag_ );
1928
DrawableTextAntialias( const DrawableTextAntialias &original_ );
1930
/*virtual*/ ~DrawableTextAntialias ( void );
1932
// Operator to invoke equivalent draw API call
1933
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1935
// Return polymorphic copy of object
1936
/*virtual*/ DrawableBase* copy() const;
1938
void flag( bool flag_ )
1942
bool flag( void ) const
1951
// Decoration (text decoration)
1952
class MagickDLLDecl DrawableTextDecoration : public DrawableBase
1955
DrawableTextDecoration ( DecorationType decoration_ );
1957
DrawableTextDecoration ( const DrawableTextDecoration& original_ );
1959
/*virtual*/ ~DrawableTextDecoration( void );
1961
// Operator to invoke equivalent draw API call
1962
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1964
// Return polymorphic copy of object
1965
/*virtual*/ DrawableBase* copy() const;
1967
void decoration( DecorationType decoration_ )
1969
_decoration = decoration_;
1971
DecorationType decoration( void ) const
1977
DecorationType _decoration;
1980
// Text undercolor box
1981
class MagickDLLDecl DrawableTextUnderColor : public DrawableBase
1984
DrawableTextUnderColor ( const Color &color_ );
1986
DrawableTextUnderColor ( const DrawableTextUnderColor& original_ );
1988
/*virtual*/ ~DrawableTextUnderColor ( void );
1990
// Operator to invoke equivalent draw API call
1991
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
1993
// Return polymorphic copy of object
1994
/*virtual*/ DrawableBase* copy() const;
1996
void color( const Color& color_ )
2000
Color color( void ) const
2009
// Apply Translation
2010
class MagickDLLDecl DrawableTranslation : public DrawableBase
2013
DrawableTranslation ( double x_, double y_ )
2018
/*virtual*/ ~DrawableTranslation ( void );
2020
// Operator to invoke equivalent draw API call
2021
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2023
// Return polymorphic copy of object
2024
/*virtual*/ DrawableBase* copy() const;
2030
double x( void ) const
2039
double y( void ) const
2049
// Set the size of the viewbox
2050
class MagickDLLDecl DrawableViewbox : public DrawableBase
2053
DrawableViewbox(unsigned long x1_, unsigned long y1_,
2054
unsigned long x2_, unsigned long y2_)
2060
/*virtual*/ ~DrawableViewbox ( void );
2062
// Operator to invoke equivalent draw API call
2063
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2065
// Return polymorphic copy of object
2067
DrawableBase* copy() const;
2069
void x1( unsigned long x1_ )
2073
unsigned long x1( void ) const
2078
void y1( unsigned long y1_ )
2082
unsigned long y1( void ) const
2087
void x2( unsigned long x2_ )
2091
unsigned long x2( void ) const
2096
void y2( unsigned long y2_ )
2100
unsigned long y2( void ) const
2113
// Path Element Classes To Support DrawablePath
2115
class MagickDLLDecl PathArcArgs
2118
PathArcArgs( void );
2120
PathArcArgs( double radiusX_, double radiusY_,
2121
double xAxisRotation_, bool largeArcFlag_,
2122
bool sweepFlag_, double x_, double y_ );
2124
PathArcArgs( const PathArcArgs &original_ );
2126
~PathArcArgs ( void );
2128
void radiusX( double radiusX_ )
2130
_radiusX = radiusX_;
2132
double radiusX( void ) const
2137
void radiusY( double radiusY_ )
2139
_radiusY = radiusY_;
2141
double radiusY( void ) const
2146
void xAxisRotation( double xAxisRotation_ )
2148
_xAxisRotation = xAxisRotation_;
2150
double xAxisRotation( void ) const
2152
return _xAxisRotation;
2155
void largeArcFlag( bool largeArcFlag_ )
2157
_largeArcFlag = largeArcFlag_;
2159
bool largeArcFlag( void ) const
2161
return _largeArcFlag;
2164
void sweepFlag( bool sweepFlag_ )
2166
_sweepFlag = sweepFlag_;
2168
bool sweepFlag( void ) const
2177
double x( void ) const
2186
double y( void ) const
2192
double _radiusX; // X radius
2193
double _radiusY; // Y radius
2194
double _xAxisRotation; // Rotation relative to X axis
2195
bool _largeArcFlag; // Draw longer of the two matching arcs
2196
bool _sweepFlag; // Draw arc matching clock-wise rotation
2197
double _x; // End-point X
2198
double _y; // End-point Y
2201
// Compare two PathArcArgs objects regardless of LHS/RHS
2202
MagickDLLDeclExtern int operator == ( const PathArcArgs& left_,
2203
const PathArcArgs& right_ );
2204
MagickDLLDeclExtern int operator != ( const PathArcArgs& left_,
2205
const PathArcArgs& right_ );
2206
MagickDLLDeclExtern int operator > ( const PathArcArgs& left_,
2207
const PathArcArgs& right_ );
2208
MagickDLLDeclExtern int operator < ( const PathArcArgs& left_,
2209
const PathArcArgs& right_ );
2210
MagickDLLDeclExtern int operator >= ( const PathArcArgs& left_,
2211
const PathArcArgs& right_ );
2212
MagickDLLDeclExtern int operator <= ( const PathArcArgs& left_,
2213
const PathArcArgs& right_ );
2215
typedef std::list<Magick::PathArcArgs> PathArcArgsList;
2217
#if defined(MagickDLLBuild)
2219
MagickDrawableExtern template class MagickDLLDecl
2220
std::allocator<Magick::PathArcArgs>;
2222
MagickDrawableExtern template class MagickDLLDecl
2223
std::list<Magick::PathArcArgs, std::allocator<Magick::PathArcArgs> >;
2225
#endif // MagickDLLBuild
2227
// Path Arc (Elliptical Arc)
2228
class MagickDLLDecl PathArcAbs : public VPathBase
2231
// Draw a single arc segment
2232
PathArcAbs ( const PathArcArgs &coordinates_ );
2234
// Draw multiple arc segments
2235
PathArcAbs ( const PathArcArgsList &coordinates_ );
2238
PathArcAbs ( const PathArcAbs& original_ );
2241
/*virtual*/ ~PathArcAbs ( void );
2243
// Operator to invoke equivalent draw API call
2244
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2246
// Return polymorphic copy of object
2247
/*virtual*/ VPathBase* copy() const;
2250
PathArcArgsList _coordinates;
2252
class MagickDLLDecl PathArcRel : public VPathBase
2255
// Draw a single arc segment
2256
PathArcRel ( const PathArcArgs &coordinates_ );
2258
// Draw multiple arc segments
2259
PathArcRel ( const PathArcArgsList &coordinates_ );
2261
PathArcRel ( const PathArcRel& original_ );
2263
/*virtual*/ ~PathArcRel ( void );
2265
// Operator to invoke equivalent draw API call
2266
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2268
// Return polymorphic copy of object
2269
/*virtual*/ VPathBase* copy() const;
2272
PathArcArgsList _coordinates;
2276
class MagickDLLDecl PathClosePath : public VPathBase
2279
PathClosePath ( void )
2284
/*virtual*/ ~PathClosePath ( void );
2286
// Operator to invoke equivalent draw API call
2287
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2289
// Return polymorphic copy of object
2290
/*virtual*/ VPathBase* copy() const;
2297
// Curveto (Cubic Bezier)
2299
class MagickDLLDecl PathCurvetoArgs
2302
PathCurvetoArgs( void );
2304
PathCurvetoArgs( double x1_, double y1_,
2305
double x2_, double y2_,
2306
double x_, double y_ );
2308
PathCurvetoArgs( const PathCurvetoArgs &original_ );
2310
~PathCurvetoArgs ( void );
2312
void x1( double x1_ )
2316
double x1( void ) const
2321
void y1( double y1_ )
2325
double y1( void ) const
2330
void x2( double x2_ )
2334
double x2( void ) const
2339
void y2( double y2_ )
2343
double y2( void ) const
2352
double x( void ) const
2361
double y( void ) const
2375
// Compare two PathCurvetoArgs objects regardless of LHS/RHS
2376
MagickDLLDeclExtern int operator == ( const PathCurvetoArgs& left_,
2377
const PathCurvetoArgs& right_ );
2378
MagickDLLDeclExtern int operator != ( const PathCurvetoArgs& left_,
2379
const PathCurvetoArgs& right_ );
2380
MagickDLLDeclExtern int operator > ( const PathCurvetoArgs& left_,
2381
const PathCurvetoArgs& right_ );
2382
MagickDLLDeclExtern int operator < ( const PathCurvetoArgs& left_,
2383
const PathCurvetoArgs& right_ );
2384
MagickDLLDeclExtern int operator >= ( const PathCurvetoArgs& left_,
2385
const PathCurvetoArgs& right_ );
2386
MagickDLLDeclExtern int operator <= ( const PathCurvetoArgs& left_,
2387
const PathCurvetoArgs& right_ );
2389
typedef std::list<Magick::PathCurvetoArgs> PathCurveToArgsList;
2391
#if defined(MagickDLLBuild)
2393
MagickDrawableExtern template class MagickDLLDecl
2394
std::allocator<Magick::PathCurvetoArgs>;
2396
MagickDrawableExtern template class MagickDLLDecl
2397
std::list<Magick::PathCurvetoArgs, std::allocator<Magick::PathCurvetoArgs> >;
2399
#endif // MagickDLLBuild
2401
class MagickDLLDecl PathCurvetoAbs : public VPathBase
2404
// Draw a single curve
2405
PathCurvetoAbs ( const PathCurvetoArgs &args_ );
2407
// Draw multiple curves
2408
PathCurvetoAbs ( const PathCurveToArgsList &args_ );
2411
PathCurvetoAbs ( const PathCurvetoAbs& original_ );
2414
/*virtual*/ ~PathCurvetoAbs ( void );
2416
// Operator to invoke equivalent draw API call
2417
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2419
// Return polymorphic copy of object
2420
/*virtual*/ VPathBase* copy() const;
2423
PathCurveToArgsList _args;
2425
class MagickDLLDecl PathCurvetoRel : public VPathBase
2428
// Draw a single curve
2429
PathCurvetoRel ( const PathCurvetoArgs &args_ );
2431
// Draw multiple curves
2432
PathCurvetoRel ( const PathCurveToArgsList &args_ );
2435
PathCurvetoRel ( const PathCurvetoRel& original_ );
2437
/*virtual*/ ~PathCurvetoRel ( void );
2439
// Operator to invoke equivalent draw API call
2440
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2442
// Return polymorphic copy of object
2443
/*virtual*/ VPathBase* copy() const;
2446
PathCurveToArgsList _args;
2448
class MagickDLLDecl PathSmoothCurvetoAbs : public VPathBase
2451
// Draw a single curve
2452
PathSmoothCurvetoAbs ( const Magick::Coordinate &coordinates_ );
2454
// Draw multiple curves
2455
PathSmoothCurvetoAbs ( const CoordinateList &coordinates_ );
2458
PathSmoothCurvetoAbs ( const PathSmoothCurvetoAbs& original_ );
2460
/*virtual*/ ~PathSmoothCurvetoAbs ( void );
2462
// Operator to invoke equivalent draw API call
2463
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2465
// Return polymorphic copy of object
2467
VPathBase* copy() const;
2470
CoordinateList _coordinates;
2472
class MagickDLLDecl PathSmoothCurvetoRel : public VPathBase
2475
// Draw a single curve
2476
PathSmoothCurvetoRel ( const Coordinate &coordinates_ );
2478
// Draw multiple curves
2479
PathSmoothCurvetoRel ( const CoordinateList &coordinates_ );
2482
PathSmoothCurvetoRel ( const PathSmoothCurvetoRel& original_ );
2485
/*virtual*/ ~PathSmoothCurvetoRel ( void );
2487
// Operator to invoke equivalent draw API call
2488
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2490
// Return polymorphic copy of object
2492
VPathBase* copy() const;
2495
CoordinateList _coordinates;
2499
// Quadratic Curveto (Quadratic Bezier)
2501
class MagickDLLDecl PathQuadraticCurvetoArgs
2504
PathQuadraticCurvetoArgs( void );
2506
PathQuadraticCurvetoArgs( double x1_, double y1_,
2507
double x_, double y_ );
2509
PathQuadraticCurvetoArgs( const PathQuadraticCurvetoArgs &original_ );
2511
~PathQuadraticCurvetoArgs ( void );
2513
void x1( double x1_ )
2517
double x1( void ) const
2522
void y1( double y1_ )
2526
double y1( void ) const
2535
double x( void ) const
2544
double y( void ) const
2556
// Compare two PathQuadraticCurvetoArgs objects regardless of LHS/RHS
2557
MagickDLLDeclExtern int operator == ( const PathQuadraticCurvetoArgs& left_,
2558
const PathQuadraticCurvetoArgs& right_ );
2559
MagickDLLDeclExtern int operator != ( const PathQuadraticCurvetoArgs& left_,
2560
const PathQuadraticCurvetoArgs& right_);
2561
MagickDLLDeclExtern int operator > ( const PathQuadraticCurvetoArgs& left_,
2562
const PathQuadraticCurvetoArgs& right_);
2563
MagickDLLDeclExtern int operator < ( const PathQuadraticCurvetoArgs& left_,
2564
const PathQuadraticCurvetoArgs& right_);
2565
MagickDLLDeclExtern int operator >= ( const PathQuadraticCurvetoArgs& left_,
2566
const PathQuadraticCurvetoArgs& right_ );
2567
MagickDLLDeclExtern int operator <= ( const PathQuadraticCurvetoArgs& left_,
2568
const PathQuadraticCurvetoArgs& right_ );
2570
typedef std::list<Magick::PathQuadraticCurvetoArgs> PathQuadraticCurvetoArgsList;
2572
#if defined(MagickDLLBuild)
2574
MagickDrawableExtern template class MagickDLLDecl
2575
std::allocator<Magick::PathQuadraticCurvetoArgs>;
2577
MagickDrawableExtern template class MagickDLLDecl
2578
std::list<Magick::PathQuadraticCurvetoArgs, std::allocator<Magick::PathQuadraticCurvetoArgs> >;
2580
#endif // MagickDLLBuild
2582
class MagickDLLDecl PathQuadraticCurvetoAbs : public VPathBase
2585
// Draw a single curve
2586
PathQuadraticCurvetoAbs ( const Magick::PathQuadraticCurvetoArgs &args_ );
2588
// Draw multiple curves
2589
PathQuadraticCurvetoAbs ( const PathQuadraticCurvetoArgsList &args_ );
2592
PathQuadraticCurvetoAbs ( const PathQuadraticCurvetoAbs& original_ );
2595
/*virtual*/ ~PathQuadraticCurvetoAbs ( void );
2597
// Operator to invoke equivalent draw API call
2598
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2600
// Return polymorphic copy of object
2601
/*virtual*/ VPathBase* copy() const;
2604
PathQuadraticCurvetoArgsList _args;
2606
class MagickDLLDecl PathQuadraticCurvetoRel : public VPathBase
2609
// Draw a single curve
2610
PathQuadraticCurvetoRel ( const Magick::PathQuadraticCurvetoArgs &args_ );
2612
// Draw multiple curves
2613
PathQuadraticCurvetoRel ( const PathQuadraticCurvetoArgsList &args_ );
2616
PathQuadraticCurvetoRel ( const PathQuadraticCurvetoRel& original_ );
2619
/*virtual*/ ~PathQuadraticCurvetoRel ( void );
2621
// Operator to invoke equivalent draw API call
2622
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2624
// Return polymorphic copy of object
2625
/*virtual*/ VPathBase* copy() const;
2628
PathQuadraticCurvetoArgsList _args;
2630
class MagickDLLDecl PathSmoothQuadraticCurvetoAbs : public VPathBase
2633
// Draw a single curve
2634
PathSmoothQuadraticCurvetoAbs ( const Magick::Coordinate &coordinate_ );
2636
// Draw multiple curves
2637
PathSmoothQuadraticCurvetoAbs ( const CoordinateList &coordinates_ );
2640
PathSmoothQuadraticCurvetoAbs ( const PathSmoothQuadraticCurvetoAbs& original_ );
2643
/*virtual*/ ~PathSmoothQuadraticCurvetoAbs ( void );
2645
// Operator to invoke equivalent draw API call
2646
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2648
// Return polymorphic copy of object
2649
/*virtual*/ VPathBase* copy() const;
2652
CoordinateList _coordinates;
2654
class MagickDLLDecl PathSmoothQuadraticCurvetoRel : public VPathBase
2657
// Draw a single curve
2658
PathSmoothQuadraticCurvetoRel ( const Magick::Coordinate &coordinate_ );
2660
// Draw multiple curves
2661
PathSmoothQuadraticCurvetoRel ( const CoordinateList &coordinates_ );
2664
PathSmoothQuadraticCurvetoRel ( const PathSmoothQuadraticCurvetoRel& original_ );
2667
/*virtual*/ ~PathSmoothQuadraticCurvetoRel ( void );
2669
// Operator to invoke equivalent draw API call
2670
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2672
// Return polymorphic copy of object
2673
/*virtual*/ VPathBase* copy() const;
2676
CoordinateList _coordinates;
2682
class MagickDLLDecl PathLinetoAbs : public VPathBase
2685
// Draw to a single point
2686
PathLinetoAbs ( const Magick::Coordinate& coordinate_ );
2688
// Draw to multiple points
2689
PathLinetoAbs ( const CoordinateList &coordinates_ );
2692
PathLinetoAbs ( const PathLinetoAbs& original_ );
2695
/*virtual*/ ~PathLinetoAbs ( void );
2697
// Operator to invoke equivalent draw API call
2698
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2700
// Return polymorphic copy of object
2701
/*virtual*/ VPathBase* copy() const;
2704
CoordinateList _coordinates;
2706
class MagickDLLDecl PathLinetoRel : public VPathBase
2709
// Draw to a single point
2710
PathLinetoRel ( const Magick::Coordinate& coordinate_ );
2712
// Draw to multiple points
2713
PathLinetoRel ( const CoordinateList &coordinates_ );
2716
PathLinetoRel ( const PathLinetoRel& original_ );
2719
/*virtual*/ ~PathLinetoRel ( void );
2721
// Operator to invoke equivalent draw API call
2722
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2724
// Return polymorphic copy of object
2725
/*virtual*/ VPathBase* copy() const;
2728
CoordinateList _coordinates;
2731
// Path Horizontal Lineto
2732
class MagickDLLDecl PathLinetoHorizontalAbs : public VPathBase
2735
PathLinetoHorizontalAbs ( double x_ )
2740
/*virtual*/ ~PathLinetoHorizontalAbs ( void );
2742
// Operator to invoke equivalent draw API call
2743
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2745
// Return polymorphic copy of object
2746
/*virtual*/ VPathBase* copy() const;
2752
double x( void ) const
2760
class MagickDLLDecl PathLinetoHorizontalRel : public VPathBase
2763
PathLinetoHorizontalRel ( double x_ )
2768
/*virtual*/ ~PathLinetoHorizontalRel ( void );
2770
// Operator to invoke equivalent draw API call
2771
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2773
// Return polymorphic copy of object
2774
/*virtual*/ VPathBase* copy() const;
2780
double x( void ) const
2789
// Path Vertical Lineto
2790
class MagickDLLDecl PathLinetoVerticalAbs : public VPathBase
2793
PathLinetoVerticalAbs ( double y_ )
2798
/*virtual*/ ~PathLinetoVerticalAbs ( void );
2800
// Operator to invoke equivalent draw API call
2801
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2803
// Return polymorphic copy of object
2804
/*virtual*/ VPathBase* copy() const;
2810
double y( void ) const
2818
class MagickDLLDecl PathLinetoVerticalRel : public VPathBase
2821
PathLinetoVerticalRel ( double y_ )
2826
/*virtual*/ ~PathLinetoVerticalRel ( void );
2828
// Operator to invoke equivalent draw API call
2829
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2831
// Return polymorphic copy of object
2832
/*virtual*/ VPathBase* copy() const;
2838
double y( void ) const
2848
class MagickDLLDecl PathMovetoAbs : public VPathBase
2852
PathMovetoAbs ( const Magick::Coordinate &coordinate_ );
2854
// Moveto followed by implicit linetos
2855
PathMovetoAbs ( const CoordinateList &coordinates_ );
2858
PathMovetoAbs ( const PathMovetoAbs& original_ );
2861
/*virtual*/ ~PathMovetoAbs ( void );
2863
// Operator to invoke equivalent draw API call
2864
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2866
// Return polymorphic copy of object
2867
/*virtual*/ VPathBase* copy() const;
2870
CoordinateList _coordinates;
2872
class MagickDLLDecl PathMovetoRel : public VPathBase
2876
PathMovetoRel ( const Magick::Coordinate &coordinate_ );
2878
// Moveto followed by implicit linetos
2879
PathMovetoRel ( const CoordinateList &coordinates_ );
2882
PathMovetoRel ( const PathMovetoRel& original_ );
2885
/*virtual*/ ~PathMovetoRel ( void );
2887
// Operator to invoke equivalent draw API call
2888
/*virtual*/ void operator()( MagickLib::DrawContext context_ ) const;
2890
// Return polymorphic copy of object
2891
/*virtual*/ VPathBase* copy() const;
2894
CoordinateList _coordinates;
2897
} // namespace Magick
2899
#endif // Magick_Drawable_header