Exemple #1
0
        protected override void CalcData()
        {
            NeedDraw = false;
            if (Option?.Series == null || Option.Series.Count == 0)
            {
                return;
            }

            DrawOrigin = new Point(Option.Grid.Left, Height - Option.Grid.Bottom);
            DrawSize   = new Size(Width - Option.Grid.Left - Option.Grid.Right,
                                  Height - Option.Grid.Top - Option.Grid.Bottom);

            if (DrawSize.Width <= 0 || DrawSize.Height <= 0)
            {
                return;
            }
            CalcAxises();

            foreach (var series in Option.Series.Values)
            {
                series.ClearPoints();
                float[] x = XScale.CalcXPixels(series.XData.ToArray(), DrawOrigin.X, DrawSize.Width);
                float[] y = YScale.CalcYPixels(series.YData.ToArray(), DrawOrigin.Y, DrawSize.Height);
                series.AddPoints(x, y);
            }

            NeedDraw = true;
        }
Exemple #2
0
 public override double Get(double x, double y, double z, double w, double u, double v) => Source.Get(
     x * XScale.Get(x, y, z, w, u, v),
     y * YScale.Get(x, y, z, w, u, v),
     z * ZScale.Get(x, y, z, w, u, v),
     w * WScale.Get(x, y, z, w, u, v),
     u * UScale.Get(x, y, z, w, u, v),
     v * VScale.Get(x, y, z, w, u, v));
Exemple #3
0
 public void WriteTo(TextWriter writer)
 {
     V1.WriteTo(writer);
     writer.Write(" ");
     V2.WriteTo(writer);
     writer.Write(" ");
     V3.WriteTo(writer);
     writer.Write(" ");
     writer.Write(TextureName);
     writer.Write(" ");
     writer.Write(XOffset);
     writer.Write(" ");
     writer.Write(YOffset);
     writer.Write(" ");
     writer.Write(Rotation);
     writer.Write(" ");
     writer.Write(XScale.ToString("F6"));
     writer.Write(" ");
     writer.Write(YScale.ToString("F6"));
     writer.Write(" ");
     writer.Write(Flag1);
     writer.Write(" ");
     writer.Write(Flag2);
     writer.Write(" ");
     writer.Write(Flag3);
     writer.WriteLine();
 }
Exemple #4
0
        /// <summary>
        /// 속성들을 Xml Attribute로 생성합니다.
        /// </summary>
        /// <param name="writer">Attribute를 쓸 Writer</param>
        public override void GenerateXmlAttributes(System.Xml.XmlWriter writer)
        {
            base.GenerateXmlAttributes(writer);

            writer.WriteAttributeString("type", Type.ToString());

            if (X.HasValue)
            {
                writer.WriteAttributeString("x", X.ToString());
            }
            if (Y.HasValue)
            {
                writer.WriteAttributeString("y", Y.ToString());
            }
            if (Color.IsNotWhiteSpace())
            {
                writer.WriteAttributeString("Color", Color);
            }
            if (Alpha.HasValue)
            {
                writer.WriteAttributeString("Alpha", Alpha.ToString());
            }
            if (Thickness.HasValue)
            {
                writer.WriteAttributeString("Thickness", Thickness.ToString());
            }

            if (XScale.HasValue)
            {
                writer.WriteAttributeString("XScale", XScale.ToString());
            }
            if (YScale.HasValue)
            {
                writer.WriteAttributeString("YScale", YScale.ToString());
            }
            if (Radius.HasValue)
            {
                writer.WriteAttributeString("Radius", Radius.ToString());
            }
            if (YRadius.HasValue)
            {
                writer.WriteAttributeString("YRadius", YRadius.ToString());
            }
            if (InnerRadius.HasValue)
            {
                writer.WriteAttributeString("InnerRadius", InnerRadius.ToString());
            }

            if (ToX.HasValue)
            {
                writer.WriteAttributeString("ToX", ToX.ToString());
            }
            if (ToY.HasValue)
            {
                writer.WriteAttributeString("ToY", ToY.ToString());
            }
        }
