private bool ApplyEffect(BitmapSource bitmap, EffectType effectType, out BitmapSource result) { if (!Effects.CanApply(bitmap, effectType)) { MessageBox.Show(string.Format("This effect is not supported for that image. Image format: {0}", bitmap.Format), "Error", MessageBoxButton.OK, MessageBoxImage.Exclamation); result = null; return(false); } if (effectType.GetParameter() != null) { string errorMessage; object parameterValue; if (!ValidateParameter(effectType, EffectParameterComboBox.Text, out errorMessage, out parameterValue)) { MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error); result = null; return(false); } result = Effects.EffectByType[effectType](bitmap, parameterValue); } else if (effectType == EffectType.Dct) { string errorMessage; DctParameters dctParameters; if (!ValidateDct(out errorMessage, out dctParameters)) { MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error); result = null; return(false); } result = Effects.EffectByType[effectType](bitmap, dctParameters); return(false); } else if (effectType == EffectType.Wavelet) { string errorMessage; WaveletParameters waveletParameters; if (!ValidateWavelet(out errorMessage, out waveletParameters)) { MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error); result = null; return(false); } result = Effects.EffectByType[effectType](bitmap, waveletParameters); return(true); } else { result = Effects.EffectByType[effectType](bitmap, null); } return(true); }