public static IList <MosaicMediaRow> Calculate(IList items, double width = 320) { var mosaic = new MosaicMedia(items); var preferredRowSize = mosaic.PrepareLayout(width); var result = new MosaicMediaRow[mosaic.rows.Count == 0 ? items.Count : mosaic.rows.Count]; if (mosaic.rows.Count == 0) { for (int k = 0; k < items.Count; k++) { result[k] = new MosaicMediaRow(1) { new MosaicMediaPosition(k, items[k], 0) }; } } else { var index = 0; for (int i = 0; i < mosaic.rows.Count; i++) { result[i] = new MosaicMediaRow(mosaic.rows[i].Count); for (int j = 0; j < mosaic.rows[i].Count; j++) { result[i].Add(new MosaicMediaPosition(index, items[index], mosaic.itemSpans[index] / preferredRowSize)); index++; } } } return(result); }
public static IList <IList <MosaicMediaPosition> > Calculate(IList items) { var width = 320; var mosaic = new MosaicMedia(items); var preferredRowSize = mosaic.PrepareLayout(width); var result = new IList <MosaicMediaPosition> [mosaic.rows.Count]; var index = 0; for (int i = 0; i < mosaic.rows.Count; i++) { result[i] = new MosaicMediaPosition[mosaic.rows[i].Count]; for (int j = 0; j < mosaic.rows[i].Count; j++) { result[i][j] = new MosaicMediaPosition(items[index], mosaic.itemSpans[index] / preferredRowSize); index++; } } return(result); }