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); }
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); }