public FormatStrony UstalFormatStrony(IWymiarowalny strona) { var szerokość = strona.Szerokość.Mm; var wysokość = strona.Wysokość.Mm; var formatA4 = StandardoweFormaty.Szukaj("A4"); var powierzchniaA4 = formatA4.Szerokość.Pixels * formatA4.Wysokość.Pixels; var powierzchniaStrony = strona.Szerokość.Pixels * strona.Wysokość.Pixels; var stronyA4 = (double)powierzchniaStrony / (double)powierzchniaA4; var formatyRosnąco = _formaty.OrderBy(f => f.StronyA4); FormatStrony wybranyFormat = null; foreach (var format in formatyRosnąco) { if (stronyA4 > format.StronyA4) { continue; } wybranyFormat = format; break; //wybieramy ten format } if (wybranyFormat == null) { wybranyFormat = formatyRosnąco.Last(); } return(new FormatStrony { Nazwa = wybranyFormat.Nazwa, StronyA4 = stronyA4 }); }
public FormatStrony UstalFormatStrony(IWymiarowalny strona) { if (strona == null) { throw new ArgumentNullException("strona != null"); } if (!_formaty.Any()) { throw new InvalidOperationException("Brak zdefiniowanych formatów z którymi można dokonać porównania"); } var najbliższyFormat = _formaty.First(); var najmniejszaOdległość = strona.OdległośćPixelowa(najbliższyFormat); foreach (var format in _formaty.Skip(1)) { var odległość = strona.OdległośćPixelowa(format); if (odległość < najmniejszaOdległość) { najmniejszaOdległość = odległość; najbliższyFormat = format; } } return(najbliższyFormat); }
public static int OdległośćPixelowa(this IWymiarowalny w1, IWymiarowalny w2) { return(Odległość( w1.Szerokość.Pixels, w1.Wysokość.Pixels, w2.Szerokość.Pixels, w2.Wysokość.Pixels)); }