using System.Collections; using System.Collections.Generic; namespace Gma.QrCodeNet.Encoding; internal struct MatrixRectangle : IEnumerable { internal MatrixRectangle(MatrixPoint location, MatrixSize size) : this() { Location = location; Size = size; } public MatrixPoint Location { get; private set; } public MatrixSize Size { get; private set; } public IEnumerator GetEnumerator() { for (int j = Location.Y; j < Location.Y + Size.Height; j++) { for (int i = Location.X; i < Location.X + Size.Width; i++) { yield return new MatrixPoint(i, j); } } } IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); public override string ToString() => $"Rectangle({Location.X};{Location.Y}):({Size.Width} x {Size.Height})"; }