% November 1998 %
% %
% %
-% Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization %
+% Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
*/
MagickExport int GetMagickPrecision(void)
{
-#define MagickPrecision 6
-
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- if (SetMagickPrecision(0) == 0)
- {
- char
- *limit;
-
- (void) SetMagickPrecision(MagickPrecision);
- limit=GetEnvironmentValue("MAGICK_PRECISION");
- if (limit == (char *) NULL)
- limit=GetPolicyValue("precision");
- if (limit != (char *) NULL)
- {
- (void) SetMagickPrecision(StringToInteger(limit));
- limit=DestroyString(limit);
- }
- }
return(SetMagickPrecision(0));
}
\f
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% SetMagickPrecision() sets the maximum number of significant digits to be
-% printed and returns it.
+% printed.
+%
+% An input argument of 0 returns the current precision setting.
+%
+% A negative value forces the precision to reset to a default value according
+% to the environment variable "MAGICK_PRECISION", the current 'policy'
+% configuration setting, or the default value of '6', in that order.
%
% The format of the SetMagickPrecision method is:
%
*/
MagickExport int SetMagickPrecision(const int precision)
{
+#define MagickPrecision 6
+
static int
magick_precision = 0;
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
- if (precision != 0)
+ if (precision > 0)
magick_precision=precision;
+ if ((precision < 0) || (magick_precision == 0))
+ {
+ char
+ *limit;
+
+ /*
+ Precision reset, or it has not been set yet
+ */
+ magick_precision = MagickPrecision;
+ limit=GetEnvironmentValue("MAGICK_PRECISION");
+ if (limit == (char *) NULL)
+ limit=GetPolicyValue("precision");
+ if (limit != (char *) NULL)
+ {
+ magick_precision=StringToInteger(limit);
+ limit=DestroyString(limit);
+ }
+ }
return(magick_precision);
}
\f