13#define MAGICKCORE_IMPLEMENTATION 1
14#define MAGICK_PLUSPLUS_IMPLEMENTATION 1
16#include "Magick++/Include.h"
17#include "Magick++/Options.h"
18#include "Magick++/Functions.h"
19#include "Magick++/Exception.h"
22#define MagickPI 3.1415926535897932384626433832795028841971693993751058209749445923078164062
23#define DegreesToRadians(x) (MagickPI*(x)/180.0)
25Magick::Options::Options(
void)
26 : _imageInfo(static_cast<ImageInfo*>(AcquireMagickMemory(
28 _quantizeInfo(static_cast<QuantizeInfo*>(AcquireMagickMemory(
29 sizeof(QuantizeInfo)))),
30 _drawInfo(static_cast<DrawInfo*>(AcquireMagickMemory(sizeof(DrawInfo)))),
34 GetImageInfo(_imageInfo);
37 GetQuantizeInfo(_quantizeInfo);
40 GetDrawInfo(_imageInfo,_drawInfo);
43Magick::Options::Options(
const Options& options_)
44 : _imageInfo(CloneImageInfo(options_._imageInfo)),
45 _quantizeInfo(CloneQuantizeInfo(options_._quantizeInfo)),
46 _drawInfo(CloneDrawInfo(_imageInfo,options_._drawInfo)),
47 _quiet(options_._quiet)
51Magick::Options::~Options()
54 _imageInfo=DestroyImageInfo(_imageInfo);
57 _quantizeInfo=DestroyQuantizeInfo(_quantizeInfo);
60 _drawInfo=DestroyDrawInfo(_drawInfo);
63void Magick::Options::adjoin(
const bool flag_)
65 _imageInfo->adjoin=
static_cast<MagickBooleanType
>(
66 flag_ ? MagickTrue : MagickFalse);
69bool Magick::Options::adjoin(
void)
const
71 return(
static_cast<bool>(_imageInfo->adjoin));
74void Magick::Options::matteColor(
const Color &matteColor_)
76 _imageInfo->matte_color=matteColor_;
79Magick::Color Magick::Options::matteColor(
void)
const
81 return(Magick::Color(_imageInfo->matte_color));
84void Magick::Options::backgroundColor(
const Color &color_)
86 _imageInfo->background_color=color_;
89Magick::Color Magick::Options::backgroundColor(
void)
const
91 return(
Color(_imageInfo->background_color));
94void Magick::Options::backgroundTexture(
const std::string &backgroundTexture_)
96 if (backgroundTexture_.length() == 0)
97 _imageInfo->texture=(
char *) RelinquishMagickMemory(_imageInfo->texture);
99 Magick::CloneString(&_imageInfo->texture,backgroundTexture_);
102std::string Magick::Options::backgroundTexture(
void)
const
104 if (_imageInfo->texture)
105 return(std::string(_imageInfo->texture));
107 return(std::string());
110void Magick::Options::borderColor(
const Color &color_)
112 _imageInfo->border_color=color_;
113 _drawInfo->border_color=color_;
116Magick::Color Magick::Options::borderColor(
void)
const
118 return(
Color(_imageInfo->border_color));
121void Magick::Options::boxColor(
const Color &boxColor_)
123 _drawInfo->undercolor=boxColor_;
126Magick::Color Magick::Options::boxColor(
void)
const
128 return(
Color(_drawInfo->undercolor));
131void Magick::Options::colorspaceType(
const ColorspaceType colorspace_)
133 _imageInfo->colorspace=colorspace_;
136Magick::ColorspaceType Magick::Options::colorspaceType(
void)
const
138 return(
static_cast<Magick::ColorspaceType
>(_imageInfo->colorspace));
141void Magick::Options::compressType(
const CompressionType compressType_)
143 _imageInfo->compression=compressType_;
146Magick::CompressionType Magick::Options::compressType(
void)
const
148 return(
static_cast<Magick::CompressionType
>(_imageInfo->compression));
151void Magick::Options::colorFuzz(
const double fuzz_)
153 _imageInfo->fuzz=fuzz_;
156double Magick::Options::colorFuzz(
void)
const
158 return(_imageInfo->fuzz);
161void Magick::Options::debug(
const bool flag_)
164 SetLogEventMask(
"All");
166 SetLogEventMask(
"None");
169bool Magick::Options::debug(
void)
const
171 if (IsEventLogging())
176void Magick::Options::density(
const Point &density_)
178 if (!density_.isValid())
179 _imageInfo->density=(
char *) RelinquishMagickMemory(_imageInfo->density);
181 CloneString(&_imageInfo->density,density_);
184Magick::Point Magick::Options::density(
void)
const
186 if (_imageInfo->density)
187 return(
Point(_imageInfo->density));
192void Magick::Options::depth(
const size_t depth_)
194 _imageInfo->depth=depth_;
197size_t Magick::Options::depth(
void)
const
199 return(_imageInfo->depth);
202void Magick::Options::endian(
const Magick::EndianType endian_)
204 _imageInfo->endian=endian_;
207Magick::EndianType Magick::Options::endian(
void)
const
209 return(_imageInfo->endian);
212void Magick::Options::file(FILE *file_)
214 SetImageInfoFile(_imageInfo,file_);
217FILE *Magick::Options::file(
void)
const
219 return(GetImageInfoFile(_imageInfo));
222void Magick::Options::fileName(
const std::string &fileName_)
227 max_length=
sizeof(_imageInfo->filename)-1;
228 fileName_.copy(_imageInfo->filename,(
size_t) max_length);
229 if ((ssize_t) fileName_.length() > max_length)
230 _imageInfo->filename[max_length]=0;
232 _imageInfo->filename[fileName_.length()]=0;
235std::string Magick::Options::fileName(
void)
const
237 return(std::string(_imageInfo->filename));
240void Magick::Options::fillColor(
const Color &fillColor_)
242 _drawInfo->fill=fillColor_;
243 if (fillColor_ ==
Color())
244 fillPattern((
const MagickCore::Image*) NULL);
245 setOption(
"fill",fillColor_);
248Magick::Color Magick::Options::fillColor(
void)
const
250 return(_drawInfo->fill);
253void Magick::Options::fillPattern(
const MagickCore::Image *fillPattern_)
255 if (_drawInfo->fill_pattern)
256 _drawInfo->fill_pattern=DestroyImageList(_drawInfo->fill_pattern);
261 _drawInfo->fill_pattern=CloneImage(
const_cast<MagickCore::Image*
>(
262 fillPattern_),0,0,
static_cast<MagickBooleanType
>(MagickTrue),
264 ThrowPPException(_quiet);
268const MagickCore::Image *Magick::Options::fillPattern(
void)
const
270 return(_drawInfo->fill_pattern);
273void Magick::Options::fillRule(
const FillRule &fillRule_)
275 _drawInfo->fill_rule=fillRule_;
278Magick::FillRule Magick::Options::fillRule(
void)
const
280 return(_drawInfo->fill_rule);
283void Magick::Options::font(
const std::string &font_)
285 if (font_.length() == 0)
287 _imageInfo->font=(
char *) RelinquishMagickMemory(_imageInfo->font);
288 _drawInfo->font=(
char *) RelinquishMagickMemory(_drawInfo->font);
292 Magick::CloneString(&_imageInfo->font,font_);
293 Magick::CloneString(&_drawInfo->font,font_);
297std::string Magick::Options::font(
void)
const
299 if (_imageInfo->font)
300 return(std::string(_imageInfo->font));
302 return(std::string());
305void Magick::Options::fontFamily(
const std::string &family_)
307 if (family_.length() == 0)
309 _drawInfo->family=(
char *) RelinquishMagickMemory(_drawInfo->family);
310 DestroyString(RemoveImageOption(imageInfo(),
"family"));
314 Magick::CloneString(&_drawInfo->family,family_);
315 (void) SetImageOption(imageInfo(),
"family",family_.c_str());
319std::string Magick::Options::fontFamily(
void)
const
321 if (_drawInfo->family)
322 return(std::string(_drawInfo->family));
324 return(std::string());
327void Magick::Options::fontPointsize(
const double pointSize_)
329 _imageInfo->pointsize=pointSize_;
330 _drawInfo->pointsize=pointSize_;
333double Magick::Options::fontPointsize(
void)
const
335 return(_imageInfo->pointsize);
338void Magick::Options::fontStyle(
const StyleType style_)
340 _drawInfo->style=style_;
341 (void) SetImageOption(_imageInfo,
"style",CommandOptionToMnemonic(
342 MagickStyleOptions,(ssize_t) style_));
345Magick::StyleType Magick::Options::fontStyle(
void)
const
347 return(_drawInfo->style);
350void Magick::Options::fontWeight(
const size_t weight_)
352 _drawInfo->weight=weight_;
353 setOption(
"weight",(
double) weight_);
356size_t Magick::Options::fontWeight(
void)
const
358 return(_drawInfo->weight);
361std::string Magick::Options::format(
void)
const
367 if (*_imageInfo->magick !=
'\0' )
368 magick_info = GetMagickInfo(_imageInfo->magick,exceptionInfo);
369 ThrowPPException(_quiet);
371 if ((magick_info != 0) && (*magick_info->description !=
'\0'))
372 return(std::string( magick_info->description));
374 return(std::string());
377void Magick::Options::interlaceType(
const InterlaceType interlace_)
379 _imageInfo->interlace=interlace_;
382Magick::InterlaceType Magick::Options::interlaceType(
void)
const
384 return(
static_cast<Magick::InterlaceType
>(_imageInfo->interlace));
387void Magick::Options::magick(
const std::string &magick_)
391 _imageInfo->magick[0] =
'\0';
395 FormatLocaleString(_imageInfo->filename,MagickPathExtent,
"%.1024s:",
398 SetImageInfo(_imageInfo,1,exceptionInfo);
399 ThrowPPException(_quiet);
400 if ( _imageInfo->magick[0] ==
'\0' )
401 throwExceptionExplicit(MagickCore::OptionError,
"Unrecognized image format",
405std::string Magick::Options::magick(
void)
const
407 if ( _imageInfo->magick[0] !=
'\0' )
408 return(std::string(_imageInfo->magick));
410 return(std::string());
413void Magick::Options::monochrome(
const bool monochromeFlag_)
415 _imageInfo->monochrome=(MagickBooleanType) monochromeFlag_;
418bool Magick::Options::monochrome(
void)
const
420 return(
static_cast<bool>(_imageInfo->monochrome));
423void Magick::Options::page(
const Geometry &pageSize_)
425 if (!pageSize_.isValid())
426 _imageInfo->page=(
char *) RelinquishMagickMemory(_imageInfo->page);
428 Magick::CloneString(&_imageInfo->page,pageSize_);
431Magick::Geometry Magick::Options::page(
void)
const
433 if (_imageInfo->page)
439void Magick::Options::quality(
const size_t quality_)
441 _imageInfo->quality=quality_;
444size_t Magick::Options::quality(
void)
const
446 return(_imageInfo->quality);
449void Magick::Options::quantizeColors(
const size_t colors_)
451 _quantizeInfo->number_colors=colors_;
454size_t Magick::Options::quantizeColors(
void)
const
456 return(_quantizeInfo->number_colors);
459void Magick::Options::quantizeColorSpace(
const ColorspaceType colorSpace_)
461 _quantizeInfo->colorspace=colorSpace_;
464Magick::ColorspaceType Magick::Options::quantizeColorSpace(
void)
const
466 return(
static_cast<Magick::ColorspaceType
>(_quantizeInfo->colorspace));
469void Magick::Options::quantizeDither(
const bool ditherFlag_)
471 quantizeDither(ditherFlag_ ? RiemersmaDitherMethod : NoDitherMethod);
474bool Magick::Options::quantizeDither(
void)
const
476 return(
static_cast<bool>(_imageInfo->dither));
479void Magick::Options::quantizeDither(
const DitherMethod ditherMethod_)
481 _imageInfo->dither=(MagickBooleanType) (ditherMethod_ != NoDitherMethod);
482 _quantizeInfo->dither_method=ditherMethod_;
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_);
550Magick::Geometry Magick::Options::size(
void)
const
552 if (_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_);
577Magick::Color Magick::Options::strokeColor(
void)
const
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; fabs(strokeDashArray_[x]) >= MagickEpsilon; x++) ;
593 _drawInfo->dash_pattern=
static_cast<double*
>(AcquireMagickMemory((x+1)*
595 if (!_drawInfo->dash_pattern)
596 throwExceptionExplicit(MagickCore::ResourceLimitError,
597 "Unable to allocate dash-pattern memory");
600 (void) memset(_drawInfo->dash_pattern,0,(
size_t) (x+1)*
sizeof(
double));
601 memcpy(_drawInfo->dash_pattern,strokeDashArray_,x*
sizeof(
double));
602 _drawInfo->dash_pattern[x]=0.0;
607const double *Magick::Options::strokeDashArray(
void)
const
609 return(_drawInfo->dash_pattern);
612void Magick::Options::strokeDashOffset(
const double strokeDashOffset_)
614 _drawInfo->dash_offset=strokeDashOffset_;
617double Magick::Options::strokeDashOffset(
void)
const
619 return(_drawInfo->dash_offset);
622void Magick::Options::strokeLineCap(
const LineCap lineCap_)
624 _drawInfo->linecap=lineCap_;
627Magick::LineCap Magick::Options::strokeLineCap(
void)
const
629 return(_drawInfo->linecap);
632void Magick::Options::strokeLineJoin(
const LineJoin lineJoin_)
634 _drawInfo->linejoin=lineJoin_;
637Magick::LineJoin Magick::Options::strokeLineJoin(
void)
const
639 return(_drawInfo->linejoin);
642void Magick::Options::strokeMiterLimit(
const size_t miterLimit_)
644 _drawInfo->miterlimit=miterLimit_;
647size_t Magick::Options::strokeMiterLimit(
void)
const
649 return(_drawInfo->miterlimit);
652void Magick::Options::strokePattern(
const MagickCore::Image *strokePattern_)
654 if (_drawInfo->stroke_pattern)
655 _drawInfo->stroke_pattern=DestroyImageList(_drawInfo->stroke_pattern);
660 _drawInfo->stroke_pattern=CloneImage(
const_cast<MagickCore::Image*
>(
661 strokePattern_),0,0,MagickTrue,exceptionInfo);
662 ThrowPPException(_quiet);
666const MagickCore::Image *Magick::Options::strokePattern(
void)
const
668 return(_drawInfo->stroke_pattern);
671void Magick::Options::strokeWidth(
const double strokeWidth_)
673 _drawInfo->stroke_width=strokeWidth_;
674 setOption(
"strokewidth",strokeWidth_);
677double Magick::Options::strokeWidth(
void)
const
679 return(_drawInfo->stroke_width);
682void Magick::Options::subImage(
const size_t subImage_)
684 _imageInfo->scene=subImage_;
687size_t Magick::Options::subImage(
void)
const
689 return(_imageInfo->scene);
692void Magick::Options::subRange(
const size_t subRange_)
694 _imageInfo->number_scenes=subRange_;
697size_t Magick::Options::subRange(
void)
const
699 return(_imageInfo->number_scenes);
702void Magick::Options::textAntiAlias(
const bool flag_)
704 _drawInfo->text_antialias=
static_cast<MagickBooleanType
>(
705 flag_ ? MagickTrue : MagickFalse);
708bool Magick::Options::textAntiAlias(
void)
const
710 return(
static_cast<bool>(_drawInfo->text_antialias));
713void Magick::Options::textDirection(
const DirectionType direction_)
715 _drawInfo->direction=direction_;
716 (void) SetImageOption(_imageInfo,
"direction",CommandOptionToMnemonic(
717 MagickDirectionOptions,(ssize_t) direction_));
720Magick::DirectionType Magick::Options::textDirection()
const
722 return(_drawInfo->direction);
725void Magick::Options::textEncoding(
const std::string &encoding_)
727 CloneString(&_drawInfo->encoding,encoding_.c_str());
728 (void) SetImageOption(imageInfo(),
"encoding",encoding_.c_str());
731std::string Magick::Options::textEncoding(
void)
const
733 if (_drawInfo->encoding && *_drawInfo->encoding)
734 return(std::string(_drawInfo->encoding));
736 return(std::string());
739void Magick::Options::textGravity(
const GravityType gravity_)
741 _drawInfo->gravity=gravity_;
742 (void) SetImageOption(_imageInfo,
"gravity",CommandOptionToMnemonic(
743 MagickGravityOptions,(ssize_t) gravity_));
746Magick::GravityType Magick::Options::textGravity()
const
748 return(_drawInfo->gravity);
751void Magick::Options::textInterlineSpacing(
const double spacing_)
753 _drawInfo->interline_spacing=spacing_;
754 setOption(
"interline-spacing",spacing_);
757double Magick::Options::textInterlineSpacing(
void)
const
759 return(_drawInfo->interline_spacing);
762void Magick::Options::textInterwordSpacing(
const double spacing_)
764 _drawInfo->interword_spacing=spacing_;
765 setOption(
"interword-spacing",spacing_);
768double Magick::Options::textInterwordSpacing(
void)
const
770 return(_drawInfo->interword_spacing);
773void Magick::Options::textKerning(
const double kerning_)
775 _drawInfo->kerning=kerning_;
776 setOption(
"kerning",kerning_);
779double Magick::Options::textKerning(
void)
const
781 return(_drawInfo->kerning);
784void Magick::Options::textUnderColor(
const Color &undercolor_)
786 _drawInfo->undercolor=undercolor_;
787 setOption(
"undercolor",undercolor_);
790Magick::Color Magick::Options::textUnderColor(
void)
const
792 return(_drawInfo->undercolor);
795void Magick::Options::transformOrigin(
const double tx_,
const double ty_)
799 current=_drawInfo->affine;
808 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
809 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
810 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
811 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
812 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
813 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
816void Magick::Options::transformReset(
void)
818 _drawInfo->affine.sx=1.0;
819 _drawInfo->affine.rx=0.0;
820 _drawInfo->affine.ry=0.0;
821 _drawInfo->affine.sy=1.0;
822 _drawInfo->affine.tx=0.0;
823 _drawInfo->affine.ty=0.0;
826void Magick::Options::transformRotation(
const double angle_)
830 current=_drawInfo->affine;
832 affine.sx=cos(DegreesToRadians(fmod(angle_,360.0)));
833 affine.rx=(-sin(DegreesToRadians(fmod(angle_,360.0))));
834 affine.ry=sin(DegreesToRadians(fmod(angle_,360.0)));
835 affine.sy=cos(DegreesToRadians(fmod(angle_,360.0)));
839 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
840 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
841 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
842 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
843 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
844 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
847void Magick::Options::transformScale(
const double sx_,
const double sy_)
851 current=_drawInfo->affine;
860 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
861 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
862 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
863 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
864 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
865 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
868void Magick::Options::transformSkewX(
const double skewx_)
872 current=_drawInfo->affine;
876 affine.ry=tan(DegreesToRadians(fmod(skewx_,360.0)));
881 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
882 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
883 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
884 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
885 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
886 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
889void Magick::Options::transformSkewY(
const double skewy_)
893 current=_drawInfo->affine;
896 affine.rx=tan(DegreesToRadians(fmod(skewy_,360.0)));
902 _drawInfo->affine.sx=current.sx*affine.sx+current.ry*affine.rx;
903 _drawInfo->affine.rx=current.rx*affine.sx+current.sy*affine.rx;
904 _drawInfo->affine.ry=current.sx*affine.ry+current.ry*affine.sy;
905 _drawInfo->affine.sy=current.rx*affine.ry+current.sy*affine.sy;
906 _drawInfo->affine.tx=current.sx*affine.tx+current.ry*affine.ty+current.tx;
907 _drawInfo->affine.ty=current.rx*affine.tx+current.sy*affine.ty+current.ty;
910void Magick::Options::type(
const ImageType type_)
912 _imageInfo->type=type_;
915Magick::ImageType Magick::Options::type(
void)
const
917 return(_imageInfo->type);
920void Magick::Options::verbose(
const bool verboseFlag_)
922 _imageInfo->verbose=(MagickBooleanType) verboseFlag_;
925bool Magick::Options::verbose(
void)
const
927 return(
static_cast<bool>(_imageInfo->verbose));
930void Magick::Options::x11Display(
const std::string &display_)
932 if (display_.length() == 0)
933 _imageInfo->server_name=(
char *) RelinquishMagickMemory(
934 _imageInfo->server_name);
936 Magick::CloneString(&_imageInfo->server_name,display_);
939std::string Magick::Options::x11Display(
void)
const
941 if (_imageInfo->server_name)
942 return(std::string( _imageInfo->server_name));
944 return(std::string());
947MagickCore::DrawInfo *Magick::Options::drawInfo(
void)
952MagickCore::ImageInfo *Magick::Options::imageInfo(
void)
957MagickCore::QuantizeInfo *Magick::Options::quantizeInfo(
void)
959 return(_quantizeInfo);
962Magick::Options::Options(
const MagickCore::ImageInfo* imageInfo_,
963 const MagickCore::QuantizeInfo* quantizeInfo_,
964 const MagickCore::DrawInfo* drawInfo_)
965: _imageInfo((MagickCore::ImageInfo* ) NULL),
966 _quantizeInfo((MagickCore::QuantizeInfo* ) NULL),
967 _drawInfo((MagickCore::DrawInfo* ) NULL),
970 _imageInfo=CloneImageInfo(imageInfo_);
971 _quantizeInfo=CloneQuantizeInfo(quantizeInfo_);
972 _drawInfo=CloneDrawInfo(imageInfo_,drawInfo_);
975void Magick::Options::setOption(
const char *name,
const Color &value_)
981 (void) SetImageOption(imageInfo(),name,option.c_str());
984void Magick::Options::setOption(
const char *name,
const double value_)
987 option[MagickPathExtent];
989 (void) FormatLocaleString(option,MagickPathExtent,
"%.17g",value_);
990 (void) SetImageOption(_imageInfo,name,option);