Exemple #1
0
 public GapLayoutEngine(ILayoutEngine inner, int innerGap = 0, int outerGap = 0, int delta = 20)
 {
     _inner    = inner;
     _innerGap = innerGap;
     _outerGap = outerGap;
     _delta    = delta;
 }
Exemple #2
0
            private static ILayoutTree GetLayoutTree(IReport report, ITargetDevice targetDevice, LayoutNotificationCallback callback)
            {
                LayoutInfo           layoutInfo = new LayoutInfo(report, targetDevice, new TextMetricsProvider(), callback);
                ILayoutEngineFactory factory    = report.GetService(typeof(ILayoutEngineFactory)) as ILayoutEngineFactory;

                Assert.IsNotNull(factory);

                ILayoutEngine engine = factory.GetLayoutEngine();

                return(engine.BuildLayout(layoutInfo));
            }
        public void Draw(Rectangle treemapRectangle)
        {
            this.AssertValid();
            if (this.DrawItem == null)
            {
                throw new InvalidOperationException("TreemapGenerator.Draw: The Draw(Rectangle) method initiates owner draw, which requires that the DrawItem event be handled.  The DrawItem event is not being handled.");
            }
            ILayoutEngine oLayoutEngine = this.CreateLayoutEngine();

            this.CalculateRectangles(this.m_oNodes, treemapRectangle, null, this.m_iPaddingPx, this.m_iPaddingPx, this.m_iPenWidthPx, oLayoutEngine);
            this.DrawNodesByOwnerDraw(this.m_oNodes);
        }
Exemple #4
0
 private void boxesToolStripMenuItem_Click(object sender, EventArgs e)
 {
     layoutEngine = new BoxesLayoutEngine <ISymbolicExpressionTreeNode>(n => n.Subtrees, n => n.GetLength(), n => n.GetDepth())
     {
         NodeWidth         = PreferredNodeWidth,
         NodeHeight        = PreferredNodeHeight,
         HorizontalSpacing = MinimumHorizontalDistance,
         VerticalSpacing   = MinimumVerticalDistance
     };
     reingoldTilfordToolStripMenuItem.Checked = false;
     boxesToolStripMenuItem.Checked           = true;
     Repaint();
 }
 private void reingoldTilfordToolStripMenuItem_Click(object sender, EventArgs e)
 {
     minHorizontalDistance = 30;
     minVerticalDistance   = 30;
     layoutEngine          = new ReingoldTilfordLayoutEngine <ISymbolicExpressionTreeNode>(n => n.Subtrees)
     {
         NodeWidth         = preferredNodeWidth,
         NodeHeight        = preferredNodeHeight,
         HorizontalSpacing = minHorizontalDistance,
         VerticalSpacing   = minVerticalDistance
     };
     reingoldTilfordToolStripMenuItem.Checked = true;
     boxesToolStripMenuItem.Checked           = false;
     Repaint();
 }
    public SymbolicExpressionTreeChart() {
      InitializeComponent();
      this.image = new Bitmap(Width, Height);
      this.stringFormat = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center };
      this.spacing = 5;
      this.lineColor = Color.Black;
      this.backgroundColor = Color.White;
      this.textFont = new Font(FontFamily.GenericSansSerif, 12);

      visualTreeNodes = new Dictionary<ISymbolicExpressionTreeNode, VisualTreeNode<ISymbolicExpressionTreeNode>>();
      visualLines = new Dictionary<Tuple<ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode>, VisualTreeNodeConnection>();

      layoutEngine = new ReingoldTilfordLayoutEngine<ISymbolicExpressionTreeNode>(n => n.Subtrees) {
        NodeWidth = preferredNodeWidth,
        NodeHeight = preferredNodeHeight,
        HorizontalSpacing = minHorizontalDistance,
        VerticalSpacing = minVerticalDistance
      };
      reingoldTilfordToolStripMenuItem.Checked = true;
    }