Exemple #5
0
        protected override string DefaultCommand()
        {
            if (Variables == null)
            {
                return("");
            }

            Mtb.Column[] vars = (Mtb.Column[])Variables;
            Mtb.Column[] gps  = null;
            if (GroupingVariables != null)
            {
                gps = (Mtb.Column[])GroupingVariables;
            }

            StringBuilder cmnd = new StringBuilder(); // local macro 內容

            if (gps != null)
            {
                cmnd.AppendFormat("Boxplot ({0})*{1};\r\n",
                                  string.Join(" &\r\n", vars.Select(x => x.SynthesizedName).ToArray()),
                                  gps[0].SynthesizedName);
                if (gps.Length >= 2)
                {
                    cmnd.AppendFormat(" Group {0};\r\n",
                                      string.Join(" &\r\n", gps.Select((x, i) => new { colId = x.SynthesizedName, index = i }).
                                                  Where(x => x.index > 0).Select(x => x.colId).ToArray()));
                }
            }
            else
            {
                cmnd.AppendFormat("Boxplot {0};\r\n",
                                  string.Join(" &\r\n", vars.Select(x => x.SynthesizedName).ToArray()));
            }
            cmnd.Append(GetOptionCommand());

            cmnd.Append(YScale.GetCommand());
            cmnd.Append(XScale.GetCommand());

            cmnd.Append(Mean.GetCommand());
            cmnd.Append(CMean.GetCommand());
            cmnd.Append(RBox.GetCommand());
            cmnd.Append(IQRBox.GetCommand());
            cmnd.Append(Whisker.GetCommand());
            cmnd.Append(Outlier.GetCommand());
            cmnd.Append(Individual.GetCommand());
            cmnd.Append(MeanDatlab.GetCommand());
            cmnd.Append(IndivDatlab.GetCommand());

            cmnd.Append(Panel.GetCommand());

            cmnd.Append(GetAnnotationCommand());
            cmnd.Append(GetRegionCommand());

            return(cmnd.ToString() + ".");
        }
Exemple #6
0
        private void OsciVertScale_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (channels < 1)
            {
                return;
            }
            YScale ts = (YScale)OsciVertScale.SelectedIndex;

            if (ts != yScale[selectedChannel])
            {
                yScale[selectedChannel]       = ts;
                lines[selectedChannel].yScale = getYScale(selectedChannel);
                UpdateChannelScales();
                oscilloscopeScreen.Invalidate();
            }
        }
Exemple #7
0
        private string getYScaleString(YScale ys)
        {
            switch (ys)
            {
            case YScale.Div10: return("10/Div");

            case YScale.Div5: return("5/Div");

            case YScale.Div2: return("2/Div");

            case YScale.Div1: return("1/Div");

            case YScale.Div500m: return("0.5/Div");

            case YScale.Div200m: return("0.2/Div");

            case YScale.Div100m: return("0.1/Div");

            case YScale.Div50m: return("50m/Div");

            case YScale.Div20m: return("20m/Div");

            case YScale.Div10m: return("10m/Div");

            case YScale.Div5m: return("5m/Div");

            case YScale.Div2m: return("2m/Div");

            case YScale.Div1m: return("1m/Div");

            case YScale.Div500u: return("0.5m/Div");

            case YScale.Div200u: return("0.2m/Div");

            case YScale.Div100u: return("0.1m/Div");
            }
            return("undefined");
        }
        /// <summary>
        /// 속성 중 Attribute Node로 표현해야 한다.
        /// </summary>
        /// <param name="writer"></param>
        public override void GenerateXmlAttributes(System.Xml.XmlWriter writer)
        {
            base.GenerateXmlAttributes(writer);

            if (Id.IsNotWhiteSpace())
            {
                writer.WriteAttributeString("Id", Id);
            }
            if (X.HasValue)
            {
                writer.WriteAttributeString("x", X.ToString());
            }
            if (Y.HasValue)
            {
                writer.WriteAttributeString("y", Y.ToString());
            }
            if (Alpha.HasValue)
            {
                writer.WriteAttributeString("Alpha", Alpha.ToString());
            }
            if (XScale.HasValue)
            {
                writer.WriteAttributeString("XScale", XScale.ToString());
            }
            if (YScale.HasValue)
            {
                writer.WriteAttributeString("YScale", YScale.ToString());
            }
            if (OrigW.HasValue)
            {
                writer.WriteAttributeString("origW", OrigW.ToString());
            }
            if (OrigH.HasValue)
            {
                writer.WriteAttributeString("origH", OrigH.ToString());
            }
            if (AutoScale.HasValue)
            {
                writer.WriteAttributeString("AutoScale", AutoScale.GetHashCode().ToString());
            }
            if (ConstrainedScale.HasValue)
            {
                writer.WriteAttributeString("ConstrainedScale", ConstrainedScale.GetHashCode().ToString());
            }
            if (ScaleImages.HasValue)
            {
                writer.WriteAttributeString("ScaleImages", ScaleImages.GetHashCode().ToString());
            }
            if (ScaleText.HasValue)
            {
                writer.WriteAttributeString("ScaleText", ScaleText.GetHashCode().ToString());
            }
            if (GrpXShift.HasValue)
            {
                writer.WriteAttributeString("GrpXShift", GrpXShift.ToString());
            }
            if (GrpYShift.HasValue)
            {
                writer.WriteAttributeString("GrpXShift", GrpXShift.ToString());
            }

            if (ShowBelow.HasValue)
            {
                writer.WriteAttributeString("ShowBelow", ShowBelow.GetHashCode().ToString());
            }
            if (Visible.HasValue)
            {
                writer.WriteAttributeString("Visible", Visible.GetHashCode().ToString());
            }

            if (ToolText.IsNotWhiteSpace())
            {
                writer.WriteAttributeString("ToolText", ToolText);
            }

            if (_link != null)
            {
                _link.GenerateXmlAttributes(writer);
            }
        }
