private Double Adjust(double value, double adjustment, AdjustmentMode mode) { if (mode == AdjustmentMode.Multiplication) return Coerce(value * adjustment, 0, 1); else if (mode == AdjustmentMode.Addition) return Coerce(value + adjustment, 0, 1); else if (mode == AdjustmentMode.Absolute) return Coerce(adjustment, 0, 1); else return Coerce(value, 0, 1); }
private char EncodeMode(AdjustmentMode m) { switch (m) { case AdjustmentMode.Absolute: return 'A'; case AdjustmentMode.Addition: return '+'; case AdjustmentMode.Multiplication: return 'M'; case AdjustmentMode.None: return 'X'; } return 'X'; }
public ImageProcessor DecodeSettings(String str) { if (!str.StartsWith("MM|")) throw new InvalidOperationException("Unexpected Input!"); Match exprMatch = Regex.Match(str, @"MM\|ST(?<step>[\-0-9\.]+)\|BC(?<base>[\-0-9]+)\|H(?<hm>(A|M|X|\+){1})(?<ha>[\-0-9\.]+)\|S(?<sm>(A|M|X|\+){1})(?<sa>[\-0-9\.]+)\|L(?<lm>(A|M|X|\+){1})(?<la>[\-0-9\.]+)\|AA(?<aa>[\-0-9\.]+)", RegexOptions.ExplicitCapture); if (!exprMatch.Success) throw new Exception(); this.Step = double.Parse(exprMatch.Result("${step}")); this.BaseColor = new ColorRGB(Color.FromArgb(Int32.Parse(exprMatch.Result("${base}")))); this.m_hm = DecodeMode(exprMatch.Result("${hm}")[0]); this.m_sm = DecodeMode(exprMatch.Result("${sm}")[0]); this.m_lm = DecodeMode(exprMatch.Result("${lm}")[0]); this.m_ha = Double.Parse(exprMatch.Result("${ha}")); this.m_sa = Double.Parse(exprMatch.Result("${sa}")); this.m_la = Double.Parse(exprMatch.Result("${la}")); this.m_aa = Double.Parse(exprMatch.Result("${aa}")); return this; }