private void Draw(PaintArgs p, Plot plot, PlotAxis axis, bool drawMajors) { if (this.Visible && plot != null) { string dockDataViewName = axis.DockDataViewName; PlotDataView plotDataView = plot.DataViews[dockDataViewName]; if (plotDataView != null) { p.Graphics.SetClip(plotDataView.BoundsClip); this.DrawToDataView(p, axis, plotDataView.BoundsClip, drawMajors); foreach (PlotDataView dataView in plot.DataViews) { if (dataView != plotDataView) { if (axis.DockVertical) { if (PlotBase.GetNamesMatch(dataView.GridLinesMirrorVertical, dockDataViewName)) { this.DrawToDataView(p, axis, dataView.BoundsClip, drawMajors); } } else if (PlotBase.GetNamesMatch(dataView.GridLinesMirrorHorizontal, dockDataViewName)) { this.DrawToDataView(p, axis, dataView.BoundsClip, drawMajors); } } } } } }
private void DrawLine(PaintArgs p, PlotAxis axis, Rectangle r, Pen pen, int APixels) { if (axis.DockHorizontal) { p.Graphics.DrawLine(pen, r.Left, APixels, r.Right, APixels); } else { p.Graphics.DrawLine(pen, APixels, r.Top, APixels, r.Bottom); } }
public override void ObjectAdded(PlotObject value) { base.ObjectAdded(value); if (value is PlotAxis && value.Name == this.m_DockStartAxisName) { this.m_CachedDockStartAxis = (value as PlotAxis); } else if (value is PlotAxis && value.Name == this.m_DockStopAxisName) { this.m_CachedDockStopAxis = (value as PlotAxis); } }
public override void ObjectRemoved(PlotObject value) { base.ObjectRemoved(value); if (value == this.m_CachedDockStartAxis) { this.m_CachedDockStartAxis = null; } else if (value == this.m_CachedDockStopAxis) { this.m_CachedDockStopAxis = null; } }
private void Draw(PaintArgs p, Pen pen, PlotDataCursorDisplayCollection displays) { if (this.HitRegion != null) { this.HitRegion.Dispose(); this.HitRegion = null; } if (this.Visible && this.DataCursor != null && this.XAxis != null && this.YAxis != null) { bool swap = this.Style == PlotAxisReference.YAxis ^ this.DataCursor.XYSwapped; PlotAxis axisPosition = this.AxisPosition; PlotAxis axisRange = this.AxisRange; int positionPixels = this.PositionPixels; int dataViewPixelsMin = axisRange.DataViewPixelsMin; int dataViewPixelsMax = axisRange.DataViewPixelsMax; this.m_PositionArray.Clear(); this.m_PositionArray.Add(dataViewPixelsMin); this.m_PositionArray.Add(dataViewPixelsMax); if (this.DataCursor.WindowShowing) { foreach (PlotDataCursorDisplay display in displays) { if (!display.DisableWindow) { if (this.Style == PlotAxisReference.XAxis) { this.m_PositionArray.Add(this.AxisRange.PercentToPixels(display.YPosition) - this.DataCursor.Window.Size); this.m_PositionArray.Add(this.AxisRange.PercentToPixels(display.YPosition) + this.DataCursor.Window.Size); } else { this.m_PositionArray.Add(this.AxisRange.PercentToPixels(display.XPosition) - this.DataCursor.Window.Size); this.m_PositionArray.Add(this.AxisRange.PercentToPixels(display.XPosition) + this.DataCursor.Window.Size); } } } } this.m_PositionArray.Sort(); for (int i = 0; i < this.m_PositionArray.Count; i += 2) { Point pt = iDraw.Point(swap, positionPixels, (int)this.m_PositionArray[i]); Point pt2 = iDraw.Point(swap, positionPixels, (int)this.m_PositionArray[i + 1]); p.Graphics.DrawLine(pen, pt, pt2); } Rectangle b = iRectangle.FromLTRB(swap, positionPixels, dataViewPixelsMin, positionPixels, dataViewPixelsMax); b.Inflate(this.DataCursor.HitRegionSize, this.DataCursor.HitRegionSize); GraphicsPath graphicsPath = new GraphicsPath(); graphicsPath.AddRectangle(Rectangle.Intersect(this.DataCursor.BoundsClip, b)); this.HitRegion = new Region(graphicsPath); this.m_PositionPixels = positionPixels; } }
private int AddXY(double x, double y, bool nullValue, bool emptyValue, double radius) { if (this.RequireConsecutiveData) { base.CheckForValidNextX(x); } PlotDataPointBubble plotDataPointBubble = (PlotDataPointBubble)base.m_Data.AddNew(); base.DataPointInitializing = true; try { plotDataPointBubble.X = x; plotDataPointBubble.Y = y; plotDataPointBubble.Null = nullValue; plotDataPointBubble.Empty = emptyValue; plotDataPointBubble.Radius = radius; } finally { base.DataPointInitializing = false; } base.m_Data.UpdateMinMaxMean(plotDataPointBubble); if (base.SendXAxisTrackingData) { PlotAxis xAxis = base.XAxis; if (xAxis != null) { xAxis.Tracking.NewData(x - radius); xAxis.Tracking.NewData(x + radius); } } if (!nullValue && !emptyValue && base.SendYAxisTrackingData) { PlotAxis yAxis = base.YAxis; if (yAxis != null) { yAxis.Tracking.NewData(y + radius); yAxis.Tracking.NewData(y - radius); } } this.DoDataChange(); return(base.m_Data.LastNewDataPointIndex); }
private int AddXY(double x, double y, bool nullValue, bool emptyValue, double width) { base.CheckForValidNextX(x); PlotDataPointBar plotDataPointBar = (PlotDataPointBar)base.m_Data.AddNew(); base.DataPointInitializing = true; try { plotDataPointBar.X = x; plotDataPointBar.Y = y; plotDataPointBar.Null = nullValue; plotDataPointBar.Empty = emptyValue; plotDataPointBar.Width = width; } finally { base.DataPointInitializing = false; } base.m_Data.UpdateMinMaxMean(plotDataPointBar); if (base.SendXAxisTrackingData) { PlotAxis xAxis = base.XAxis; if (xAxis != null) { base.XAxis.Tracking.NewData(x - this.Width / 2.0); base.XAxis.Tracking.NewData(x + this.Width / 2.0); } } if (!nullValue && !emptyValue && base.SendYAxisTrackingData) { PlotAxis yAxis = base.YAxis; if (yAxis != null) { base.YAxis.Tracking.NewData(y); base.YAxis.Tracking.NewData(this.Reference); } } this.DoDataChange(); return(base.m_Data.LastNewDataPointIndex); }
private void DrawToDataView(PaintArgs p, PlotAxis axis, Rectangle r, bool drawMajors) { p.Graphics.SetClip(r); if (this.Major.Visible && drawMajors) { Pen pen = this.I_Major.GetPen(p); foreach (ScaleTickBase tick in axis.ScaleDisplay.TickList) { if (tick is ScaleTickMajor) { this.DrawLine(p, axis, r, pen, axis.ScaleDisplay.ValueToPixels(tick.Value)); } } } if (this.Mid.Visible && drawMajors) { Pen pen = this.I_Mid.GetPen(p); foreach (ScaleTickBase tick2 in axis.ScaleDisplay.TickList) { if (tick2 is ScaleTickMid) { this.DrawLine(p, axis, r, pen, axis.ScaleDisplay.ValueToPixels(tick2.Value)); } } } if (this.Minor.Visible && !drawMajors) { Pen pen = this.I_Minor.GetPen(p); foreach (ScaleTickBase tick3 in axis.ScaleDisplay.TickList) { if (tick3 is ScaleTickMinor) { this.DrawLine(p, axis, r, pen, axis.ScaleDisplay.ValueToPixels(tick3.Value)); } } } }
private void Draw(PaintArgs p, PlotDataCursorDisplay display) { int num = 3; if (this.DataCursor.WindowShowing) { num += this.DataCursor.Window.Size; } if (this.HitRegion != null) { this.HitRegion.Dispose(); this.HitRegion = null; } if (this.Visible && !this.Hide && this.DataCursor != null && this.XAxis != null && this.YAxis != null) { PlotDataCursorPointer pointer = this.DataCursor.Pointer1; PlotDataCursorPointer pointer2 = this.DataCursor.Pointer2; Pen pen = p.Graphics.Pen(this.DataCursor.Line.Color, DashStyle.Dash, (float)this.DataCursor.Line.Thickness); bool flag; int num2; if (pointer.Visible && pointer2.Visible && pointer.AxisPosition == pointer2.AxisPosition) { flag = true; this.AxisPosition = pointer.AxisRange; num2 = (pointer.PositionPixels + pointer2.PositionPixels) / 2; } else if (pointer.Visible && pointer2.Visible) { flag = false; if (pointer.AxisRange.DockHorizontal) { this.AxisPosition = pointer.AxisRange; num2 = pointer.PositionPixels; } else { this.AxisPosition = pointer2.AxisRange; num2 = pointer2.PositionPixels; } } else { flag = false; if (pointer.Visible) { this.AxisPosition = pointer.AxisRange; num2 = pointer.AxisPosition.PercentToPixels(display.XPosition); } else { this.AxisPosition = pointer2.AxisRange; num2 = pointer2.AxisPosition.PercentToPixels(display.YPosition); } } Orientation orientation = this.AxisPosition.DockHorizontal ? Orientation.Vertical : Orientation.Horizontal; Size size = p.Graphics.MeasureString(this.Text, this.Font); int width = size.Width; int height = size.Height; int num3 = width + 6; int num4 = height + 6; int num5 = this.AxisPosition.PercentToPixels(display.HintPosition); Rectangle r; if (orientation == Orientation.Vertical) { int num6 = width + num + 6; r = new Rectangle(num2 - num3 / 2, num5 - num4 / 2, num3, num4); if (!flag) { if (num2 + num6 > this.DataCursor.BoundsClip.Right) { r.Offset(-(num3 / 2 + num), 0); } else { r.Offset(num3 / 2 + num, 0); } } else { p.Graphics.DrawLine(pen, pointer.PositionPixels, num5, pointer2.PositionPixels, num5); } } else { int num6 = height + num + 6; r = new Rectangle(num5 - num3 / 2, num2 - num4 / 2, num3, num4); if (!flag) { if (num2 + num6 > this.DataCursor.BoundsClip.Bottom) { r.Offset(0, -(num4 / 2 + num)); } else { r.Offset(0, num4 / 2 + num); } } else { p.Graphics.DrawLine(pen, num5, pointer.PositionPixels, num5, pointer2.PositionPixels); } } this.DrawHintBox(p, r); } }
void IPlotAxisGridLines.DrawMinors(PaintArgs p, Plot plot, PlotAxis axis) { this.Draw(p, plot, axis, false); }
void IPlotAxisGridLines.DrawMajors(PaintArgs p, Plot plot, PlotAxis axis) { this.Draw(p, plot, axis, true); }
public void CalcualteDimensions(PaintArgs p) { this.TotalStackingPixels = 0; this.MaxDepthScreen = 0; this.MaxDepthLayout = 0; this.MaxDockMargin = -10000; this.OverlapStart = 0; PlotLayoutBase plotLayoutBase = null; PlotLayoutBase plotLayoutBase2 = null; for (int i = 0; i < this.Items.Count; i++) { PlotLayoutBase @object = this.Items[i].Object; this.MaxDepthLayout = Math.Max(this.MaxDepthLayout, 21); @object.TextOverlapPixelsStart = 0; @object.TextOverlapPixelsStop = 0; @object.StackingPixelsStart = 0; @object.StackingPixelsStop = 0; if (@object.Visible) { this.MaxDepthScreen = Math.Max(this.MaxDepthScreen, @object.DockDepthPixels); this.MaxDockMargin = Math.Max(this.MaxDockMargin, @object.DockMargin); if (plotLayoutBase == null) { plotLayoutBase = @object; } plotLayoutBase2 = @object; } } if (this.MaxDockMargin == -10000) { this.MaxDockMargin = 0; } foreach (PlotLayoutBlockItem item in this.Items) { PlotAxis plotAxis = item.Object as PlotAxis; if (plotAxis != null) { bool flag = plotLayoutBase != plotLayoutBase2; if (plotAxis.DockForceStacking) { flag = true; } if (flag) { int num; if (plotAxis.DockVertical) { num = (int)Math.Round((double)p.Graphics.MeasureString("0", plotAxis.ScaleDisplay.TickMajor.Font).Height *plotAxis.DockStackingEndsMargin); } num = (int)Math.Round((double)p.Graphics.MeasureString("0", plotAxis.ScaleDisplay.TickMajor.Font).Width *plotAxis.DockStackingEndsMargin); if (plotAxis == plotLayoutBase && !plotAxis.DockForceStacking) { plotAxis.TextOverlapPixelsStop = plotAxis.ScaleDisplay.TextOverlapPixels; plotAxis.StackingPixelsStop = num; this.TotalStackingPixels += plotAxis.ScaleDisplay.TextOverlapPixels + num; } else if (plotAxis == plotLayoutBase2 && !plotAxis.DockForceStacking) { plotAxis.TextOverlapPixelsStart = plotAxis.ScaleDisplay.TextOverlapPixels; plotAxis.StackingPixelsStart = num; this.TotalStackingPixels += plotAxis.ScaleDisplay.TextOverlapPixels + num; } else { plotAxis.TextOverlapPixelsStart = plotAxis.ScaleDisplay.TextOverlapPixels; plotAxis.TextOverlapPixelsStop = plotAxis.ScaleDisplay.TextOverlapPixels; plotAxis.StackingPixelsStart = num; plotAxis.StackingPixelsStop = num; this.TotalStackingPixels += 2 * plotAxis.ScaleDisplay.TextOverlapPixels + 2 * num; } } } } if (plotLayoutBase != null) { PlotAxis plotAxis = plotLayoutBase as PlotAxis; if (plotAxis != null) { this.OverlapStart = plotAxis.ScaleDisplay.TextOverlapPixels; } } if (plotLayoutBase2 != null) { PlotAxis plotAxis = plotLayoutBase2 as PlotAxis; if (plotAxis != null) { this.OverlapStop = plotAxis.ScaleDisplay.TextOverlapPixels; } } }
public void CalculateAndSetAllDockObjectBounds() { int num = this.InnerRectangleScreen.Left; int num2 = this.InnerRectangleLayout.Left; int height = this.InnerRectangleScreen.Height; int height2 = this.InnerRectangleLayout.Height; int maxDepthScreen; int maxDepthLayout; foreach (PlotLayoutUniqueDockOrder uniqueDockOrder in this.ListLeft.UniqueDockOrders) { maxDepthScreen = uniqueDockOrder.MaxDepthScreen; maxDepthLayout = uniqueDockOrder.MaxDepthLayout; int num3 = num - uniqueDockOrder.MaxDockMargin; int num4 = num2; int left = num3 - maxDepthScreen; int left2 = num4 - maxDepthLayout; foreach (PlotLayoutBlockItem item in uniqueDockOrder.Items) { PlotLayoutDockableDataView plotLayoutDockableDataView = item.Object as PlotLayoutDockableDataView; if (plotLayoutDockableDataView != null) { int num5 = (int)((double)this.InnerRectangleScreen.Bottom - plotLayoutDockableDataView.DockPercentStart * (double)height); int bottom = (int)((double)this.InnerRectangleLayout.Bottom - plotLayoutDockableDataView.DockPercentStart * (double)height2); num5 -= plotLayoutDockableDataView.TextOverlapPixelsStart + plotLayoutDockableDataView.StackingPixelsStart; int num6 = (int)((double)this.InnerRectangleScreen.Bottom - plotLayoutDockableDataView.DockPercentStop * (double)height); int top = (int)((double)this.InnerRectangleLayout.Bottom - plotLayoutDockableDataView.DockPercentStop * (double)height2); num6 += plotLayoutDockableDataView.TextOverlapPixelsStop + plotLayoutDockableDataView.StackingPixelsStop; item.BoundsScreen = iRectangle.FromLTRB(left, num6, num3, num5); item.BoundsLayout = iRectangle.FromLTRB(left2, top, num4, bottom); PlotAxis plotAxis = item.Object as PlotAxis; if (plotAxis != null) { item.BoundsClip = iRectangle.FromLTRB(left, num6 - plotAxis.ScaleTextOverlapPixels, num3, num5 + plotAxis.ScaleTextOverlapPixels); } else { item.BoundsClip = item.BoundsScreen; } } } num -= maxDepthScreen + uniqueDockOrder.MaxDockMargin; num2 -= maxDepthLayout; } num = this.InnerRectangleScreen.Right; num2 = this.InnerRectangleLayout.Right; height = this.InnerRectangleScreen.Height; height2 = this.InnerRectangleLayout.Height; foreach (PlotLayoutUniqueDockOrder uniqueDockOrder2 in this.ListRight.UniqueDockOrders) { maxDepthScreen = uniqueDockOrder2.MaxDepthScreen; maxDepthLayout = uniqueDockOrder2.MaxDepthLayout; int left = num + uniqueDockOrder2.MaxDockMargin; int left2 = num2; int num3 = left + maxDepthScreen; int num4 = left2 + maxDepthLayout; foreach (PlotLayoutBlockItem item2 in uniqueDockOrder2.Items) { PlotLayoutDockableDataView plotLayoutDockableDataView = item2.Object as PlotLayoutDockableDataView; if (plotLayoutDockableDataView != null) { int num5 = (int)((double)this.InnerRectangleScreen.Bottom - plotLayoutDockableDataView.DockPercentStart * (double)height); int bottom = (int)((double)this.InnerRectangleLayout.Bottom - plotLayoutDockableDataView.DockPercentStart * (double)height2); num5 -= plotLayoutDockableDataView.TextOverlapPixelsStart + plotLayoutDockableDataView.StackingPixelsStart; int num6 = (int)((double)this.InnerRectangleScreen.Bottom - plotLayoutDockableDataView.DockPercentStop * (double)height); int top = (int)((double)this.InnerRectangleLayout.Bottom - plotLayoutDockableDataView.DockPercentStop * (double)height2); num6 += plotLayoutDockableDataView.TextOverlapPixelsStop + plotLayoutDockableDataView.StackingPixelsStop; item2.BoundsScreen = iRectangle.FromLTRB(left, num6, num3, num5); item2.BoundsLayout = iRectangle.FromLTRB(left2, top, num4, bottom); PlotAxis plotAxis = item2.Object as PlotAxis; if (plotAxis != null) { item2.BoundsClip = iRectangle.FromLTRB(left, num6 - plotAxis.ScaleTextOverlapPixels, num3, num5 + plotAxis.ScaleTextOverlapPixels); } else { item2.BoundsClip = item2.BoundsScreen; } } } num += maxDepthScreen + uniqueDockOrder2.MaxDockMargin; num2 += maxDepthLayout; } num = this.InnerRectangleScreen.Top; num2 = this.InnerRectangleLayout.Top; maxDepthScreen = this.InnerRectangleScreen.Width; maxDepthLayout = this.InnerRectangleLayout.Width; foreach (PlotLayoutUniqueDockOrder uniqueDockOrder3 in this.ListTop.UniqueDockOrders) { height = uniqueDockOrder3.MaxDepthScreen; height2 = uniqueDockOrder3.MaxDepthLayout; int num5 = num - uniqueDockOrder3.MaxDockMargin; int bottom = num2; int num6 = num5 - height; int top = bottom - height2; foreach (PlotLayoutBlockItem item3 in uniqueDockOrder3.Items) { PlotLayoutDockableDataView plotLayoutDockableDataView = item3.Object as PlotLayoutDockableDataView; if (plotLayoutDockableDataView != null) { int left = (int)((double)this.InnerRectangleScreen.Left + plotLayoutDockableDataView.DockPercentStart * (double)maxDepthScreen); int left2 = (int)((double)this.InnerRectangleLayout.Left + plotLayoutDockableDataView.DockPercentStart * (double)maxDepthLayout); left += plotLayoutDockableDataView.TextOverlapPixelsStart + plotLayoutDockableDataView.StackingPixelsStart; int num3 = (int)((double)this.InnerRectangleScreen.Left + plotLayoutDockableDataView.DockPercentStop * (double)maxDepthScreen); int num4 = (int)((double)this.InnerRectangleLayout.Left + plotLayoutDockableDataView.DockPercentStop * (double)maxDepthLayout); num3 -= plotLayoutDockableDataView.TextOverlapPixelsStop + plotLayoutDockableDataView.StackingPixelsStop; item3.BoundsScreen = iRectangle.FromLTRB(left, num6, num3, num5); item3.BoundsLayout = iRectangle.FromLTRB(left2, top, num4, bottom); PlotAxis plotAxis = item3.Object as PlotAxis; if (plotAxis != null) { item3.BoundsClip = iRectangle.FromLTRB(left - plotAxis.ScaleTextOverlapPixels, num6, num3 + plotAxis.ScaleTextOverlapPixels, num5); } else { item3.BoundsClip = item3.BoundsScreen; } } } num -= height + uniqueDockOrder3.MaxDockMargin; num2 -= height2; } num = this.InnerRectangleScreen.Bottom; num2 = this.InnerRectangleLayout.Bottom; maxDepthScreen = this.InnerRectangleScreen.Width; maxDepthLayout = this.InnerRectangleLayout.Width; foreach (PlotLayoutUniqueDockOrder uniqueDockOrder4 in this.ListBottom.UniqueDockOrders) { height = uniqueDockOrder4.MaxDepthScreen; height2 = uniqueDockOrder4.MaxDepthLayout; int num6 = num + uniqueDockOrder4.MaxDockMargin; int top = num2; int num5 = num6 + height; int bottom = top + height2; foreach (PlotLayoutBlockItem item4 in uniqueDockOrder4.Items) { PlotLayoutDockableDataView plotLayoutDockableDataView = item4.Object as PlotLayoutDockableDataView; if (plotLayoutDockableDataView != null) { int left = (int)((double)this.InnerRectangleScreen.Left + plotLayoutDockableDataView.DockPercentStart * (double)maxDepthScreen); int left2 = (int)((double)this.InnerRectangleLayout.Left + plotLayoutDockableDataView.DockPercentStart * (double)maxDepthLayout); left += plotLayoutDockableDataView.TextOverlapPixelsStart + plotLayoutDockableDataView.StackingPixelsStart; int num3 = (int)((double)this.InnerRectangleScreen.Left + plotLayoutDockableDataView.DockPercentStop * (double)maxDepthScreen); int num4 = (int)((double)this.InnerRectangleLayout.Left + plotLayoutDockableDataView.DockPercentStop * (double)maxDepthLayout); num3 -= plotLayoutDockableDataView.TextOverlapPixelsStop + plotLayoutDockableDataView.StackingPixelsStop; item4.BoundsScreen = iRectangle.FromLTRB(left, num6, num3, num5); item4.BoundsLayout = iRectangle.FromLTRB(left2, top, num4, bottom); PlotAxis plotAxis = item4.Object as PlotAxis; if (plotAxis != null) { item4.BoundsClip = iRectangle.FromLTRB(left - plotAxis.ScaleTextOverlapPixels, num6, num3 + plotAxis.ScaleTextOverlapPixels, num5); } else { item4.BoundsClip = item4.BoundsScreen; } } } num += height + uniqueDockOrder4.MaxDockMargin; num2 += height2; } int val = 2147483647; int val2 = -2147483648; int val3 = 2147483647; int val4 = -2147483648; if (base.Object != null) { val = Math.Min(val, this.ListLeft.GetMinBoundsScreenTop()); val = Math.Min(val, this.ListRight.GetMinBoundsScreenTop()); val2 = Math.Max(val2, this.ListLeft.GetMaxBoundsScreenBottom()); val2 = Math.Max(val2, this.ListRight.GetMaxBoundsScreenBottom()); val3 = Math.Min(val3, this.ListTop.GetMinBoundsScreenLeft()); val3 = Math.Min(val3, this.ListBottom.GetMinBoundsScreenLeft()); val4 = Math.Max(val4, this.ListTop.GetMaxBoundsScreenRight()); val4 = Math.Max(val4, this.ListBottom.GetMaxBoundsScreenRight()); if (val == 2147483647) { val = this.InnerRectangleScreen.Top; } if (val2 == -2147483648) { val2 = this.InnerRectangleScreen.Bottom; } if (val3 == 2147483647) { val3 = this.InnerRectangleScreen.Left; } if (val4 == -2147483648) { val4 = this.InnerRectangleScreen.Right; } this.InnerRectangleScreen = Rectangle.FromLTRB(val3, val, val4, val2); } }