예제 #1
0
        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);
        }
예제 #2
0
        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);
        }