public void PaintPreprocessing(IPaintContext paintContext, IPlotArea layer, PlotItemCollection coll) { if (!CanUseStyle(layer, coll, out var plotDataDict)) { return; } else { paintContext.AddValue(this, plotDataDict); } AltaxoVariant[] vArray = null; // First, add up all items since we start always with the last item int idx = -1; Processed3DPlotData previousItemData = null; foreach (IGPlotItem pi in coll) { if (pi is G3DPlotItem) { idx++; var gpi = pi as G3DPlotItem; Processed3DPlotData pdata = plotDataDict[gpi]; if (null == pdata) { continue; } vArray = AddUp(vArray, pdata); if (idx > 0) // this is not the first item { int j = -1; foreach (int originalIndex in pdata.RangeList.OriginalRowIndices()) { j++; var rel = new Logical3D( layer.XAxis.PhysicalVariantToNormal(pdata.GetXPhysical(originalIndex)), layer.YAxis.PhysicalVariantToNormal(pdata.GetYPhysical(originalIndex)), layer.ZAxis.PhysicalVariantToNormal(vArray[j])); layer.CoordinateSystem.LogicalToLayerCoordinates(rel, out var pabs); pdata.PlotPointsInAbsoluteLayerCoordinates[j] = pabs; } } // we have also to exchange the accessor for the physical y value and replace it by our own one var localArray = (AltaxoVariant[])vArray.Clone(); var localArrayHolder = new LocalArrayHolder(localArray, pdata); pdata.ZPhysicalAccessor = localArrayHolder.GetPhysical; pdata.PreviousItemData = previousItemData; previousItemData = pdata; } } }
public void PaintPreprocessing(IPaintContext paintContext, IPlotArea layer, PlotItemCollection coll) { Dictionary<G3DPlotItem, Processed3DPlotData> plotDataDict = null; if (!CanUseStyle(layer, coll, out plotDataDict)) { return; } else { paintContext.AddValue(this, plotDataDict); } AltaxoVariant[] vArray = null; // First, add up all items since we start always with the last item int idx = -1; Processed3DPlotData previousItemData = null; foreach (IGPlotItem pi in coll) { if (pi is G3DPlotItem) { idx++; G3DPlotItem gpi = pi as G3DPlotItem; Processed3DPlotData pdata = plotDataDict[gpi]; vArray = AddUp(vArray, pdata); if (idx > 0) // this is not the first item { int j = -1; foreach (int originalIndex in pdata.RangeList.OriginalRowIndices()) { j++; Logical3D rel = new Logical3D( layer.XAxis.PhysicalVariantToNormal(pdata.GetXPhysical(originalIndex)), layer.YAxis.PhysicalVariantToNormal(pdata.GetYPhysical(originalIndex)), layer.ZAxis.PhysicalVariantToNormal(vArray[j])); PointD3D pabs; layer.CoordinateSystem.LogicalToLayerCoordinates(rel, out pabs); pdata.PlotPointsInAbsoluteLayerCoordinates[j] = pabs; } } // we have also to exchange the accessor for the physical y value and replace it by our own one AltaxoVariant[] localArray = (AltaxoVariant[])vArray.Clone(); LocalArrayHolder localArrayHolder = new LocalArrayHolder(localArray, pdata); pdata.ZPhysicalAccessor = localArrayHolder.GetPhysical; pdata.PreviousItemData = previousItemData; previousItemData = pdata; } } }