Exemple #7
0
        private void InternalConstruct()
        {
            // Create internal state objects
            _details = new CommandDetails(this);
            _engine  = new SingleLayoutEngine();
            _states  = new CommandStateCollection();
            _padding = new Padding();

            // Define state
            _initCount       = 0;
            _layoutRequired  = false;
            _mouseDownButton = MouseButtons.None;
            _mouseCapture    = false;
            _currentCmdState = null;
            _tooltipCmdState = null;

            // Hook into padding changed events
            _padding.PaddingChanged += new EventHandler(OnPaddingChanged);

            // Create exposed/internal collections of commands
            _externals = new CommandBaseCollection();
            _internals = new CommandBaseCollection();

            // Hook into command collection modifications
            _externals.Clearing += new CollectionClear(OnCommandsClearing);
            _externals.Cleared  += new CollectionClear(OnCommandsCleared);
            _externals.Inserted += new CollectionChange(OnCommandInserted);
            _externals.Removed  += new CollectionChange(OnCommandRemoved);
            _internals.Clearing += new CollectionClear(OnCommandsClearing);
            _internals.Cleared  += new CollectionClear(OnCommandsCleared);
            _internals.Inserted += new CollectionChange(OnCommandInserted);
            _internals.Removed  += new CollectionChange(OnCommandRemoved);

            // Need a timer so that when the mouse hovers we can show tooltips
            _hoverTimer       = new Timer();
            _hoverTimer.Tick += new EventHandler(OnMouseHoverTick);

            // Need a timer so that we can send updates to top level commands
            _updateTimer       = new Timer();
            _updateTimer.Tick += new EventHandler(OnUpdateTick);
        }
        protected void CalculateAndDrawRectangles(Graphics oGraphics, RectangleF oTreemapRectangle, Nodes oNodes, Node oParentNode)
        {
            Debug.Assert(oGraphics != null);
            Debug.Assert(oNodes != null);
            this.AssertValid();
            Brush brush = new SolidBrush(this.m_oBackColor);

            oGraphics.FillRectangle(brush, oTreemapRectangle);
            brush.Dispose();
            ILayoutEngine oLayoutEngine = this.CreateLayoutEngine();

            this.CalculateRectangles(oNodes, oTreemapRectangle, oParentNode, this.GetTopLevelTopPaddingPx(oGraphics), this.m_iPaddingPx, this.m_iPenWidthPx, oLayoutEngine);
            ColorGradientMapper colorGradientMapper  = null;
            ColorGradientMapper colorGradientMapper2 = null;

            if (this.m_eNodeColorAlgorithm == NodeColorAlgorithm.UseColorMetric)
            {
                colorGradientMapper = new ColorGradientMapper();
                Debug.Assert(this.m_fMaxColorMetric > 0f);
                colorGradientMapper.Initialize(oGraphics, 0f, this.m_fMaxColorMetric, Color.White, this.m_oMaxColor, this.m_iDiscretePositiveColors, true);
                colorGradientMapper2 = new ColorGradientMapper();
                Debug.Assert(this.m_fMinColorMetric < 0f);
                colorGradientMapper2.Initialize(oGraphics, 0f, -this.m_fMinColorMetric, Color.White, this.m_oMinColor, this.m_iDiscreteNegativeColors, true);
            }
            PenCache penCache = new PenCache();

            penCache.Initialize(this.m_oBorderColor);
            this.DrawRectangles(oNodes, 0, oGraphics, colorGradientMapper2, colorGradientMapper, penCache);
            if (colorGradientMapper2 != null)
            {
                colorGradientMapper2.Dispose();
            }
            if (colorGradientMapper != null)
            {
                colorGradientMapper.Dispose();
            }
            penCache.Dispose();
        }
Exemple #9
0
        public SymbolicExpressionTreeChart()
        {
            InitializeComponent();
            this.image        = new Bitmap(Width, Height);
            this.stringFormat = new StringFormat {
                Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center
            };
            this.lineColor       = Color.Black;
            this.backgroundColor = Color.White;
            this.textFont        = new Font(FontFamily.GenericSansSerif, 12);

            visualTreeNodes = new Dictionary <ISymbolicExpressionTreeNode, VisualTreeNode <ISymbolicExpressionTreeNode> >();
            visualLines     = new Dictionary <Tuple <ISymbolicExpressionTreeNode, ISymbolicExpressionTreeNode>, VisualTreeNodeConnection>();

            layoutEngine = new ReingoldTilfordLayoutEngine <ISymbolicExpressionTreeNode>(n => n.Subtrees)
            {
                NodeWidth         = PreferredNodeWidth,
                NodeHeight        = PreferredNodeHeight,
                HorizontalSpacing = MinimumHorizontalDistance,
                VerticalSpacing   = MinimumVerticalDistance
            };
            reingoldTilfordToolStripMenuItem.Checked = true;
        }
