sysperfana/heapanalyser/Libraries/UI/HeapCtrlLib/Utilities/HeapCellMetaData.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Tue, 15 Jun 2010 12:47:20 +0300
changeset 8 15296fd0af4a
permissions -rw-r--r--
HeapAnalyser 1.1.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     1
/*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     4
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     5
* Redistribution and use in source and binary forms, with or without
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     6
* modification, are permitted provided that the following conditions are met:
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     7
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     8
* - Redistributions of source code must retain the above copyright notice,
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
     9
*   this list of conditions and the following disclaimer.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    10
* - Redistributions in binary form must reproduce the above copyright notice,
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    11
*   this list of conditions and the following disclaimer in the documentation
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    12
*   and/or other materials provided with the distribution.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    13
* - Neither the name of Nokia Corporation nor the names of its contributors
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    14
*   may be used to endorse or promote products derived from this software
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    15
*   without specific prior written permission.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    16
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    27
* POSSIBILITY OF SUCH DAMAGE.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    28
* 
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    29
* Initial Contributors:
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    30
* Nokia Corporation - initial contribution.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    31
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    32
* Contributors:
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    33
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    34
* Description: 
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    35
*
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    36
*/
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    37
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    38
using System;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    39
using System.Drawing;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    40
using HeapLib.Cells;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    41
using SymbianUtils.RawItems;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    42
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    43
namespace HeapCtrlLib.Utilities
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    44
{
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    45
    public class HeapCellMetaData
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    46
    {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    47
        #region Constructors & destructor
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    48
        public HeapCellMetaData( HeapRenderingNavigator aNavigator )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    49
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    50
            aNavigator.iNavBegin += new HeapCtrlLib.Utilities.HeapRenderingNavigator.NavBegin( Navigator_NavBegin );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    51
            aNavigator.iNavEnd += new HeapCtrlLib.Utilities.HeapRenderingNavigator.NavEnd( Navigator_NavEnd );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    52
            aNavigator.iNavHeapCellBegin += new HeapCtrlLib.Utilities.HeapRenderingNavigator.NavHeapCellBegin( Navigator_NavHeapCellBegin );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    53
            aNavigator.iNavHeapCellEnd += new HeapCtrlLib.Utilities.HeapRenderingNavigator.NavHeapCellEnd( Navigator_NavHeapCellEnd );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    54
            aNavigator.iNavNewColumn += new HeapCtrlLib.Utilities.HeapRenderingNavigator.NavNewColumn( Navigator_NavNewColumn );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    55
            aNavigator.iNavNewRowBody += new HeapCtrlLib.Utilities.HeapRenderingNavigator.NavNewRowBody( Navigator_NavNewRowBody );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    56
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    57
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    58
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    59
        #region Properties
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    60
        public Point BoxCoordinates
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    61
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    62
            get { return iBoxCoordinates; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    63
            set { iBoxCoordinates = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    64
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    65
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    66
        public int RemainingBoxes
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    67
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    68
            get { return iRemainingBoxes; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    69
            set { iRemainingBoxes = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    70
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    71
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    72
        public int RemainingBoxesAfterThisRow
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    73
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    74
            get { return iRemainingBoxesAfterThisRow; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    75
            set { iRemainingBoxesAfterThisRow = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    76
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    77
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    78
        public int RemainingRows
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    79
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    80
            get { return iRemainingRows; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    81
            set { iRemainingRows = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    82
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    83
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    84
        public long RemainingBytes
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    85
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    86
            get { return iRemainingBytes; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    87
            set { iRemainingBytes = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    88
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    89
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    90
        public int CellBoxIndex
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    91
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    92
            get { return iCellBoxIndex; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    93
            set { iCellBoxIndex = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    94
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    95
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    96
        public int CellRowIndex
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    97
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    98
            get { return iCellRowIndex; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
    99
            set { iCellRowIndex = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   100
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   101
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   102
        public int CellBoxCount
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   103
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   104
            get { return iCellBoxCount; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   105
            set { iCellBoxCount = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   106
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   107
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   108
        public RawItem RawItem
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   109
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   110
            get { return iRawItem; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   111
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   112
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   113
        public HeapCell.TRegion Region
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   114
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   115
            get
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   116
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   117
                System.Diagnostics.Debug.Assert( iCell != null, "Not rendering a heap cell" );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   118
                System.Diagnostics.Debug.Assert( iAddress > 0, "Invalid current address" );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   119
                //
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   120
                HeapCell.TRegion region = iCell.RegionForAddress( iAddress );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   121
                return region;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   122
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   123
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   124
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   125
        public HeapCellBorderInfo Borders
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   126
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   127
            get { return iBorders; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   128
            set { iBorders = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   129
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   130
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   131
        // Set by the content renderer, read by the border renderer
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   132
        public Color CellBoxColor
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   133
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   134
            get { return iCellBoxColor; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   135
            set { iCellBoxColor = value; }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   136
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   137
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   138
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   139
        #region Internal methods
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   140
        private void CalculateBorders( HeapCell aCell, long aAddress, Size aDimensions )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   141
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   142
            long remainingBoxes = ( aCell.EndAddress - aAddress ) / SymbianUtils.RawItems.RawItem.KSizeOfOneRawItemInBytes;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   143
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   144
            // Start with no borders
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   145
            Borders.Reset();
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   146
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   147
            // How many boxes are left to render on this row
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   148
            int remainingBoxesForThisLine = ( aDimensions.Width - BoxCoordinates.X );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   149
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   150
            // Its the first line if we are drawing the first row, or if we're drawing the
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   151
            // second row and there weren't any boxes from this heap cell directly above us
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   152
            // in the grid.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   153
            bool firstLine = ( CellRowIndex == 0 );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   154
            if  ( CellRowIndex == 1 )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   155
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   156
                int numberOfBoxesDrawnOnPreviousLine = ( CellBoxIndex - BoxCoordinates.X );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   157
                int xPosOfFirstBox = aDimensions.Width - numberOfBoxesDrawnOnPreviousLine;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   158
                firstLine = ( BoxCoordinates.X < xPosOfFirstBox );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   159
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   160
            Borders.SetBorder( THeapCellBorderType.ETop, firstLine );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   161
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   162
            // Its the last line if we are drawing the last row, or then if we're drawing
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   163
            // the last-but-one row and there weren't any boxes from this heap cell directly
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   164
            // below us in the grid.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   165
            bool lastLine = ( RemainingBoxes <= remainingBoxesForThisLine );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   166
            if  ( RemainingRows > 0 && BoxCoordinates.Y == aDimensions.Height - 1 )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   167
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   168
                lastLine = true;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   169
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   170
            else if ( RemainingRows == 1 )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   171
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   172
                // Now we need to work out how many boxes of the next row will be
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   173
                // required to finish rendering it fully.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   174
                lastLine = ( BoxCoordinates.X >= RemainingBoxesAfterThisRow );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   175
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   176
            Borders.SetBorder( THeapCellBorderType.EBottom, lastLine );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   177
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   178
            // Its the first box if it is the absolute first box we have rendered for a given
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   179
            // cell, or then it is the first box in a new row.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   180
            bool firstBox = ( CellBoxIndex == 0 ) || ( BoxCoordinates.X == 0 );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   181
            Borders.SetBorder( THeapCellBorderType.ELeft, firstBox );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   182
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   183
            // Its the last box if it is the absolute last box we have rendered for a given
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   184
            // cell, or then it is the last box in a new row.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   185
            bool lastBox = ( CellBoxIndex == CellBoxCount - 1 ) || ( remainingBoxes == 0 ) || ( BoxCoordinates.X == aDimensions.Width - 1 );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   186
            Borders.SetBorder( THeapCellBorderType.ERight, lastBox );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   187
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   188
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   189
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   190
        #region Navigator call backs
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   191
        private void Navigator_NavBegin()
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   192
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   193
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   194
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   195
        private void Navigator_NavEnd()
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   196
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   197
            iCell = null;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   198
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   199
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   200
        private void Navigator_NavHeapCellBegin( HeapCell aCell, uint aAddress, Point aPosition, Size aDimensions, Size aBoxSize, Size aPadding )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   201
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   202
            // Starting a new cell
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   203
            iCell = aCell;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   204
            iAddress = aAddress;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   205
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   206
            // This contains the absolute number of boxes required to render a given
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   207
            // heap cell.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   208
            CellBoxCount = (int) ( aCell.Length / SymbianUtils.RawItems.RawItem.KSizeOfOneRawItemInBytes );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   209
            BoxCoordinates = new Point();
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   210
            RemainingBoxes = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   211
            RemainingBoxesAfterThisRow = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   212
            RemainingRows = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   213
            RemainingBytes = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   214
            CellRowIndex = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   215
            Borders.Reset();
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   216
 
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   217
            // Reset current raw item - we won't have a new one until we hit the payload section
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   218
            iRawItem = null;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   219
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   220
            // This starts at -1 since the first act of
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   221
            // preparing the meta data is to increment the index by one.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   222
            CellBoxIndex = -1;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   223
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   224
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   225
        private void Navigator_NavHeapCellEnd( HeapCell aCell, HeapCellMetaData aMetaData, uint aAddress, Point aPosition, Size aDimensions, Size aBoxSize, Size aPadding )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   226
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   227
            // Finished with the cell...
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   228
            iCell = null;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   229
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   230
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   231
        private void Navigator_NavNewColumn( HeapCell aCell, HeapCellMetaData aMetaData, uint aAddress, Point aPixelPos, Point aBoxPos, Size aDimensions, Size aBoxSize, Size aPadding )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   232
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   233
            System.Diagnostics.Debug.Assert( iCell != null && iCell.Address == aCell.Address );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   234
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   235
            // Indicate that we're processing a new box
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   236
            ++CellBoxIndex;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   237
            iAddress = aAddress;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   238
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   239
            // Set our box coordinates
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   240
            iBoxCoordinates = aBoxPos;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   241
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   242
            // Get current raw item if we're in the payload section
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   243
            iRawItem = null;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   244
            try
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   245
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   246
                HeapCell.TRegion region = Region;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   247
                if ( region == HeapCell.TRegion.EPayload )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   248
                {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   249
                    iRawItem = iCell[ aAddress ];
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   250
                }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   251
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   252
            catch( ArgumentException )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   253
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   254
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   255
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   256
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   257
            // Some up front calculations that we'll need below...
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   258
            RemainingBytes = aCell.Remainder( aAddress );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   259
            int remainingBoxesForThisLine = ( aDimensions.Width - BoxCoordinates.X );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   260
            RemainingBoxes = (int) ( RemainingBytes / SymbianUtils.RawItems.RawItem.KSizeOfOneRawItemInBytes );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   261
            RemainingBoxesAfterThisRow = Math.Max( 0, RemainingBoxes - remainingBoxesForThisLine );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   262
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   263
            // If we can render all the remaining boxes in the not-yet-drawn
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   264
            // boxes from this row, we don't need anymore rows.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   265
            RemainingRows = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   266
            if  ( RemainingBoxesAfterThisRow > 0 )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   267
            {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   268
                // Otherwise, we need to identify how many more rows we will need
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   269
                // in order to complete the remaining boxes that are left over
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   270
                // after this row's boxes.
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   271
                RemainingRows = ( RemainingBoxesAfterThisRow / aDimensions.Width ) + 1;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   272
            }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   273
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   274
            // Work out the borders that should be enabled for the cell
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   275
            CalculateBorders( aCell, aAddress, aDimensions );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   276
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   277
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   278
        private void Navigator_NavNewRowBody( HeapCellMetaData aMetaData, uint aAddress, Point aPosition, Size aDimensions, Size aBoxSize, Size aPadding )
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   279
        {
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   280
            ++CellRowIndex;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   281
        }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   282
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   283
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   284
        #region Data members
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   285
        private Point iBoxCoordinates = new Point( 0, 0 );
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   286
        private int iRemainingBoxes = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   287
        private int iRemainingBoxesAfterThisRow = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   288
        private int iRemainingRows = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   289
        private long iRemainingBytes = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   290
        private int iCellBoxIndex = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   291
        private int iCellRowIndex = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   292
        private int iCellBoxCount = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   293
        private uint iAddress = 0;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   294
        private HeapCell iCell = null;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   295
        private RawItem iRawItem = null;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   296
        private HeapCellBorderInfo iBorders = new HeapCellBorderInfo();
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   297
        private Color iCellBoxColor = Color.HotPink;
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   298
        #endregion
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   299
    }
15296fd0af4a HeapAnalyser 1.1.0
Matti Laitinen <matti.t.laitinen@nokia.com>
parents:
diff changeset
   300
}