/// <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);
    }
Ejemplo n.º 2
0
    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();
    }