Exemple #9
0
        /// <summary>
        /// 預設指令碼
        /// </summary>
        /// <returns></returns>
        protected override string DefaultCommand()
        {
            if (YVariables == null)
            {
                throw new Exception("建立 Plot 指令時,未給定 YVariables");
            }
            if (XVariables == null)
            {
                throw new Exception("建立 Plot 指令時,未給定 XVariables");
            }


            Mtb.Column[] yvars = (Mtb.Column[])YVariables;
            Mtb.Column[] xvars = (Mtb.Column[])XVariables;

            Mtb.Column[] gps = null;
            if (GroupingVariables != null)
            {
                gps = (Mtb.Column[])GroupingVariables;
            }


            StringBuilder cmnd = new StringBuilder();

            if (GraphType == MultipleGraphType.Regular)
            {
                if (yvars.Length != xvars.Length)
                {
                    throw new ArgumentException("GraphType=Regular 時,X 變數和 Y 變數的數量不同");
                }
                cmnd.AppendLine("Plot &");
                for (int i = 0; i < yvars.Length; i++)
                {
                    cmnd.AppendFormat("{0}*{1} &\r\n", yvars[i].SynthesizedName, xvars[i].SynthesizedName);
                }
                cmnd.AppendLine(";");
            }
            else
            {
                cmnd.AppendFormat("Plot ({0})*({1});\r\n",
                                  string.Join(" &\r\n", yvars.Select(x => x.SynthesizedName).ToArray()),
                                  string.Join(" &\r\n", xvars.Select(x => x.SynthesizedName).ToArray()));
                if (GraphType == MultipleGraphType.Overlay)
                {
                    cmnd.AppendLine(" Over;");
                }
            }

            if (gps != null)
            {
                string[] gp = gps.Select(x => x.SynthesizedName).ToArray();
                Symbol.GroupingBy      = gp.Clone();
                Connectline.GroupingBy = gp.Clone();
                Projection.GroupingBy  = gp.Clone();
            }

            cmnd.AppendFormat("");

            cmnd.Append(GetOptionCommand());
            cmnd.Append(YScale.GetCommand());
            cmnd.Append(XScale.GetCommand());
            cmnd.Append(Symbol.GetCommand());
            cmnd.Append(Connectline.GetCommand());
            cmnd.Append(Projection.GetCommand());
            cmnd.Append(Panel.GetCommand());

            cmnd.Append(GetAnnotationCommand());
            cmnd.Append(GetRegionCommand());


            return(cmnd.ToString() + ".");
        }
