// ----------------------------------------------------------------------
        void DisplayColumnData()
        {
            Rect dataArea = new Rect(-myScrollbarPosition.x, -myScrollbarPosition.y, myColumnDataSize.x, myColumnDataSize.y);

            // Display column frames.
            if (myDisplayColumnFrame)
            {
                float x = dataArea.x;
                foreach (var column in myColumns)
                {
                    GUI.Box(new Rect(x, dataArea.y, column.DataSize.x, dataArea.height), "");
                    x += column.DataSize.x;
                }
            }
            // Display column data.
            float y = dataArea.y;

            for (int row = 0; row < myRowHeights.Length; ++row)
            {
                float x = dataArea.x;
                foreach (var column in myColumns)
                {
                    Rect    displayRect = new Rect(x + column.Margins.left, y + column.Margins.top, column.DataSize.x - column.Margins.horizontal, myRowHeights[row] - column.Margins.vertical);
                    Vector2 dataSize    = myDataSource.LayoutSizeForObjectInTableView(this, column, row);
                    displayRect = DSCellView.PerformAlignment(displayRect, dataSize, column.Anchor);
                    myDataSource.DisplayObjectInTableView(this, column, row, displayRect);
                    x += column.DataSize.x;
                }
                y += myRowHeights[row];
            }
        }
        // ----------------------------------------------------------------------
        void DisplayColumnTitles()
        {
            Rect titleArea = new Rect(-myScrollbarPosition.x, 0, myColumnTitleSize.x, myColumnTitleSize.y);

            foreach (var column in myColumns)
            {
                Rect titleFrameArea = titleArea;
                titleFrameArea.width = column.DataSize.x;
                Rect columnTitleArea = titleFrameArea;
                columnTitleArea.x      += column.Margins.left;
                columnTitleArea.width  -= column.Margins.horizontal;
                columnTitleArea.y      += column.Margins.top;
                columnTitleArea.height -= column.Margins.vertical;
                if (column.Title != null)
                {
                    Rect titleDisplayArea = DSCellView.PerformAlignment(columnTitleArea, ColumnTitleGUIStyle.CalcSize(column.Title), column.Anchor);
                    if (myDisplayColumnFrame)
                    {
                        GUI.Box(titleFrameArea, "");
                    }
                    GUI.Label(titleDisplayArea, column.Title, ColumnTitleGUIStyle);
                }
                titleArea.x     += column.DataSize.x;
                titleArea.width -= column.DataSize.x;
            }
        }