Exemple #10
0
 public void Init(ILayoutEngine obj)
 {
     obj.Relayout(null);
 }
 private void boxesToolStripMenuItem_Click(object sender, EventArgs e) {
   minHorizontalDistance = 5;
   minVerticalDistance = 5;
   layoutEngine = new BoxesLayoutEngine<ISymbolicExpressionTreeNode>(n => n.Subtrees, n => n.GetLength(), n => n.GetDepth()) {
     NodeWidth = preferredNodeWidth,
     NodeHeight = preferredNodeHeight,
     HorizontalSpacing = minHorizontalDistance,
     VerticalSpacing = minVerticalDistance
   };
   reingoldTilfordToolStripMenuItem.Checked = false;
   boxesToolStripMenuItem.Checked = true;
   Repaint();
 }
        protected void CalculateRectangles(Nodes oNodes, RectangleF oParentRectangle, Node oParentNode, int iTopPaddingPx, int iLeftRightBottomPaddingPx, int iPenWidthPx, ILayoutEngine oLayoutEngine)
        {
            Debug.Assert(oNodes != null);
            Debug.Assert(iTopPaddingPx > 0);
            Debug.Assert(iLeftRightBottomPaddingPx > 0);
            Debug.Assert(iPenWidthPx > 0);
            Debug.Assert(oLayoutEngine != null);
            this.AssertValid();
            int num = iTopPaddingPx;

            if (oParentNode == null)
            {
                iTopPaddingPx = iLeftRightBottomPaddingPx;
            }
            if (!this.AddPaddingToParentRectangle(ref oParentRectangle, ref iTopPaddingPx, ref iLeftRightBottomPaddingPx))
            {
                oLayoutEngine.SetNodeRectanglesToEmpty(oNodes, true);
            }
            else
            {
                if (oParentNode == null)
                {
                    iTopPaddingPx = num;
                }
                oLayoutEngine.CalculateNodeRectangles(oNodes, oParentRectangle, oParentNode, this.m_eEmptySpaceLocation);
                int num2           = this.DecrementPadding(iLeftRightBottomPaddingPx);
                int iPenWidthPx2   = this.DecrementPenWidth(iPenWidthPx);
                int iTopPaddingPx2 = 0;
                switch (this.m_eTextLocation)
                {
                case TextLocation.CenterCenter:
                {
                    iTopPaddingPx2 = num2;
                    break;
                }

                case TextLocation.Top:
                {
                    iTopPaddingPx2 = iTopPaddingPx;
                    break;
                }

                default:
                {
                    Debug.Assert(false);
                    break;
                }
                }
                foreach (Node current in oNodes)
                {
                    if (!current.Rectangle.IsEmpty)
                    {
                        RectangleF rectangle = current.Rectangle;
                        if (!this.AddPaddingToChildRectangle(ref rectangle, oParentRectangle, iLeftRightBottomPaddingPx))
                        {
                            current.Rectangle  = this.FixSmallRectangle(current.Rectangle);
                            current.PenWidthPx = 1;
                            oLayoutEngine.SetNodeRectanglesToEmpty(current.Nodes, true);
                        }
                        else
                        {
                            current.Rectangle  = rectangle;
                            current.PenWidthPx = iPenWidthPx;
                            RectangleF oParentRectangle2 = RectangleF.Inflate(rectangle, (float)(-(float)iPenWidthPx), (float)(-(float)iPenWidthPx));
                            this.CalculateRectangles(current.Nodes, oParentRectangle2, current, iTopPaddingPx2, num2, iPenWidthPx2, oLayoutEngine);
                        }
                    }
                }
            }
        }
 public RenderEngine(ILayoutEngine layoutEngine)
 {
     this.layoutEngine = layoutEngine;
 }
Exemple #14
0
 public MenuBarLayoutEngine(ILayoutEngine inner, string title, int offset)
 {
     _inner  = inner;
     _title  = title;
     _offset = offset;
 }
Exemple #15
0
 public SkiaRenderEngine(ILayoutEngine layoutEngine)
     : base(layoutEngine)
 {
 }