From 9fe8cd76fbf1dc52cef01a2b137ca1b659b244c8 Mon Sep 17 00:00:00 2001 From: cristy Date: Tue, 19 Oct 2010 01:24:07 +0000 Subject: [PATCH] --- ChangeLog | 1 + magick/option.c | 2 ++ magick/statistic.c | 21 +++++++++++---------- magick/statistic.h | 3 ++- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8c7441278..2a84c8e83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * Ignore PS bounding box offsets if -page is set. * Use #pragma omp master for dumping single threaded debugging information (single caused a fault). + * Add support for -evaluate exp. 2010-10-12 6.6.5-0 Anthony Thyssen * Added "filter:sigma" expert setting defining the 'sigma' for the Gaussian diff --git a/magick/option.c b/magick/option.c index 709ae548d..1e01e5974 100644 --- a/magick/option.c +++ b/magick/option.c @@ -903,6 +903,8 @@ static const OptionInfo { "Cos", (ssize_t) CosineEvaluateOperator, MagickFalse }, { "Cosine", (ssize_t) CosineEvaluateOperator, MagickFalse }, { "Divide", (ssize_t) DivideEvaluateOperator, MagickFalse }, + { "Exp", (ssize_t) ExponentialEvaluateOperator, MagickFalse }, + { "Exponential", (ssize_t) ExponentialEvaluateOperator, MagickFalse }, { "GaussianNoise", (ssize_t) GaussianNoiseEvaluateOperator, MagickFalse }, { "ImpulseNoise", (ssize_t) ImpulseNoiseEvaluateOperator, MagickFalse }, { "LaplacianNoise", (ssize_t) LaplacianNoiseEvaluateOperator, MagickFalse }, diff --git a/magick/statistic.c b/magick/statistic.c index d44fd0909..db53e3dee 100644 --- a/magick/statistic.c +++ b/magick/statistic.c @@ -224,8 +224,7 @@ static MagickRealType ApplyEvaluateOperator(RandomInfo *random_info, } case AndEvaluateOperator: { - result=(MagickRealType) ((size_t) pixel & (size_t) - (value+0.5)); + result=(MagickRealType) ((size_t) pixel & (size_t) (value+0.5)); break; } case CosineEvaluateOperator: @@ -239,6 +238,12 @@ static MagickRealType ApplyEvaluateOperator(RandomInfo *random_info, result=pixel/(value == 0.0 ? 1.0 : value); break; } + case ExponentialEvaluateOperator: + { + result=(MagickRealType) (QuantumRange*exp((double) (value*QuantumScale* + pixel))); + break; + } case GaussianNoiseEvaluateOperator: { result=(MagickRealType) GenerateDifferentialNoise(random_info,pixel, @@ -259,8 +264,7 @@ static MagickRealType ApplyEvaluateOperator(RandomInfo *random_info, } case LeftShiftEvaluateOperator: { - result=(MagickRealType) ((size_t) pixel << (size_t) - (value+0.5)); + result=(MagickRealType) ((size_t) pixel << (size_t) (value+0.5)); break; } case LogEvaluateOperator: @@ -297,8 +301,7 @@ static MagickRealType ApplyEvaluateOperator(RandomInfo *random_info, } case OrEvaluateOperator: { - result=(MagickRealType) ((size_t) pixel | (size_t) - (value+0.5)); + result=(MagickRealType) ((size_t) pixel | (size_t) (value+0.5)); break; } case PoissonNoiseEvaluateOperator: @@ -315,8 +318,7 @@ static MagickRealType ApplyEvaluateOperator(RandomInfo *random_info, } case RightShiftEvaluateOperator: { - result=(MagickRealType) ((size_t) pixel >> (size_t) - (value+0.5)); + result=(MagickRealType) ((size_t) pixel >> (size_t) (value+0.5)); break; } case SetEvaluateOperator: @@ -360,8 +362,7 @@ static MagickRealType ApplyEvaluateOperator(RandomInfo *random_info, } case XorEvaluateOperator: { - result=(MagickRealType) ((size_t) pixel ^ (size_t) - (value+0.5)); + result=(MagickRealType) ((size_t) pixel ^ (size_t) (value+0.5)); break; } } diff --git a/magick/statistic.h b/magick/statistic.h index b600d7d7a..e16807440 100644 --- a/magick/statistic.h +++ b/magick/statistic.h @@ -71,7 +71,8 @@ typedef enum SineEvaluateOperator, AddModulusEvaluateOperator, MeanEvaluateOperator, - AbsEvaluateOperator + AbsEvaluateOperator, + ExponentialEvaluateOperator } MagickEvaluateOperator; typedef enum -- 2.50.1