protected NodeMeasurement MeasureTree(IGraphics g, TournamentNameTable names, float textHeight, EliminationNode nodeA, EliminationNode nodeB) { var mA = nodeA == null ? null : nodeA.Measure(g, names, textHeight); var mB = nodeB == null ? null : nodeB.Measure(g, names, textHeight); if (mA == null && mB == null) { return(null); } else if (mA != null && mB != null) { return(new NodeMeasurement( Math.Max(mA.Width, mB.Width) + BracketPreIndent + BracketPostIndent, mA.Height + mB.Height + BracketVSpacing, (mA.CenterLine + (mA.Height + BracketVSpacing + mB.CenterLine)) / 2)); } else if (mA != null) { return(new NodeMeasurement( mA.Width + BracketPreIndent + BracketPostIndent, mA.Height, mA.CenterLine)); } else { return(new NodeMeasurement( mB.Width + BracketPreIndent + BracketPostIndent, mB.Height, mB.CenterLine)); } }
protected void RenderTree(IGraphics g, TournamentNameTable names, float x, float y, float textHeight, EliminationNode nodeA, EliminationNode nodeB) { var m = this.MeasureTree(g, names, textHeight, nodeA, nodeB); var mA = nodeA == null ? null : nodeA.Measure(g, names, textHeight); var mB = nodeB == null ? null : nodeB.Measure(g, names, textHeight); if (mA == null && mB == null) { return; } else if (mA != null && mB != null) { // Preline g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent), y + m.CenterLine), new PointF( x + m.Width, y + m.CenterLine)); // V-Line g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent), y + mA.CenterLine), new PointF( x + (m.Width - BracketPreIndent), y + mA.Height + BracketVSpacing + mB.CenterLine)); // Post-Line-A g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent - BracketPostIndent), y + mA.CenterLine), new PointF( x + (m.Width - BracketPreIndent), y + mA.CenterLine)); // Post-Line-B g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent - BracketPostIndent), y + mA.Height + BracketVSpacing + mB.CenterLine), new PointF( x + (m.Width - BracketPreIndent), y + mA.Height + BracketVSpacing + mB.CenterLine)); nodeA.Render(g, names, x + (m.Width - (mA.Width + BracketPreIndent + BracketPostIndent)), y, textHeight); nodeB.Render(g, names, x + (m.Width - (mB.Width + BracketPreIndent + BracketPostIndent)), y + mA.Height + BracketVSpacing, textHeight); } else if (mA != null) { // TODO: Render Lines? nodeA.Render(g, names, x, y, textHeight); } else { // TODO: Render Lines? nodeB.Render(g, names, x, y, textHeight); } }
protected NodeMeasurement MeasureTree(IGraphics g, TournamentNameTable names, float textHeight, EliminationNode nodeA, EliminationNode nodeB) { var mA = nodeA == null ? null : nodeA.Measure(g, names, textHeight); var mB = nodeB == null ? null : nodeB.Measure(g, names, textHeight); if (mA == null && mB == null) { return null; } else if (mA != null && mB != null) { return new NodeMeasurement( Math.Max(mA.Width, mB.Width) + BracketPreIndent + BracketPostIndent, mA.Height + mB.Height + BracketVSpacing, (mA.CenterLine + (mA.Height + BracketVSpacing + mB.CenterLine)) / 2); } else if (mA != null) { return new NodeMeasurement( mA.Width + BracketPreIndent + BracketPostIndent, mA.Height, mA.CenterLine); } else { return new NodeMeasurement( mB.Width + BracketPreIndent + BracketPostIndent, mB.Height, mB.CenterLine); } }
protected void RenderTree(IGraphics g, TournamentNameTable names, float x, float y, float textHeight, EliminationNode nodeA, EliminationNode nodeB) { var m = this.MeasureTree(g, names, textHeight, nodeA, nodeB); var mA = nodeA == null ? null : nodeA.Measure(g, names, textHeight); var mB = nodeB == null ? null : nodeB.Measure(g, names, textHeight); if (mA == null && mB == null) { return; } else if (mA != null && mB != null) { // Preline g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent), y + m.CenterLine), new PointF( x + m.Width, y + m.CenterLine)); // V-Line g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent), y + mA.CenterLine), new PointF( x + (m.Width - BracketPreIndent), y + mA.Height + BracketVSpacing + mB.CenterLine)); // Post-Line-A g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent - BracketPostIndent), y + mA.CenterLine), new PointF( x + (m.Width - BracketPreIndent), y + mA.CenterLine)); // Post-Line-B g.DrawLine( BracketPen, new PointF( x + (m.Width - BracketPreIndent - BracketPostIndent), y + mA.Height + BracketVSpacing + mB.CenterLine), new PointF( x + (m.Width - BracketPreIndent), y + mA.Height + BracketVSpacing + mB.CenterLine)); nodeA.Render(g, names, x + (m.Width - (mA.Width + BracketPreIndent + BracketPostIndent)), y, textHeight); nodeB.Render(g, names, x + (m.Width - (mB.Width + BracketPreIndent + BracketPostIndent)), y + mA.Height + BracketVSpacing, textHeight); } else if (mA != null) { // TODO: Render Lines? nodeA.Render(g, names, x, y, textHeight); } else { // TODO: Render Lines? nodeB.Render(g, names, x, y, textHeight); } }