public override void Init()
    {
        base.Init();

        m_LogContent = this.transform.FindChild("Log/Viewport/Content");
        layout       = m_LogContent.gameObject.AddComponent <LogLayout>();

        m_LogPrefab = this.transform.FindChild("Log/LogPrefab");
        m_LogPrefab.gameObject.SetActive(false);
        m_FilterInput = this.transform.FindChild("BaseCtr/InputField").GetComponent <InputField>();
        m_FilterInput.onEndEdit.AddListener((str) =>
        {
            filterStrs = JerryUtil.String2TArray <string>(str, ';');
            RefreshList();
        });
        m_TypeDropdown = this.transform.FindChild("BaseCtr/TypeDropdown").GetComponent <Dropdown>();
        m_TypeDropdown.options.Clear();
        m_TypeDropdown.options.AddRange(new List <Dropdown.OptionData>()
        {
            new Dropdown.OptionData()
            {
                text = Enum_LogType.All.ToString()
            },
            new Dropdown.OptionData()
            {
                text = Enum_LogType.Inf.ToString()
            },
            new Dropdown.OptionData()
            {
                text = Enum_LogType.War.ToString()
            },
            new Dropdown.OptionData()
            {
                text = Enum_LogType.Err.ToString()
            },
        });
        m_TypeDropdown.onValueChanged.AddListener((val) =>
        {
            filterType = (Enum_LogType)val;
            RefreshList();
        });

        m_TagDropdown = this.transform.FindChild("BaseCtr/TagDropdown").GetComponent <Dropdown>();
        m_TagDropdown.options.Clear();
        m_TagDropdown.options.AddRange(new List <Dropdown.OptionData>()
        {
            new Dropdown.OptionData()
            {
                text = Enum_LogTag.All.ToString()
            },
            new Dropdown.OptionData()
            {
                text = Enum_LogTag.Tag0.ToString()
            },
            new Dropdown.OptionData()
            {
                text = Enum_LogTag.Tag1.ToString()
            },
            new Dropdown.OptionData()
            {
                text = Enum_LogTag.Tag2.ToString()
            },
        });
        m_TagDropdown.onValueChanged.AddListener((val) =>
        {
            filterTag = (Enum_LogTag)val;
            RefreshList();
        });

        JerryDebugUGUI.Inst.AddCtr(new CtrConfig()
        {
            m_Name     = "Clear",
            m_Color    = Color.red,
            m_Callback = (x) =>
            {
                CleanAllLog();
            },
        });

        CleanAllLog();
        JerryEventMgr.AddEvent(Enum_Event.AddLog2Screen.ToString(), AddLog2Screen);
        JerryEventMgr.AddEvent(Enum_Event.Change2Bottom.ToString(), EventChange2Bottom);
    }
