示例#1
0
        protected override float GetValue(FrameRecord fr, ViewFrameRecord vfr, LogView logView)
        {
            OverviewRDI   ordi  = logView.m_logControl.m_ordiTree[TrackedPath];
            IReadOnlyFRVs frvs  = ordi.ValueIsPerLogView ? vfr.Values : fr.Values;
            float         value = frvs[ordi.ValuesPath];

            return((ValuesAreFPS && value != 0.0f) ? (1000.0f / value) : value);
        }
示例#2
0
        public void CalculateLocalMax(OverviewRDI ordi, int fromIdx, int toIdx)
        {
            if (toIdx < 0)
            {
                toIdx = m_baseViewFRs.Count - 1;
            }

            if (ordi.Filtering == OverviewRDI.EFiltering.LocalMax)
            {
                string path   = ordi.Path;
                string LMPath = ordi.ValuesPath;

                for (int i = fromIdx; i <= toIdx; i++)
                {
                    if (m_baseLogData.FrameRecords[i].Values.ContainsPath(path))
                    {
                        m_baseViewFRs[i].Values[LMPath] = m_baseLogData.GetLocalMax(i, ordi.LMNumFrames, path);
                    }
                }
            }
        }
示例#3
0
        public void CalculateMovingAverage(OverviewRDI ordi, int fromIdx, int toIdx)
        {
            if (toIdx < 0)
            {
                toIdx = m_baseViewFRs.Count - 1;
            }

            if (ordi.Filtering == OverviewRDI.EFiltering.MovingAverage)
            {
                // want to recalculate any moving averages that are affected by FrameRecords[fromIdx] onwards
                int    thisFromIdx = Math.Max(0, fromIdx - ordi.MANumFrames);
                string path        = ordi.Path;
                string MAPath      = ordi.ValuesPath;

                for (int i = thisFromIdx; i <= toIdx; i++)
                {
                    if (m_baseLogData.FrameRecords[i].Values.ContainsPath(path))
                    {
                        m_baseViewFRs[i].Values[MAPath] = m_baseLogData.GetMovingAverage(i, ordi.MANumFrames, path);
                    }
                }
            }
        }
示例#4
0
        //bool m_nonNumberEntered;

        public LogControl(List <LogRange> logRanges, StatoscopeForm statoscopeForm)
        {
            m_statoscopeForm = statoscopeForm;

            InitializeComponent();
            InitializeDisplayScales();

            if (components == null)
            {
                components = new Container();
            }

            intervalPath.Text = "";

            Dock = DockStyle.Fill;

            m_ordiTree = new OverviewRDI();
            m_prdiTree = new ProfilerRDI();
            m_urdiTree = new UserMarkerRDI();
            m_trdiTree = new TargetLineRDI();
            m_zrdiTree = new ZoneHighlighterRDI();

            m_ordiTreeView = new ORDICheckboxTreeView(this, m_ordiTree);
            m_prdiTreeView = new PRDICheckboxTreeView(this, m_prdiTree);
            m_urdiTreeView = new URDICheckboxTreeView(this, m_urdiTree);
            m_trdiTreeView = new TRDICheckboxTreeView(this, m_trdiTree);
            m_zrdiTreeView = new ZRDICheckboxTreeView(this, m_zrdiTree);

            InitializeItemInfoControls();

            foreach (LogRange logRange in logRanges)
            {
                LogView logView = new LogView(this, logRange);

                components.Add(logView);
                m_logViews.Add(logView);
            }

            m_intervalControl         = new IntervalControl();
            m_intervalControl.Dock    = DockStyle.Fill;
            m_intervalControl.Visible = false;

            m_intervalControl.Tree = m_logViews[0].m_logData.IntervalTree;

            m_intervalControl.ViewChanged           += new EventHandler(m_intervalControl_ViewChanged);
            m_intervalControl.ActiveIntervalChanged += new EventHandler(m_intervalControl_ActiveIntervalChanged);

            intervalTreemapTableLayoutPanel.Controls.Add(m_intervalControl, 0, 0);

            m_treemapControl         = new ProfilerTreemapControl(this);
            m_treemapControl.Dock    = DockStyle.Fill;
            m_treemapControl.Visible = false;

            m_treemapControl.SelectionChanged += new EventHandler(m_treemapControl_SelectionChanged);

            intervalTreemapTableLayoutPanel.Controls.Add(m_treemapControl, 0, 1);

            m_OGLGraphingControl                    = new OpenGLGraphingControl(this);
            m_OGLGraphingControl.Dock               = DockStyle.Fill;
            m_OGLGraphingControl.SelectionChanged  += new EventHandler(m_OGLGraphingControl_SelectionChanged);
            m_OGLGraphingControl.SelectedHighlight += new EventHandler(m_OGLGraphingControl_SelectedHighlight);

            displayTableLayoutPanel.Controls.Add(m_OGLGraphingControl, 0, 1);

            logListTableLayoutPanel.SuspendLayout();

            foreach (LogView logView in m_logViews)
            {
                if (m_logViews.Count > 1)
                {
                    logView.SetSingleOrdiColour(RGB.RandomHueRGB());
                }

                LogListItem logListItem = new LogListItem(logView);
                logListTableLayoutPanel.Controls.Add(logListItem);
            }

            logListTableLayoutPanel.ResumeLayout();

            m_spikeFinder = new SpikeFinder(this);

            overviewTabPage.Controls.Add(new CTVControl(m_ordiTreeView));
            functionProfileTabPage.Controls.Add(new CTVControl(m_prdiTreeView));
            userMarkersTabPage.Controls.Add(new CTVControl(m_urdiTreeView));
            targetLinesTabPage.Controls.Add(new CTVControl(m_trdiTreeView, new TargetLineCTVControlPanel(m_trdiTreeView)));
            spikeFinderTabPage.Controls.Add(m_spikeFinder);
            zoneHighlightersTabPage.Controls.Add(new CTVControl(m_zrdiTreeView, new ZoneHighlighterCTVControlPanel(m_zrdiTreeView)));

            //m_nonNumberEntered = false;

            InitializeTargetLines();
            InitializeZoneHighlighters();

            UpdateControls(0);

            m_OGLGraphingControl.FitViewToFrameRecords();

            AutoEnableTargetLines();
            //CreateSummaryTabPage();	// this will be replaced with a much better Dr Statoscope feature later
        }
 public OverviewItemInfoControl(LogControl logControl, OverviewRDI ordiTree, RDICheckboxTreeView <OverviewRDI> ordiCTV)
     : base(logControl, ordiTree, ordiCTV)
 {
     InitializeComponent();
     ItemPathLabel = itemPathLabel;
 }
