namespace EnvelopeGenerator.Web.Models; public class AnnotationParams { private Annotation? DefaultAnnotation { get; init; } private readonly Dictionary _annots = new(); public required Dictionary Annots { get => _annots; init { _annots = value; foreach (var name in _annots.Keys) { #region set default values if(DefaultAnnotation is not null) { // To set default value, annotation must have default (0) value but default must has non-default value if (_annots[name]._left == default && DefaultAnnotation.Left != default) _annots[name]._left = DefaultAnnotation.Left; if (_annots[name]._top == default && DefaultAnnotation.Top != default) _annots[name]._top = DefaultAnnotation.Top; if (_annots[name]._width == default && DefaultAnnotation.Width != default) _annots[name]._width = DefaultAnnotation.Width; if (_annots[name]._height == default && DefaultAnnotation.Height != default) _annots[name]._height = DefaultAnnotation.Height; } #endregion #region set bound annotations // horizontal if (_annots[name].HorBoundAnnotName is string horBoundAnnotName) if (_annots.TryGetValue(horBoundAnnotName, out var horBoundAnnot)) _annots[name].HorBoundAnnot = horBoundAnnot; else throw new InvalidOperationException($"{horBoundAnnotName} added as bound anotation. However, it is not defined."); // vertical if (_annots[name].VerBoundAnnotName is string verBoundAnnotName) if (_annots.TryGetValue(verBoundAnnotName, out var verBoundAnnot)) _annots[name].VerBoundAnnot = verBoundAnnot; else throw new InvalidOperationException($"{verBoundAnnotName} added as bound anotation. However, it is not defined."); #endregion } } } }