Example #2
0
        public Image GetImage(string title, string xl, LogLayout layout, List <TimeSeries> seriesList = null)
        {
            if (seriesList == null)
            {
                seriesList = dsCollection.SeriesList;
            }
            Font f       = new Font("ARIAL", 12);
            int  rangeXG = 0;

            if (dsCollection.TimeStamps.Count > 0)
            {
                rangeXG = (int)Math.Round(dsCollection.TimeStamps.Max() * XPPU, 0);
            }
            int rangeYG         = Height;
            int p               = 20;
            int yLabelMargin    = 0,
                xLabelMargin    = (int)measureString(xl, f).Width + p * 2;
            int    legendLength = 0;
            float  titleWidth   = 0;
            Bitmap bmp;

            if (layout == LogLayout.Overlap)
            {
                int heightPerPlotWithTitleAndLabel = rangeYG + xLabelMargin;
                titleWidth = measureString(title, f).Width;
                foreach (TimeSeries s in seriesList)
                {
                    if (!s.Enabled)
                    {
                        continue;
                    }
                    int len = ((int)measureString(s.Name, f).Height + p * 2) * 2;
                    if (len > yLabelMargin)
                    {
                        yLabelMargin = len;
                    }
                }
                legendLength  = 100;
                yLabelMargin += legendLength;
                bmp           = new Bitmap((int)Math.Max(rangeXG + yLabelMargin + legendLength + 2 * p, titleWidth), heightPerPlotWithTitleAndLabel);
                Graphics g = Graphics.FromImage(bmp);

                g.Clear(OverLappingLogs.BackColor);
                g.TranslateTransform(p, measureString(title, f).Height + 2 * p);
                OverLappingLogs.DrawFullLengthExistingScale(g, rangeXG, rangeYG);
                g.TranslateTransform(-p, -measureString(title, f).Height - 2 * p);
                g.Clip = new Region(new RectangleF(0, 0, bmp.Width, bmp.Height));
                drawCenterString(g, title, f, bmp.Width, new PointF(bmp.Width / 2, p));
                var xLabelLength = measureString(xl, f).Width;
                drawCenterString(g, xl, f, bmp.Width, new PointF(Math.Max((bmp.Width - yLabelMargin) / 2, p + xLabelLength / 2), bmp.Height - p - measureString(xl, f).Height));
                int total = seriesList.Sum(se => se.Enabled ? 1 : 0);
                int ind   = 0;
                foreach (TimeSeries s in seriesList)
                {
                    if (!s.Enabled)
                    {
                        continue;
                    }
                    drawCenterString(g, s.Name, f, yLabelMargin, new PointF(bmp.Width - yLabelMargin / 2, (bmp.Height - xLabelMargin) / 2 - total / 2 * 30 + ind * 30));
                    float h = measureString(s.Name, f).Height;
                    g.DrawLine(s.Pen,
                               new PointF(bmp.Width - yLabelMargin - legendLength + p, (bmp.Height - xLabelMargin) / 2 - total / 2 * 30 + ind * 30 + h / 2),
                               new PointF(bmp.Width - yLabelMargin + p, (bmp.Height - xLabelMargin) / 2 - total / 2 * 30 + ind * 30 + h / 2));
                    ind++;
                }
            }
            else
            {
                int totalEnabled = seriesList.Count(s => s.Enabled);
                rangeYG = Height / totalEnabled;
                int heightPerPlotWithTitleAndLabel = rangeYG + xLabelMargin;
                bmp = new Bitmap((int)Math.Max(rangeXG + yLabelMargin + legendLength + 2 * p, titleWidth), heightPerPlotWithTitleAndLabel * totalEnabled);

                Graphics g = Graphics.FromImage(bmp);

                g.Clear(BackColor);
                int yInd = 0;
                foreach (var log in SingleLogs)
                {
                    if (!log.DataSeries.Enabled)
                    {
                        continue;
                    }
                    float Y = heightPerPlotWithTitleAndLabel * yInd;
                    g.TranslateTransform(0, Y);
                    // g is at 0,Y
                    g.TranslateTransform(p, measureString(log.DataSeries.Name, f).Height + 2 * p);
                    log.DrawFullLengthExistingScale(g, rangeXG, rangeYG);
                    g.TranslateTransform(-p, -measureString(log.DataSeries.Name, f).Height - 2 * p);
                    // g is at 0,Y

                    g.Clip = new Region(new RectangleF(0, 0, bmp.Width, heightPerPlotWithTitleAndLabel));
                    drawCenterString(g, log.DataSeries.Name, f, bmp.Width, new PointF(bmp.Width / 2, p));
                    var xLabelLength = measureString(xl, f).Width;
                    drawCenterString(g, xl, f, bmp.Width, new PointF(Math.Max((bmp.Width - yLabelMargin) / 2, p + xLabelLength / 2), heightPerPlotWithTitleAndLabel - p - measureString(xl, f).Height));

                    g.TranslateTransform(0, -Y);
                    yInd++;
                }
            }
            return(bmp);
        }