Exemple #10
0
        // Prepares the SDF file header section. Respective properties must be set in advance.
        // Constitutes "Record 1" according to ISO 25178-71
        private void PrepareHeaderSection()
        {
            // for single profiles YScale must be 0
            if (NumberOfProfiles == 1)
            {
                YScale = 0;
            }
            if (double.IsNaN(XScale))
            {
                return;
            }
            if (double.IsNaN(YScale))
            {
                return;
            }
            if (double.IsNaN(ZScale))
            {
                return;
            }
            if (!Relaxed)
            {
                // the SDF definition suffers from the historical restriction of 65535 points per profile
                // there is no error message up to now, it is just not possible to create data.
                if (NumberOfPointsPerProfile > ushort.MaxValue)
                {
                    return;
                }
                if (NumberOfProfiles > ushort.MaxValue)
                {
                    return;
                }
            }
            // instantiate the StringBuilder for the header section
            headerSectionSb = new StringBuilder();
            if (ForceIsoFormat)
            {
                headerSectionSb.AppendLine("aISO-1.0");
            }
            else
            {
                headerSectionSb.AppendLine("aBCR-1.0");
            }
            headerSectionSb.AppendLine($"ManufacID   = {TruncateManufacID(ManufacurerId)}"); // just to make sure no "=" is added
            headerSectionSb.AppendLine($"CreateDate  = {CreationDate.ToString("ddMMyyyyHHmm")}");
            headerSectionSb.AppendLine($"ModDate     = {ModificationDate.ToString("ddMMyyyyHHmm")}");
            headerSectionSb.AppendLine($"NumPoints   = {NumberOfPointsPerProfile}");
            headerSectionSb.AppendLine($"NumProfiles = {NumberOfProfiles}");
            headerSectionSb.AppendLine($"Xscale      = {XScale.ToString("G17")}");
            headerSectionSb.AppendLine($"Yscale      = {YScale.ToString("G17")}");
            headerSectionSb.AppendLine($"Zscale      = {ZScale.ToString("G17")}");
            headerSectionSb.AppendLine("Zresolution = -1"); // clause 5.2.8, do not modify!
            headerSectionSb.AppendLine("Compression = 0");  // clause 5.2.9, do not modify!
            switch (zDataType)
            {
            case ZDataType.Double:
                headerSectionSb.AppendLine("DataType    = 7");
                break;

            case ZDataType.Int32:
                headerSectionSb.AppendLine("DataType    = 6");
                break;

            case ZDataType.Int16:
                headerSectionSb.AppendLine("DataType    = 5");
                break;

            default:
                headerSectionSb.AppendLine("DataType    = ?");     // this should not happen!
                break;
            }
            headerSectionSb.AppendLine("CheckType   = 0"); // clause 5.2.11, do not modify!
            headerSectionSb.AppendLine("*");
        }
