private bool DoSplitter(Rect verticalSplitter, Rect horizontalSplitter)
        {
            EditorGUIUtility.AddCursorRect(verticalSplitter, MouseCursor.ResizeVertical);
            EditorGUIUtility.AddCursorRect(horizontalSplitter, MouseCursor.ResizeHorizontal);
            var e = Event.current;

            switch (e.type)
            {
            case EventType.MouseDown:
                if (verticalSplitter.Contains(e.mousePosition))
                {
                    m_SplitterDragging = SplitterDragging.Vertical;
                    m_SplitterOldValue = m_State.MemoryWindowHeight;
                    m_SplitterStart    = e.mousePosition.y;
                    e.Use();
                    return(true);
                }

                if (horizontalSplitter.Contains(e.mousePosition))
                {
                    m_SplitterDragging = SplitterDragging.Horizontal;
                    m_SplitterOldValue = m_State.MemoryWindowWidth;
                    m_SplitterStart    = e.mousePosition.x;
                    e.Use();
                    return(true);
                }
                break;

            case EventType.MouseDrag:
            case EventType.MouseUp:
                switch (m_SplitterDragging)
                {
                case SplitterDragging.Vertical:
                    m_State.MemoryWindowHeight = Math.Max(m_SplitterOldValue + m_SplitterStart - e.mousePosition.y, kMinMemoryWindowHeight);
                    if (e.type == EventType.MouseUp)
                    {
                        ClearSplitterOperation();
                    }
                    e.Use();
                    return(true);

                case SplitterDragging.Horizontal:
                    m_State.MemoryWindowWidth = Mathf.Clamp(m_SplitterOldValue + e.mousePosition.x - m_SplitterStart, kMinMemoryWindowWidth, kMaxMemoryWindowWidth);
                    if (e.type == EventType.MouseUp)
                    {
                        ClearSplitterOperation();
                    }
                    e.Use();
                    return(true);
                }
                break;
            }

            return(false);
        }
        public AndroidLogcatMemoryViewer(EditorWindow parent, AndroidLogcatRuntimeBase runtime)
        {
            m_Parent   = parent;
            m_Runtime  = runtime;
            m_Material = (Material)EditorGUIUtility.LoadRequired("SceneView/HandleLines.mat");
            m_State    = m_Runtime.ProjectSettings.MemoryViewerState;

            for (int i = 0; i < kMaxEntries; i++)
            {
                m_Entries[i] = new AndroidMemoryStatistics();
            }

            m_RequestsInQueue = 0;

            /*
             * // For Debugging purposes
             * for (int i = 0; i < kMaxEntries; i++)
             * {
             *  InjectFakeMemoryStatistics((int)(UnityEngine.Random.value * k16MB * 2.0f));
             * }
             * //**/

            m_SplitterStart    = 0;
            m_SplitterDragging = SplitterDragging.None;

            m_MemoryTypeColors[MemoryType.NativeHeap]   = Color.red;
            m_MemoryTypeColors[MemoryType.JavaHeap]     = Color.yellow;
            m_MemoryTypeColors[MemoryType.Code]         = Color.blue;
            m_MemoryTypeColors[MemoryType.Stack]        = Color.cyan;
            m_MemoryTypeColors[MemoryType.Graphics]     = Color.green;
            m_MemoryTypeColors[MemoryType.PrivateOther] = Color.grey;
            m_MemoryTypeColors[MemoryType.System]       = Color.magenta;
            m_MemoryTypeColors[MemoryType.Total]        = Color.white;
            ClearEntries();
            ValidateSettings();
        }
 private void ClearSplitterOperation()
 {
     m_SplitterDragging = SplitterDragging.None;
     m_SplitterStart    = 0.0f;
     m_SplitterOldValue = 0.0f;
 }