Пример #1
0
        public static IEnumerable <IRangeDescriptor> Create(Color baseColor, IEnumerable <object> values)
        {
            var factory = new RangeDescriptorFactory(baseColor, values);
            List <IRangeDescriptor> descriptors = new List <IRangeDescriptor>();
            IRangeDescriptor        next        = null;

            while (null != (next = factory.Next()))
            {
                descriptors.Add(next);
            }

            return(descriptors);
        }
Пример #2
0
        private void Visit(IRangeDescriptor descriptor)
        {
            string notation;

            if (!AllowedFieldNumberRanges.All(range => range.Contains(descriptor)))
            {
                // TODO: TBD: add more descriptive bits...
                notation = Join(", ", AllowedFieldNumberRanges.Select(y => y.ToRangeNotation()));
                throw new InvalidOperationException($"{descriptor.ToRangeNotation()} out of valid range(s) {notation}.");
            }

            if (!DefaultReservedRanges.Any(range => range.TryIntersect(descriptor, out _)))
            {
                return;
            }

            notation = Join(", ", DefaultReservedRanges.Where(range => range.TryIntersect(descriptor, out _))
                            .Select(range => range.ToRangeNotation()));
            throw new InvalidOperationException(
                      $"{descriptor.ToRangeNotation()} cannot fall within reserved range {notation}.");
        }
Пример #3
0
 public RangeNodeFactory( IScaleDescriptor owner, IRangeDescriptor range )
 {
     _owner = owner;
     _range = range;
 }
Пример #4
0
 public RangeNodeFactory(IScaleDescriptor owner, IRangeDescriptor range)
 {
     _owner = owner;
     _range = range;
 }