public GapLayoutEngine(ILayoutEngine inner, int innerGap = 0, int outerGap = 0, int delta = 20) { _inner = inner; _innerGap = innerGap; _outerGap = outerGap; _delta = delta; }
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); }
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; }
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(); }
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; }
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; }
public MenuBarLayoutEngine(ILayoutEngine inner, string title, int offset) { _inner = inner; _title = title; _offset = offset; }
public SkiaRenderEngine(ILayoutEngine layoutEngine) : base(layoutEngine) { }