13#define MAGICKCORE_IMPLEMENTATION 1
14#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
16#include "Magick++/Include.h"
22#include "Magick++/Options.h"
23#include "Magick++/Functions.h"
24#include "Magick++/Exception.h"
26#define MagickPI 3.14159265358979323846264338327950288419716939937510
27#define DegreesToRadians(x) (MagickPI*(x)/180.0)
29Magick::Options::Options(
void)
30 : _imageInfo(static_cast<ImageInfo*>(AcquireMagickMemory(
32 _quantizeInfo(static_cast<QuantizeInfo*>(AcquireMagickMemory(
33 sizeof(QuantizeInfo)))),
34 _drawInfo(static_cast<DrawInfo*>(AcquireMagickMemory(sizeof(DrawInfo)))),
38 GetImageInfo(_imageInfo);
41 GetQuantizeInfo(_quantizeInfo);
44 GetDrawInfo(_imageInfo,_drawInfo);
47Magick::Options::Options(
const Options& options_)
48 : _imageInfo(CloneImageInfo(options_._imageInfo)),
49 _quantizeInfo(CloneQuantizeInfo(options_._quantizeInfo)),
50 _drawInfo(CloneDrawInfo(_imageInfo,options_._drawInfo)),
51 _quiet(options_._quiet)
55Magick::Options::~Options()
58 _imageInfo=DestroyImageInfo(_imageInfo);
61 _quantizeInfo=DestroyQuantizeInfo(_quantizeInfo);
64 _drawInfo=DestroyDrawInfo(_drawInfo);
67void Magick::Options::adjoin(
const bool flag_)
69 _imageInfo->adjoin=
static_cast<MagickBooleanType
>(
70 flag_ ? MagickTrue : MagickFalse);
73bool Magick::Options::adjoin(
void)
const
75 return(
static_cast<bool>(_imageInfo->adjoin));
78void Magick::Options::matteColor(
const Color &matteColor_)
80 _imageInfo->matte_color=matteColor_;
88void Magick::Options::backgroundColor(
const Color &color_)
90 _imageInfo->background_color=color_;
95 return(Color(_imageInfo->background_color));
98void Magick::Options::backgroundTexture(
const std::string &backgroundTexture_)
100 if (backgroundTexture_.length() == 0)
101 _imageInfo->texture=(
char *) RelinquishMagickMemory(_imageInfo->texture);
103 Magick::CloneString(&_imageInfo->texture,backgroundTexture_);
106std::string Magick::Options::backgroundTexture(
void)
const
108 if (_imageInfo->texture)
109 return(std::string(_imageInfo->texture));
111 return(std::string());
114void Magick::Options::borderColor(
const Color &color_)
116 _imageInfo->border_color=color_;
117 _drawInfo->border_color=color_;
122 return(Color(_imageInfo->border_color));
125void Magick::Options::boxColor(
const Color &boxColor_)
127 _drawInfo->undercolor=boxColor_;
132 return(Color(_drawInfo->undercolor));
135void Magick::Options::colorspaceType(
const ColorspaceType colorspace_)
137 _imageInfo->colorspace=colorspace_;
140Magick::ColorspaceType Magick::Options::colorspaceType(
void)
const
142 return(
static_cast<Magick::ColorspaceType
>(_imageInfo->colorspace));
145void Magick::Options::compressType(
const CompressionType compressType_)
147 _imageInfo->compression=compressType_;
150Magick::CompressionType Magick::Options::compressType(
void)
const
152 return(
static_cast<Magick::CompressionType
>(_imageInfo->compression));
155void Magick::Options::colorFuzz(
const double fuzz_)
157 _imageInfo->fuzz=fuzz_;
160double Magick::Options::colorFuzz(
void)
const
162 return(_imageInfo->fuzz);
165void Magick::Options::debug(
const bool flag_)
168 SetLogEventMask(
"All");
170 SetLogEventMask(
"None");
173bool Magick::Options::debug(
void)
const
175 if (IsEventLogging())
180void Magick::Options::density(
const Point &density_)
182 if (!density_.isValid())
183 _imageInfo->density=(
char *) RelinquishMagickMemory(_imageInfo->density);
185 CloneString(&_imageInfo->density,density_);
190 if (_imageInfo->density)
191 return(Point(_imageInfo->density));
196void Magick::Options::depth(
const size_t depth_)
198 _imageInfo->depth=depth_;
201size_t Magick::Options::depth(
void)
const
203 return(_imageInfo->depth);
206void Magick::Options::endian(
const Magick::EndianType endian_)
208 _imageInfo->endian=endian_;
211Magick::EndianType Magick::Options::endian(
void)
const
213 return(_imageInfo->endian);
216void Magick::Options::file(FILE *file_)
218 SetImageInfoFile(_imageInfo,file_);
221FILE *Magick::Options::file(
void)
const
223 return(GetImageInfoFile(_imageInfo));
226void Magick::Options::fileName(
const std::string &fileName_)
231 max_length=
sizeof(_imageInfo->filename)-1;
232 fileName_.copy(_imageInfo->filename,(
size_t) max_length);
233 if ((ssize_t) fileName_.length() > max_length)
234 _imageInfo->filename[max_length]=0;
236 _imageInfo->filename[fileName_.length()]=0;
239std::string Magick::Options::fileName(
void)
const
241 return(std::string(_imageInfo->filename));
244void Magick::Options::fillColor(
const Color &fillColor_)
246 _drawInfo->fill=fillColor_;
247 if (fillColor_ == Color())
248 fillPattern((
const MagickCore::Image*) NULL);
249 setOption(
"fill",fillColor_);
254 return(_drawInfo->fill);
257void Magick::Options::fillPattern(
const MagickCore::Image *fillPattern_)
259 if (_drawInfo->fill_pattern)
260 _drawInfo->fill_pattern=DestroyImageList(_drawInfo->fill_pattern);
265 _drawInfo->fill_pattern=CloneImage(
const_cast<MagickCore::Image*
>(
266 fillPattern_),0,0,
static_cast<MagickBooleanType
>(MagickTrue),
268 ThrowPPException(_quiet);
272const MagickCore::Image *Magick::Options::fillPattern(
void)
const
274 return(_drawInfo->fill_pattern);
277void Magick::Options::fillRule(
const FillRule &fillRule_)
279 _drawInfo->fill_rule=fillRule_;
282Magick::FillRule Magick::Options::fillRule(
void)
const
284 return(_drawInfo->fill_rule);
287void Magick::Options::font(
const std::string &font_)
289 if (font_.length() == 0)
291 _imageInfo->font=(
char *) RelinquishMagickMemory(_imageInfo->font);
292 _drawInfo->font=(
char *) RelinquishMagickMemory(_drawInfo->font);
296 Magick::CloneString(&_imageInfo->font,font_);
297 Magick::CloneString(&_drawInfo->font,font_);
301std::string Magick::Options::font(
void)
const
303 if (_imageInfo->font)
304 return(std::string(_imageInfo->font));
306 return(std::string());
309void Magick::Options::fontFamily(
const std::string &family_)
311 if (family_.length() == 0)
313 _drawInfo->family=(
char *) RelinquishMagickMemory(_drawInfo->font);
314 DestroyString(RemoveImageOption(imageInfo(),
"family"));
318 Magick::CloneString(&_drawInfo->family,family_);
319 (void) SetImageOption(imageInfo(),
"family",family_.c_str());
323std::string Magick::Options::fontFamily(
void)
const
325 if (_drawInfo->family)
326 return(std::string(_drawInfo->family));
328 return(std::string());
331void Magick::Options::fontPointsize(
const double pointSize_)
333 _imageInfo->pointsize=pointSize_;
334 _drawInfo->pointsize=pointSize_;
337double Magick::Options::fontPointsize(
void)
const
339 return(_imageInfo->pointsize);
342void Magick::Options::fontStyle(
const StyleType style_)
344 _drawInfo->style=style_;
345 (void) SetImageOption(_imageInfo,
"style",CommandOptionToMnemonic(
346 MagickStyleOptions,(ssize_t) style_));
349Magick::StyleType Magick::Options::fontStyle(
void)
const
351 return(_drawInfo->style);
354void Magick::Options::fontWeight(
const size_t weight_)
356 _drawInfo->weight=weight_;
357 setOption(
"weight",(
double) weight_);
360size_t Magick::Options::fontWeight(
void)
const
362 return(_drawInfo->weight);
365std::string Magick::Options::format(
void)
const
371 if (*_imageInfo->magick !=
'\0' )
372 magick_info = GetMagickInfo(_imageInfo->magick,exceptionInfo);
373 ThrowPPException(_quiet);
375 if ((magick_info != 0) && (*magick_info->description !=
'\0'))
376 return(std::string( magick_info->description));
378 return(std::string());
381void Magick::Options::interlaceType(
const InterlaceType interlace_)
383 _imageInfo->interlace=interlace_;
386Magick::InterlaceType Magick::Options::interlaceType(
void)
const
388 return(
static_cast<Magick::InterlaceType
>(_imageInfo->interlace));
391void Magick::Options::magick(
const std::string &magick_)
395 _imageInfo->magick[0] =
'\0';
399 FormatLocaleString(_imageInfo->filename,MagickPathExtent,
"%.1024s:",
402 SetImageInfo(_imageInfo,1,exceptionInfo);
403 ThrowPPException(_quiet);
404 if ( _imageInfo->magick[0] ==
'\0' )
405 throwExceptionExplicit(MagickCore::OptionError,
"Unrecognized image format",
409std::string Magick::Options::magick(
void)
const
411 if ( _imageInfo->magick[0] !=
'\0' )
412 return(std::string(_imageInfo->magick));
414 return(std::string());
417void Magick::Options::monochrome(
const bool monochromeFlag_)
419 _imageInfo->monochrome=(MagickBooleanType) monochromeFlag_;
422bool Magick::Options::monochrome(
void)
const
424 return(
static_cast<bool>(_imageInfo->monochrome));
427void Magick::Options::page(
const Geometry &pageSize_)
429 if (!pageSize_.isValid())
430 _imageInfo->page=(
char *) RelinquishMagickMemory(_imageInfo->page);
432 Magick::CloneString(&_imageInfo->page,pageSize_);
437 if (_imageInfo->page)
438 return(Geometry(_imageInfo->page));
443void Magick::Options::quality(
const size_t quality_)
445 _imageInfo->quality=quality_;
448size_t Magick::Options::quality(
void)
const
450 return(_imageInfo->quality);
453void Magick::Options::quantizeColors(
const size_t colors_)
455 _quantizeInfo->number_colors=colors_;
458size_t Magick::Options::quantizeColors(
void)
const
460 return(_quantizeInfo->number_colors);
463void Magick::Options::quantizeColorSpace(
const ColorspaceType colorSpace_)
465 _quantizeInfo->colorspace=colorSpace_;
468Magick::ColorspaceType Magick::Options::quantizeColorSpace(
void)
const
470 return(
static_cast<Magick::ColorspaceType
>(_quantizeInfo->colorspace));
473void Magick::Options::quantizeDither(
const bool ditherFlag_)
475 _imageInfo->dither=(MagickBooleanType) ditherFlag_;
476 _quantizeInfo->dither_method=ditherFlag_ ? RiemersmaDitherMethod :
480bool Magick::Options::quantizeDither(
void)
const
482 return(
static_cast<bool>(_imageInfo->dither));
485void Magick::Options::quantizeDitherMethod(
const DitherMethod ditherMethod_)
487 _quantizeInfo->dither_method=ditherMethod_;
490MagickCore::DitherMethod Magick::Options::quantizeDitherMethod(
void)
const
492 return(_quantizeInfo->dither_method);
495void Magick::Options::quantizeTreeDepth(
const size_t treeDepth_)
497 _quantizeInfo->tree_depth=treeDepth_;
500size_t Magick::Options::quantizeTreeDepth(
void)
const
502 return(_quantizeInfo->tree_depth);
505void Magick::Options::quiet(
const bool quiet_)
510bool Magick::Options::quiet(
void)
const
515void Magick::Options::resolutionUnits(
const ResolutionType resolutionUnits_)
517 _imageInfo->units=resolutionUnits_;
520Magick::ResolutionType Magick::Options::resolutionUnits(
void)
const
522 return(_imageInfo->units);
525void Magick::Options::samplingFactor(
const std::string &samplingFactor_)
527 if (samplingFactor_.length() == 0)
528 _imageInfo->sampling_factor=(
char *) RelinquishMagickMemory(
529 _imageInfo->sampling_factor);
531 Magick::CloneString(&_imageInfo->sampling_factor,samplingFactor_);
534std::string Magick::Options::samplingFactor(
void)
const
536 if (_imageInfo->sampling_factor)
537 return(std::string(_imageInfo->sampling_factor));
539 return(std::string());
542void Magick::Options::size(
const Geometry &geometry_)
544 _imageInfo->size=(
char *) RelinquishMagickMemory(_imageInfo->size);
546 if (geometry_.isValid())
547 Magick::CloneString(&_imageInfo->size,geometry_);
552 if (_imageInfo->size)
553 return(Geometry(_imageInfo->size));
558void Magick::Options::strokeAntiAlias(
const bool flag_)
560 flag_ ? _drawInfo->stroke_antialias=MagickTrue :
561 _drawInfo->stroke_antialias=MagickFalse;
564bool Magick::Options::strokeAntiAlias(
void)
const
566 return(_drawInfo->stroke_antialias != 0 ?
true : false);
569void Magick::Options::strokeColor(
const Color &strokeColor_)
571 _drawInfo->stroke=strokeColor_;
572 if (strokeColor_ == Color())
573 strokePattern((
const MagickCore::Image*) NULL);
574 setOption(
"stroke",strokeColor_);
579 return(_drawInfo->stroke);
582void Magick::Options::strokeDashArray(
const double *strokeDashArray_)
584 _drawInfo->dash_pattern=(
double *) RelinquishMagickMemory(
585 _drawInfo->dash_pattern);
592 for (x=0; strokeDashArray_[x]; x++) ;
594 _drawInfo->dash_pattern=
static_cast<double*
>(AcquireMagickMemory((x+1)*
596 if (!_drawInfo->dash_pattern)
597 throwExceptionExplicit(MagickCore::ResourceLimitError,
598 "Unable to allocate dash-pattern memory");
602 memcpy(_drawInfo->dash_pattern,strokeDashArray_,(x+1)*
sizeof(
double));
603 _drawInfo->dash_pattern[x]=0.0;
608const double *Magick::Options::strokeDashArray(
void)
const
610 return(_drawInfo->dash_pattern);
613void Magick::Options::strokeDashOffset(
const double strokeDashOffset_)
615 _drawInfo->dash_offset=strokeDashOffset_;
618double Magick::Options::strokeDashOffset(
void)
const
620 return(_drawInfo->dash_offset);
623void Magick::Options::strokeLineCap(
const LineCap lineCap_)
625 _drawInfo->linecap=lineCap_;
628Magick::LineCap Magick::Options::strokeLineCap(
void)
const
630 return(_drawInfo->linecap);
633void Magick::Options::strokeLineJoin(
const LineJoin lineJoin_)
635 _drawInfo->linejoin=lineJoin_;
638Magick::LineJoin Magick::Options::strokeLineJoin(
void)
const
640 return(_drawInfo->linejoin);
643void Magick::Options::strokeMiterLimit(
const size_t miterLimit_)
645 _drawInfo->miterlimit=miterLimit_;
648size_t Magick::Options::strokeMiterLimit(
void)
const
650 return(_drawInfo->miterlimit);
653void Magick::Options::strokePattern(
const MagickCore::Image *strokePattern_)
655 if (_drawInfo->stroke_pattern)
656 _drawInfo->stroke_pattern=DestroyImageList(_drawInfo->stroke_pattern);
661 _drawInfo->stroke_pattern=CloneImage(
const_cast<MagickCore::Image*
>(
662 strokePattern_),0,0,MagickTrue,exceptionInfo);
663 ThrowPPException(_quiet);
667const MagickCore::Image *Magick::Options::strokePattern(
void)
const
669 return(_drawInfo->stroke_pattern);
672void Magick::Options::strokeWidth(
const double strokeWidth_)
674 _drawInfo->stroke_width=strokeWidth_;
675 setOption(
"strokewidth",strokeWidth_);
678double Magick::Options::strokeWidth(
void)
const
680 return(_drawInfo->stroke_width);
683void Magick::Options::subImage(
const size_t subImage_)
685 _imageInfo->scene=subImage_;
688size_t Magick::Options::subImage(
void)
const
690 return(_imageInfo->scene);
693void Magick::Options::subRange(
const size_t subRange_)
695 _imageInfo->number_scenes=subRange_;
698size_t Magick::Options::subRange(
void)
const
700 return(_imageInfo->number_scenes);
703void Magick::Options::textAntiAlias(
const bool flag_)
705 _drawInfo->text_antialias=
static_cast<MagickBooleanType
>(
706 flag_ ? MagickTrue : MagickFalse);
709bool Magick::Options::textAntiAlias(
void)
const
711 return(
static_cast<bool>(_drawInfo->text_antialias));
714void Magick::Options::textDirection(
const DirectionType direction_)
716 _drawInfo->direction=direction_;
717 (void) SetImageOption(_imageInfo,
"direction",CommandOptionToMnemonic(
718 MagickDirectionOptions,(ssize_t) direction_));
721Magick::DirectionType Magick::Options::textDirection()
const
723 return(_drawInfo->direction);
726void Magick::Options::textEncoding(
const std::string &encoding_)
728 CloneString(&_drawInfo->encoding,encoding_.c_str());
729 (void) SetImageOption(imageInfo(),
"encoding",encoding_.c_str());
732std::string Magick::Options::textEncoding(
void)
const
734 if (_drawInfo->encoding && *_drawInfo->encoding)
735 return(std::string(_drawInfo->encoding));
737 return(std::string());
740void Magick::Options::textGravity(
const GravityType gravity_)
742 _drawInfo->gravity=gravity_;
743 (void) SetImageOption(_imageInfo,
"gravity",CommandOptionToMnemonic(
744 MagickGravityOptions,(ssize_t) gravity_));
747Magick::GravityType Magick::Options::textGravity()
const
749 return(_drawInfo->gravity);
752void Magick::Options::textInterlineSpacing(
const double spacing_)
754 _drawInfo->interline_spacing=spacing_;
755 setOption(
"interline-spacing",spacing_);
758double Magick::Options::textInterlineSpacing(
void)
const
760 return(_drawInfo->interline_spacing);
763void Magick::Options::textInterwordSpacing(
const double spacing_)
765 _drawInfo->interword_spacing=spacing_;
766 setOption(
"interword-spacing",spacing_);
769double Magick::Options::textInterwordSpacing(
void)
const
771 return(_drawInfo->interword_spacing);
774void Magick::Options::textKerning(
const double kerning_)
776 _drawInfo->kerning=kerning_;
777 setOption(
"kerning",kerning_);
780double Magick::Options::textKerning(
void)
const
782 return(_drawInfo->kerning);
785void Magick::Options::textUnderColor(
const Color &undercolor_)
787 _drawInfo->undercolor=undercolor_;
788 setOption(
"undercolor",undercolor_);
793 return(_drawInfo->undercolor);
796void Magick::Options::transformOrigin(
const double tx_,
const double ty_)
800 current=_drawInfo->affine;
809 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
810 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
811 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
812 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
813 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
814 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
817void Magick::Options::transformReset(
void)
819 _drawInfo->affine.sx=1.0;
820 _drawInfo->affine.rx=0.0;
821 _drawInfo->affine.ry=0.0;
822 _drawInfo->affine.sy=1.0;
823 _drawInfo->affine.tx=0.0;
824 _drawInfo->affine.ty=0.0;
827void Magick::Options::transformRotation(
const double angle_)
831 current=_drawInfo->affine;
833 affine.sx=cos(DegreesToRadians(fmod(angle_,360.0)));
834 affine.rx=(-sin(DegreesToRadians(fmod(angle_,360.0))));
835 affine.ry=sin(DegreesToRadians(fmod(angle_,360.0)));
836 affine.sy=cos(DegreesToRadians(fmod(angle_,360.0)));
840 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
841 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
842 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
843 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
844 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
845 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
848void Magick::Options::transformScale(
const double sx_,
const double sy_)
852 current=_drawInfo->affine;
861 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
862 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
863 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
864 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
865 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
866 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
869void Magick::Options::transformSkewX(
const double skewx_)
873 current=_drawInfo->affine;
877 affine.ry=tan(DegreesToRadians(fmod(skewx_,360.0)));
882 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
883 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
884 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
885 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
886 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
887 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
890void Magick::Options::transformSkewY(
const double skewy_)
894 current=_drawInfo->affine;
897 affine.rx=tan(DegreesToRadians(fmod(skewy_,360.0)));
903 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
904 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
905 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
906 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
907 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
908 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
911void Magick::Options::type(
const ImageType type_)
913 _imageInfo->type=type_;
916Magick::ImageType Magick::Options::type(
void)
const
918 return(_imageInfo->type);
921void Magick::Options::verbose(
const bool verboseFlag_)
923 _imageInfo->verbose=(MagickBooleanType) verboseFlag_;
926bool Magick::Options::verbose(
void)
const
928 return(
static_cast<bool>(_imageInfo->verbose));
931void Magick::Options::x11Display(
const std::string &display_)
933 if (display_.length() == 0)
934 _imageInfo->server_name=(
char *) RelinquishMagickMemory(
935 _imageInfo->server_name);
937 Magick::CloneString(&_imageInfo->server_name,display_);
940std::string Magick::Options::x11Display(
void)
const
942 if (_imageInfo->server_name)
943 return(std::string( _imageInfo->server_name));
945 return(std::string());
948MagickCore::DrawInfo *Magick::Options::drawInfo(
void)
953MagickCore::ImageInfo *Magick::Options::imageInfo(
void)
958MagickCore::QuantizeInfo *Magick::Options::quantizeInfo(
void)
960 return(_quantizeInfo);
963Magick::Options::Options(
const MagickCore::ImageInfo* imageInfo_,
964 const MagickCore::QuantizeInfo* quantizeInfo_,
965 const MagickCore::DrawInfo* drawInfo_)
966: _imageInfo((MagickCore::ImageInfo* ) NULL),
967 _quantizeInfo((MagickCore::QuantizeInfo* ) NULL),
968 _drawInfo((MagickCore::DrawInfo* ) NULL),
971 _imageInfo=CloneImageInfo(imageInfo_);
972 _quantizeInfo=CloneQuantizeInfo(quantizeInfo_);
973 _drawInfo=CloneDrawInfo(imageInfo_,drawInfo_);
976void Magick::Options::setOption(
const char *name,
const Color &value_)
982 (void) SetImageOption(imageInfo(),name,option.c_str());
985void Magick::Options::setOption(
const char *name,
const double value_)
988 option[MagickPathExtent];
990 (void) FormatLocaleString(option,MagickPathExtent,
"%.20g",value_);
991 (void) SetImageOption(_imageInfo,name,option);