Exemple #11
0
        private string DefaultCommand2()
        {
            if (Variables == null)
            {
                throw new Exception("建立 Bar chart 指令時,未給定 Variables");
            }

            Mtb.Column[] vars = (Mtb.Column[])Variables;
            Mtb.Column[] gps  = null;
            if (GroupingVariables != null)
            {
                gps = (Mtb.Column[])GroupingVariables;
            }

            switch (BarsRepresent)// 以一次畫一張圖為目的,過濾掉不合法的輸入數量
            {
            case ChartRepresent.COUNT_OF_UNIQUE_VALUES:
            case ChartRepresent.A_FUNCTION_OF_A_VARIABLE:
            case ChartRepresent.ONE_WAY_TABLE:
                if (vars.Length > 1)
                {
                    throw new ArgumentException(
                              string.Format("BarsRepresent={0}時,不支援同時繪製多變數", BarsRepresent.ToString()));
                }
                break;
            }
            switch (BarsRepresent)// 判斷群組數是否合法
            {
            case ChartRepresent.ONE_WAY_TABLE:
            case ChartRepresent.TWO_WAY_TABLE:
                if (gps == null)
                {
                    throw new Exception("(Bar chart)使用 Summaried Data,至少給定一個分群欄位");
                }
                break;
            }


            StringBuilder cmnd = new StringBuilder(); // local macro 內容

            cmnd.AppendLine("macro");
            cmnd.AppendLine("chart y.1-y.n;");
            cmnd.AppendLine("group x.1-x.m;");
            cmnd.AppendLine("pane p.1-p.k;"); //如果使用者有指定 panel
            cmnd.AppendLine("datlab dlab.");  //如果使用者有自己指定 column for datlab

            cmnd.AppendLine("mcolumn y.1-y.n");
            cmnd.AppendLine("mcolumn x.1-x.m");
            cmnd.AppendLine("mcolumn p.1-p.k");
            cmnd.AppendLine("mcolumn yy ylab stkdlab dlab xx.1-xx.m");
            cmnd.AppendLine("mconstant nn");

            //準備使用於圖中的額外資料
            Datlab tmpDatlab = (Datlab)DataLabel.Clone();

            if (StackType == ChartStackType.Stack && DataLabel.Visible && AdjDatlabAtStackBar)
            {
                #region 建立 Adjust stack bar chart 要的 datlab
                switch (BarsRepresent)
                {
                case ChartRepresent.COUNT_OF_UNIQUE_VALUES:
                    cmnd.AppendLine("count y.1 nn");
                    cmnd.AppendLine("set yy");
                    cmnd.AppendLine("(1)nn");
                    cmnd.AppendLine("end");
                    cmnd.AppendLine("stat yy;");
                    cmnd.AppendLine("by y.1 x.1-x.m;");
                    cmnd.AppendLine("sums stkdlab.");
                    break;

                case ChartRepresent.A_FUNCTION_OF_A_VARIABLE:
                    cmnd.AppendLine("stat y.1;");
                    cmnd.AppendLine("by x.1-x.m;");
                    cmnd.AppendFormat("{0} stkdlab.\r\n",
                                      FuncType.ToString().ToLower() == "sum" ? "sums" : FuncType.ToString().ToLower());
                    break;

                case ChartRepresent.ONE_WAY_TABLE:
                    cmnd.AppendLine("copy y.1 stkdlab");
                    break;

                case ChartRepresent.TWO_WAY_TABLE:
                    cmnd.AppendLine("stack y.1-y.n yy.");
                    cmnd.AppendLine("count y.1 nn");
                    cmnd.AppendLine("tset ylab");
                    cmnd.AppendFormat("1({0})nn\r\n",
                                      string.Join(" &\r\n", vars.Select(x => "\"" + x.Name + "\"").ToArray()));
                    cmnd.AppendLine("end");
                    List <string[]> gpData = new List <string[]>();
                    for (int i = 0; i < gps.Length; i++)
                    {
                        Mtb.Column col = gps[i];
                        string[]   data;
                        switch (col.DataType)
                        {
                        case MtbDataTypes.DataUnassigned:
                            throw new ArgumentNullException("輸入的欄位沒有資料");

                        default:
                        case MtbDataTypes.DateTime:
                        case MtbDataTypes.Numeric:
                            data = ((double[])col.GetData()).Select(x => x.ToString()).ToArray();
                            break;

                        case MtbDataTypes.Text:
                            data = col.GetData();
                            break;
                        }
                        cmnd.AppendFormat("tset xx.{0}\r\n", i + 1);
                        cmnd.AppendFormat("{1}({0})1\r\n",
                                          string.Join(" &\r\n", data.Select(x => "\"" + x + "\"").ToArray()),
                                          vars.Length);
                        cmnd.AppendLine("end");
                        cmnd.AppendLine("vorder ylab xx.1-xx.m;");
                        cmnd.AppendLine("work.");
                        cmnd.AppendLine("stat yy;");
                        cmnd.AppendLine("by ylab xx.1-xx.m;");
                        cmnd.AppendLine("sums stkdlab.");
                    }
                    break;

                default:
                    break;
                }
                cmnd.AppendLine("text stkdlab stkdlab");
                #endregion

                tmpDatlab.LabelColumn = "stkdlab";
                tmpDatlab.Placement   = new double[] { 0, -1 };
            }
            else
            {
                if (DataLabel.LabelColumn != null)
                {
                    tmpDatlab.LabelColumn = "dlab";
                }
            }

            switch (BarsRepresent)
            {
            case ChartRepresent.COUNT_OF_UNIQUE_VALUES:
                cmnd.AppendLine("Chart y.1-y.n;");
                if (gps != null)
                {
                    cmnd.AppendLine("Group x.1-x.n;");
                }
                break;

            case ChartRepresent.A_FUNCTION_OF_A_VARIABLE:
                cmnd.AppendFormat("Chart {0}(y.1-y.n) &\r\n",
                                  FuncType.ToString());
                if (gps != null)
                {
                    cmnd.AppendLine("*x.1;");
                    if (gps.Length >= 2)
                    {
                        cmnd.AppendLine(" Group x.2-x.m;");
                    }
                }
                else
                {
                    cmnd.AppendLine(";");
                }

                break;

            case ChartRepresent.ONE_WAY_TABLE:
            case ChartRepresent.TWO_WAY_TABLE:
                cmnd.AppendLine("Chart (y.1-y.n)*x.1;");
                cmnd.AppendLine("Summarized;");
                if (BarsRepresent == ChartRepresent.TWO_WAY_TABLE)
                {
                    cmnd.AppendLine("Overlay;");
                    if (TableArrangement == ChartTableArrangementType.RowsOuterMost)
                    {
                        cmnd.AppendLine(" VLast;");
                    }
                    else
                    {
                        cmnd.AppendLine(" VFirst;");
                    }
                }
                if (gps.Length >= 2)
                {
                    cmnd.AppendLine(" Group x.2-x.m;");
                }
                break;
            }
            if (Transponse)
            {
                cmnd.AppendLine("trans;");
            }
            if (StackType == ChartStackType.Stack)
            {
                cmnd.AppendLine("stack;");
            }
            cmnd.Append(GetOptionCommand());
            cmnd.Append(YScale.GetCommand());
            cmnd.Append(XScale.GetCommand());
            cmnd.Append(tmpDatlab.GetCommand());

            /*
             * 對每一個 DataView 建立 Command
             * 這些處理是為了將 GroupingBy 屬性由原欄位換成 macro coded name
             */
            Component.DataView.DataView tmpDataview;
            string[] xStr = gps.Select((x, i) => "x." + (i + 1)).ToArray();

            foreach (Component.DataView.DataView dview in
                     new Component.DataView.DataView[] { Bar, Symbol, Connectline })
            {
                tmpDataview = (Component.DataView.DataView)dview.Clone();
                if (dview.GroupingBy != null)
                {
                    string[] g = MtbTools.ConvertToMacroCodedName(
                        (string[])tmpDataview.GroupingBy, gps, xStr, _ws);
                }
                //if (dview is Component.DataView.Bar)
                //{
                //    if(Bar.AssignAttributeByVariables)
                //}
                cmnd.Append(tmpDataview.GetCommand());
            }

            Component.MultiGraph.MPanel tmpPane = (Component.MultiGraph.MPanel)Panel.Clone();
            if (Panel.PaneledBy != null)
            {
                tmpPane.PaneledBy = "p.1-p.k";
            }
            cmnd.Append(tmpPane.GetCommand());
            cmnd.Append(Legend.GetCommand());
            if (NoMissing)
            {
                cmnd.AppendLine("nomiss;");
            }
            if (NoEmpty)
            {
                cmnd.AppendLine("noem;");
            }
            cmnd.Append(GetAnnotationCommand());
            cmnd.Append(GetRegionCommand());
            cmnd.AppendLine(".");
            cmnd.AppendLine("endmacro");
            return(cmnd.ToString());
        }
