public void PaintPreprocessing(IPaintContext paintContext, IPlotArea layer, PlotItemCollection coll) { if (!CanUseStyle(layer, coll, out var plotDataDict)) { return; } else { paintContext.AddValue(this, plotDataDict); } AltaxoVariant[] vSumArray = null; foreach (IGPlotItem pi in coll) { if (pi is G3DPlotItem) { var gpi = pi as G3DPlotItem; var pdata = plotDataDict[gpi]; vSumArray = AbsoluteStackTransform.AddUp(vSumArray, pdata); } } // now plot the data - the summed up y is in yArray AltaxoVariant[] vArray = null; Processed3DPlotData previousItemData = null; foreach (IGPlotItem pi in coll) { if (pi is G3DPlotItem) { var gpi = pi as G3DPlotItem; var pdata = plotDataDict[gpi]; vArray = AbsoluteStackTransform.AddUp(vArray, pdata); var localArray = new AltaxoVariant[vArray.Length]; int j = -1; foreach (int originalIndex in pdata.RangeList.OriginalRowIndices()) { j++; AltaxoVariant v = 100 * vArray[j] / vSumArray[j]; localArray[j] = v; var rel = new Logical3D( layer.XAxis.PhysicalVariantToNormal(pdata.GetXPhysical(originalIndex)), layer.YAxis.PhysicalVariantToNormal(pdata.GetYPhysical(originalIndex)), layer.ZAxis.PhysicalVariantToNormal(v)); layer.CoordinateSystem.LogicalToLayerCoordinates(rel, out var pabs); pdata.PlotPointsInAbsoluteLayerCoordinates[j] = pabs; } // we have also to exchange the accessor for the physical z value and replace it by our own one pdata.ZPhysicalAccessor = new IndexedPhysicalValueAccessor(delegate(int i) { return(localArray[i]); }); pdata.PreviousItemData = previousItemData; previousItemData = pdata; } } }
public AbsoluteStackTransform(AbsoluteStackTransform from) { }
private static bool CanUseStyle(IPlotArea layer, PlotItemCollection coll, out Dictionary <G3DPlotItem, Processed3DPlotData> plotDataList) { return(AbsoluteStackTransform.CanUseStyle(layer, coll, out plotDataList)); }
public object Deserialize(object o, Altaxo.Serialization.Xml.IXmlDeserializationInfo info, object parent) { AbsoluteStackTransform s = null != o ? (AbsoluteStackTransform)o : new AbsoluteStackTransform(); return(s); }