Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/14/14 17:15:32 (10 years ago)
Author:
bburlacu
Message:

#1772: Small improvements to FragmentGraphView, moved tracking classes to separate folder.

Location:
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking
Files:
1 added
1 moved

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/FragmentGraphView.cs

    r10732 r10746  
    1313  [Content(typeof(IGenealogyGraph<IFragment<ISymbolicExpressionTreeNode>>), IsDefaultView = true)]
    1414  public sealed partial class FragmentGraphView : ItemView {
    15     private int PreferredSpacing = 50;
     15    private const int PreferredHorizontalSpacing = 10;
     16    private const int PreferredVerticalSpacing = 25;
    1617
    1718    private ReingoldTilfordLayoutEngine<TileLayoutNode> layoutEngine;
     
    3132
    3233      layoutEngine = new ReingoldTilfordLayoutEngine<TileLayoutNode>(n => n.Children) {
    33         HorizontalSpacing = 50,
    34         VerticalSpacing = 50,
     34        HorizontalSpacing = PreferredHorizontalSpacing,
     35        VerticalSpacing = PreferredVerticalSpacing,
    3536      };
    3637      symbolicExpressionEngine = new ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode>(n => n.Subtrees) {
    37         HorizontalSpacing = 50,
    38         VerticalSpacing = 50,
     38        HorizontalSpacing = PreferredHorizontalSpacing,
     39        VerticalSpacing = PreferredVerticalSpacing,
    3940        NodeWidth = 80,
    4041        NodeHeight = 40
     
    7475      layoutEngine.NodeWidth = maxTileWidth;
    7576      layoutEngine.NodeHeight = maxTileHeight;
    76       layoutEngine.HorizontalSpacing = PreferredSpacing;
    77       layoutEngine.VerticalSpacing = PreferredSpacing;
     77      layoutEngine.HorizontalSpacing = PreferredHorizontalSpacing;
     78      layoutEngine.VerticalSpacing = PreferredVerticalSpacing;
    7879
    7980      var visualNodes = layoutEngine.CalculateLayout(fragmentRoot);
     
    9293        var aPos = aTile.Position;
    9394
    94         var lowerLeftMarker = new FixedSizeCircle(chart, aTile.Position, 5, new Pen(Color.Red), new SolidBrush(Color.Transparent));
    95         var upperRightMarker = new FixedSizeCircle(chart, new PointD(aPos.X + aSize.Width, aPos.Y + aSize.Height), 5,
    96           new Pen(Color.Blue), new SolidBrush(Color.Transparent));
    97         symbolicExpressionChartControl.Add(lowerLeftMarker); symbolicExpressionChartControl.Add(upperRightMarker);
     95        // mark swapped fragment
     96        if (node.Content.Index != 0) {
     97          var subtree = node.Content.Root.NodeAt(node.Content.Index);
     98          foreach (var s in subtree.IterateNodesPrefix()) {
     99            var primitive = aTile.GetPrimitive(s);
     100            if (primitive != null) {
     101              var rpb = primitive as RectangularPrimitiveBase;
     102              if (rpb != null) {
     103                rpb.Pen = new Pen(Color.RoyalBlue);
     104              }
     105            }
     106          }
     107        }
     108
     109        // mark the subtree that was replaced by the fragment
     110        if (node.Children.Any() && node.Content.Index != 0) {
     111          var child = node.Children.First();
     112          {
     113            var subtree = child.Content.Root.NodeAt(node.Content.Index);
     114            var tile = tileDictionary[child].Tile;
     115            foreach (var s in subtree.IterateNodesPrefix()) {
     116              var primitive = tile.GetPrimitive(s);
     117              if (primitive != null) {
     118                var rpb = primitive as RectangularPrimitiveBase;
     119                if (rpb != null) {
     120                  rpb.Pen = new Pen(Color.DarkOrange);
     121                }
     122              }
     123            }
     124          }
     125        }
    98126
    99127        foreach (var child in node.Children) {
     
    104132          var line = new Line(chart, new PointD(aPos.X + aSize.Width / 2.0, aPos.Y + aSize.Height), new PointD(bPos.X + bSize.Width / 2.0, bPos.Y));
    105133          symbolicExpressionChartControl.Add(line);
     134
     135
    106136        }
    107137      }
    108       //      symbolicExpressionChartControl.FlipVertical();
    109138      symbolicExpressionChartControl.UpdateEnabled = true;
    110139      symbolicExpressionChartControl.EnforceUpdate();
Note: See TracChangeset for help on using the changeset viewer.