Exemple #12
0
        protected override string DefaultCommand()
        {
            if (Variables == null)
            {
                throw new Exception("建立 Bar chart 指令時,未給定 Variables");
            }

            Mtb.Column[] vars = (Mtb.Column[])Variables;
            Mtb.Column[] gps  = null;
            if (GroupingVariables != null)
            {
                gps = (Mtb.Column[])GroupingVariables;
            }

            if ((BarsRepresent == ChartRepresent.ONE_WAY_TABLE ||
                 BarsRepresent == ChartRepresent.TWO_WAY_TABLE)
                & (gps == null))
            {
                throw new Exception("(Bar chart)使用 Summaried Data,至少給定一個分群欄位");
            }

            StringBuilder cmnd = new StringBuilder(); // local macro 內容

            /*****************
             * 一些注意事項: Chart 可以有多個 Variable 輸入,分成兩類
             * 1. F(C...C)*Cg 這是各別F(C)以 Cg 做分群,不需搭配 Summarized
             * 2. Summarized data,使用 (C...C)*Cg 搭配 Summarized 子命令,
             *    如果是 Two-way table 則須再加上 VFirst 或 VLast 等指令
             *
             */
            switch (BarsRepresent)
            {
            case ChartRepresent.COUNT_OF_UNIQUE_VALUES:
                cmnd.AppendFormat("Chart {0};\r\n",
                                  string.Join(" &\r\n", vars.Select(x => x.SynthesizedName).ToArray()));
                if (gps != null)
                {
                    cmnd.AppendFormat(" Group {0};\r\n",
                                      string.Join(" &\r\n", string.Join(" &\r\n", gps.Select(x => x.SynthesizedName).ToArray())));
                }
                break;

            case ChartRepresent.A_FUNCTION_OF_A_VARIABLE:
                cmnd.AppendFormat("Chart {0}({1}) &\r\n",
                                  FuncType.ToString(),
                                  string.Join(" &\r\n", vars.Select(x => x.SynthesizedName).ToArray()));
                if (gps != null)
                {
                    cmnd.AppendFormat("*{0};\r\n", gps[0].SynthesizedName);
                    if (gps.Length >= 2)
                    {
                        cmnd.AppendFormat(" Group {0};\r\n",
                                          string.Join(" &\r\n", gps.Select((x, i) => new { colId = x.SynthesizedName, index = i }).
                                                      Where(x => x.index > 0).Select(x => x.colId).ToArray()));
                    }
                }
                else
                {
                    cmnd.AppendLine(";");
                }

                break;

            case ChartRepresent.ONE_WAY_TABLE:
            case ChartRepresent.TWO_WAY_TABLE:
                cmnd.AppendFormat("Chart ({0})*{1};\r\n",
                                  string.Join(" &\r\n", vars.Select(x => x.SynthesizedName).ToArray()),
                                  gps[0].SynthesizedName);
                cmnd.AppendLine("Summarized;");
                if (BarsRepresent == ChartRepresent.TWO_WAY_TABLE)
                {
                    cmnd.AppendLine("Overlay;");
                    if (TableArrangement == ChartTableArrangementType.RowsOuterMost)
                    {
                        cmnd.AppendLine(" VLast;");
                    }
                    else
                    {
                        cmnd.AppendLine(" VFirst;");
                    }
                }
                if (gps.Length >= 2)
                {
                    cmnd.AppendFormat(" Group {0};\r\n",
                                      string.Join(" &\r\n", gps.Select((x, i) => new { colId = x.SynthesizedName, index = i }).
                                                  Where(x => x.index > 0).Select(x => x.colId).ToArray()));
                }
                break;
            }
            cmnd.Append(GetOptionCommand());
            cmnd.Append(YScale.GetCommand());
            cmnd.Append(XScale.GetCommand());

            //
            if (StackType == ChartStackType.Stack && DataLabel.Visible && AdjDatlabAtStackBar)
            {
            }
            cmnd.Append(DataLabel.GetCommand());



            cmnd.Append(Bar.GetCommand());
            cmnd.Append(Symbol.GetCommand());
            cmnd.Append(Connectline.GetCommand());
            cmnd.Append(Panel.GetCommand());
            cmnd.Append(Legend.GetCommand());

            cmnd.Append(GetAnnotationCommand());
            cmnd.Append(GetRegionCommand());


            return(cmnd.ToString() + ".");
        }
Exemple #13
0
 public override double Get(double x, double y, double z, double w) => Source.Get(
     x * XScale.Get(x, y, z, w),
     y * YScale.Get(x, y, z, w),
     z * ZScale.Get(x, y, z, w),
     w * WScale.Get(x, y, z, w));
Exemple #14
0
 public override double Get(double x, double y, double z) => Source.Get(
     x * XScale.Get(x, y, z),
     y * YScale.Get(x, y, z),
     z * ZScale.Get(x, y, z));
Exemple #15
0
 public override double Get(double x, double y) => Source.Get(
     x * XScale.Get(x, y),
     y * YScale.Get(x, y));