예제 #1
0
        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;
                }
            }
        }
예제 #2
0
		public AbsoluteStackTransform(AbsoluteStackTransform from)
		{
		}
예제 #3
0
 private static bool CanUseStyle(IPlotArea layer, PlotItemCollection coll, out Dictionary <G3DPlotItem, Processed3DPlotData> plotDataList)
 {
     return(AbsoluteStackTransform.CanUseStyle(layer, coll, out plotDataList));
 }
예제 #4
0
 public AbsoluteStackTransform(AbsoluteStackTransform from)
 {
 }
예제 #5
0
            public object Deserialize(object o, Altaxo.Serialization.Xml.IXmlDeserializationInfo info, object parent)
            {
                AbsoluteStackTransform s = null != o ? (AbsoluteStackTransform)o : new AbsoluteStackTransform();

                return(s);
            }