/// <summary> /// Does a mapping with the given images and returns the resulting stats. /// </summary> /// <param name="images"></param> /// <returns></returns> public DetailedSingleTestStats GetMappingStats(IEnumerable <IImageInfo> images) { // Mapping will call MappingRestrictedBox, which will add records to this collection. _currentMappingIterationStats = new List <IterationStats>(); DetailedSingleTestStats stats = new DetailedSingleTestStats(); TestUtils.RunTest <S>(this, images, stats); stats.Iterations = _currentMappingIterationStats; return(stats); }
protected void rptrTests_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { if ((e.Item.ItemType != ListItemType.Item) & (e.Item.ItemType != ListItemType.AlternatingItem)) { return; } // ---------- SingleTest singleTest = (SingleTest)e.Item.DataItem; // --------------------------- // Show the rectangles to be placed Literal ltHeading = (Literal)(e.Item.FindControl("ltHeading")); ltHeading.Text = singleTest.Heading; GridView gvRectangleDimensions = (GridView)(e.Item.FindControl("gvRectangleDimensions")); var imageInfosHighestFirst = singleTest.ImageInfos.OrderByDescending(p => p.Height); gvRectangleDimensions.DataSource = imageInfosHighestFirst; gvRectangleDimensions.DataBind(); // ----------------- // Place the rectangles on a canvas. The canvas will produce images of each stage. MapperOptimalEfficiency_AdditionalStats <Sprite> mapper = new MapperOptimalEfficiency_AdditionalStats <Sprite>(_canvas, _cutoffEfficiency, _maximumNbrCandidates); DetailedSingleTestStats stats = mapper.GetMappingStats(singleTest.ImageInfos); // Show the results Literal ltFinalWidth = (Literal)(e.Item.FindControl("ltFinalWidth")); ltFinalWidth.Text = stats.FinalSprite.Width.ToString(); Literal ltFinalHeight = (Literal)(e.Item.FindControl("ltFinalHeight")); ltFinalHeight.Text = stats.FinalSprite.Height.ToString(); Literal ltFinalArea = (Literal)(e.Item.FindControl("ltFinalArea")); ltFinalArea.Text = stats.FinalSprite.Area.ToString("N0"); Literal ltFinalEfficiency = (Literal)(e.Item.FindControl("ltFinalEfficiency")); ltFinalEfficiency.Text = stats.Efficiency.ToString("p"); GridView gvSpriteImageOffsets = (GridView)(e.Item.FindControl("gvSpriteImageOffsets")); gvSpriteImageOffsets.DataSource = stats.FinalSprite.MappedImages; gvSpriteImageOffsets.DataBind(); System.Web.UI.WebControls.Image imgSprite = (System.Web.UI.WebControls.Image)(e.Item.FindControl("imgSprite")); imgSprite.ImageUrl = _canvas.SpriteToImage(stats.FinalSprite); var EnhancedIterations = from s in stats.Iterations select new { Result = s.Result, MaxCanvasWidth = s.MaxCanvasWidth == _canvas.UnlimitedSize ? "infinite" : s.MaxCanvasWidth.ToString(), MaxCanvasHeight = s.MaxCanvasHeight, MaxCanvasArea = s.MaxCanvasWidth == _canvas.UnlimitedSize ? "infinite" : (s.MaxCanvasWidth * s.MaxCanvasHeight).ToString("N0"), IntermediateSpriteWidth = s.IntermediateSpriteWidth, IntermediateSpriteHeight = s.IntermediateSpriteHeight, IntermediateSpriteArea = s.IntermediateSpriteWidth * s.IntermediateSpriteHeight, IntermediateSpriteEfficiency = TestUtils.Efficiency(s.IntermediateSpriteWidth, s.IntermediateSpriteHeight, stats.TotalAreaAllImages), ImageDetails = s.ImageDetails }; Repeater rptrIterations = (Repeater)(e.Item.FindControl("rptrIterations")); rptrIterations.DataSource = EnhancedIterations; rptrIterations.DataBind(); }