示例#6
0
 public void CalculateLocalMax(OverviewRDI ordi, int fromIdx)
 {
     CalculateLocalMax(ordi, fromIdx, -1);
 }
示例#7
0
 public void CalculateMovingAverage(OverviewRDI ordi, int fromIdx)
 {
     CalculateMovingAverage(ordi, fromIdx, -1);
 }
示例#8
0
        public CDIResult CreateDisplayInfo(int fromIdx, int toIdx)
        {
            CDIResult result = new CDIResult();

            List <string> dontAdds = new List <string>();

            dontAdds.Add("/posx");
            dontAdds.Add("/posy");
            dontAdds.Add("/posz");
            dontAdds.Add("/rotx");
            dontAdds.Add("/roty");
            dontAdds.Add("/rotz");
            dontAdds.Add("/frameTimeInS");
            dontAdds.Add("/gpuTimeInS");
            dontAdds.Add("/TexturePool");

            foreach (string path in m_dataPaths.Paths.Where(p => !m_cdiProcessedPaths.Contains(p)))
            {
                m_cdiProcessedPaths.Add(path);

                foreach (IGraphDesc graphDesc in m_graphDescs)
                {
                    if (FrameRecord.PathMatchesPattern(path, graphDesc.GetSearchPath()))
                    {
                        string strippedPath = path.Substring(path.IndexOf('/'));

                        if (!path.StartsWith("/"))
                        {
                            throw new Exception();
                        }

                        if (!dontAdds.Contains(strippedPath))
                        {
                            int    indexOfLastSlash = path.LastIndexOf("/");
                            string basePath         = path.Substring(0, indexOfLastSlash);
                            string name             = path.Substring(indexOfLastSlash + 1);

                            float displayScale = m_logControl.GetDisplayScale(strippedPath);

                            if (graphDesc is CProfileGraphDesc)
                            {
                                ProfilerRDI prdi;

                                if (m_logControl.m_prdiTree.ContainsPath(basePath))
                                {
                                    prdi = m_logControl.m_prdiTree[basePath];
                                }
                                else
                                {
                                    prdi = new ProfilerRDI(basePath, displayScale);
                                }

                                List <ProfilerRDI> newPRDIs = m_logControl.m_prdiTree.Add(prdi);
                                result.NewPRDIs.AddRange(newPRDIs);

                                // this is rather wasteful and needs rethinking
                                foreach (ProfilerRDI newPRDI in newPRDIs)
                                {
                                    CProfileGraphDesc    profGD = graphDesc as CProfileGraphDesc;
                                    ProfileGraphLeafDesc desc   = profGD.m_leafDescs[profGD.m_activeLeafDesc];
                                    newPRDI.SetMetaData(desc.Name, desc.Type);
                                }
                            }
                            else
                            {
                                OverviewRDI ordi;

                                if (m_logControl.m_ordiTree.ContainsPath(path))
                                {
                                    ordi = m_logControl.m_ordiTree[path];
                                }
                                else
                                {
                                    ordi = new OverviewRDI(path, displayScale);
                                }

                                // default frame length to black
                                if (path == "/frameLengthInMS")
                                {
                                    ordi.Colour = new Statoscope.RGB(0, 0, 0);
                                }

                                List <OverviewRDI> newORDIs = m_logControl.m_ordiTree.Add(ordi);
                                result.NewORDIs.AddRange(newORDIs);
                            }
                        }

                        break;                          // find the first one that matches
                    }
                }
            }

            AddValueStatsAndItemData(result.NewPRDIs, result.NewORDIs);

            lock (m_baseLogData)
            {
                for (int i = fromIdx; i <= toIdx; i++)
                {
                    FrameRecord fr = m_baseLogData.FrameRecords[i];

                    foreach (UserMarkerLocation userMarkerLoc in fr.UserMarkers)
                    {
                        UserMarkerRDI        umrdi     = new UserMarkerRDI(userMarkerLoc, this);
                        List <UserMarkerRDI> newUMRDIs = m_logControl.m_urdiTree.Add(umrdi);
                        result.NewUMRDIs.AddRange(newUMRDIs);
                    }
                }
            }

            return(result);
        }