public int Draw(MarkerData marker, ProfileDataView markerContext, int topNumber, string[] topStrings, int[] topValues)
        {
            GUIStyle style     = GUI.skin.label;
            float    w         = m_WidthColumn0;
            float    h         = style.lineHeight;
            float    ySpacing  = 2;
            float    barHeight = h - ySpacing;

            EditorGUILayout.BeginVertical(GUILayout.Width(w + m_WidthColumn1 + m_WidthColumn2 + m_WidthColumn3));

            topNumber = DrawTopNumber(topNumber, topStrings, topValues);

            /*
             * EditorGUILayout.BeginHorizontal();
             * EditorGUILayout.LabelField("", GUILayout.Width(w));
             * EditorGUILayout.LabelField("Value", GUILayout.Width(LayoutSize.WidthColumn1));
             * EditorGUILayout.LabelField("Frame", GUILayout.Width(LayoutSize.WidthColumn2));
             * EditorGUILayout.EndHorizontal();
             */

            // var frameSummary = m_ProfileSingleView.analysis.GetFrameSummary();
            float barMax = marker.msMax; // frameSummary.msMax

            if (m_Units.Units == Units.Count)
            {
                barMax = marker.countMax;
            }

            // Marker frames are ordered by frame time
            // If we are sorting by count then we need to apply a sort
            bool             showCount = m_Units.Units == Units.Count;
            List <FrameTime> frames    = GetTopN(marker, topNumber, showCount);

            foreach (FrameTime frameTime in frames)
            {
                float barValue  = (m_Units.Units == Units.Count) ? frameTime.count : frameTime.ms;
                float barLength = Math.Min((w * barValue) / barMax, w);

                EditorGUILayout.BeginHorizontal();
                if (m_2D.DrawStart(w, h, Draw2D.Origin.TopLeft, style))
                {
                    m_2D.DrawFilledBox(0, ySpacing, barLength, barHeight, colorBar);
                    m_2D.DrawFilledBox(barLength, ySpacing, w - barLength, barHeight, colorBarBackground);
                    m_2D.DrawEnd();

                    Rect rect = GUILayoutUtility.GetLastRect();
                    GUI.Label(rect, new GUIContent("", m_Units.ToTooltipString(barValue, true)));
                }
                EditorGUILayout.LabelField(m_Units.ToGUIContentWithTooltips(barValue, true), GUILayout.Width(m_WidthColumn2));
                if (m_DrawFrameIndexButton != null)
                {
                    m_DrawFrameIndexButton(frameTime.frameIndex, markerContext);
                }
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();
            }

            // Show blank space for missing frames
            var     content = new GUIContent("", "");
            Vector2 size    = GUI.skin.button.CalcSize(content);

            h = Math.Max(barHeight, size.y);
            for (int i = frames.Count; i < topNumber; i++)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("", GUILayout.Height(h));
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndVertical();

            return(topNumber);
        }