Example #1
0
        public override Size Draw(ViewInfo view, int x, int y)
        {
            if (IsHidden)
            {
                return(DrawHidden(view, x, y));
            }

            DrawInvalidMemoryIndicator(view, y);

            var origX = x;
            var origY = y;

            AddSelection(view, x, y, view.Font.Height);

            x = AddOpenClose(view, x, y);
            x = AddIcon(view, x, y, Icons.Pointer, -1, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(view, x, y);

            x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "Ptr") + view.Font.Width;
            x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width;
            x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>") + view.Font.Width;
            x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeType) + view.Font.Width;

            var ptr = view.Memory.ReadIntPtr(Offset);

            x = AddText(view, x, y, view.Settings.OffsetColor, HotSpot.NoneId, "->") + view.Font.Width;
            x = AddText(view, x, y, view.Settings.ValueColor, 0, "0x" + ptr.ToString(Constants.AddressHexFormat)) + view.Font.Width;

            x = AddComment(view, x, y);

            AddTypeDrop(view, y);
            AddDelete(view, y);

            y += view.Font.Height;

            var size = new Size(x - origX, y - origY);

            if (levelsOpen[view.Level])
            {
                memory.Size    = InnerNode.MemorySize;
                memory.Process = view.Memory.Process;
                memory.Update(ptr);

                var v = view.Clone();
                v.Address = ptr;
                v.Memory  = memory;

                var innerSize = InnerNode.Draw(v, tx, y);

                size.Width   = Math.Max(size.Width, innerSize.Width + tx - origX);
                size.Height += innerSize.Height;
            }

            return(size);
        }
        protected override Size DrawChild(ViewInfo view, int x, int y)
        {
            var v = view.Clone();

            v.Address        = view.Address.Add(Offset) + InnerNode.MemorySize * CurrentIndex;
            v.Memory         = view.Memory.Clone();
            v.Memory.Offset += Offset.ToInt32() + InnerNode.MemorySize * CurrentIndex;

            return(InnerNode.Draw(v, x, y));
        }
Example #3
0
        protected override Size DrawChild(DrawContext context, int x, int y)
        {
            var innerContext = context.Clone();

            innerContext.Address        = context.Address + Offset + InnerNode.MemorySize * CurrentIndex;
            innerContext.Memory         = context.Memory.Clone();
            innerContext.Memory.Offset += Offset + InnerNode.MemorySize * CurrentIndex;

            return(InnerNode.Draw(innerContext, x, y));
        }
Example #4
0
        /// <summary>Draws this node.</summary>
        /// <param name="view">The view information.</param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        /// <returns>The height the node occupies.</returns>
        public override int Draw(ViewInfo view, int x, int y)
        {
            if (IsHidden)
            {
                return(DrawHidden(view, x, y));
            }

            AddSelection(view, x, y, view.Font.Height);
            AddDelete(view, x, y);
            AddTypeDrop(view, x, y);

            x = AddOpenClose(view, x, y);
            x = AddIcon(view, x, y, Icons.Pointer, -1, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(view, x, y);

            x = AddText(view, x, y, FrostbitePluginExt.Settings.TypeColor, HotSpot.NoneId, "WeakPtr") + view.Font.Width;
            x = AddText(view, x, y, FrostbitePluginExt.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width;
            x = AddText(view, x, y, FrostbitePluginExt.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>");
            x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeType);

            x += view.Font.Width;
            AddComment(view, x, y);

            y += view.Font.Height;

            if (levelsOpen[view.Level])
            {
                var ptr = view.Memory.ReadObject <IntPtr>(Offset);
                if (!ptr.IsNull())
                {
                    ptr = view.Memory.Process.ReadRemoteObject <IntPtr>(ptr);
                    if (!ptr.IsNull())
                    {
                        ptr = ptr - IntPtr.Size;
                    }
                }

                memory.Size    = InnerNode.MemorySize;
                memory.Process = view.Memory.Process;
                memory.Update(ptr);

                var v = view.Clone();
                v.Address = ptr;
                v.Memory  = memory;

                y = InnerNode.Draw(v, tx, y);
            }

            return(y);
        }
Example #5
0
        public override Size Draw(ViewInfo view, int x, int y)
        {
            if (IsHidden && !IsWrapped)
            {
                return(DrawHidden(view, x, y));
            }

            var origX = x;
            var origY = y;

            AddSelection(view, x, y, view.Font.Height);

            x = AddOpenClose(view, x, y);
            x = AddIcon(view, x, y, Icons.Class, HotSpot.NoneId, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(view, x, y);

            x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "Instance") + view.Font.Width;
            if (!IsWrapped)
            {
                x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width;
            }
            x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>") + view.Font.Width;
            x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeClassType) + view.Font.Width;

            x = AddComment(view, x, y);

            DrawInvalidMemoryIndicator(view, y);
            AddTypeDrop(view, y);
            AddDelete(view, y);

            y += view.Font.Height;

            var size = new Size(x - origX, y - origY);

            if (LevelsOpen[view.Level])
            {
                var v = view.Clone();
                v.Address        = view.Address.Add(Offset);
                v.Memory         = view.Memory.Clone();
                v.Memory.Offset += Offset.ToInt32();

                var innerSize = InnerNode.Draw(v, tx, y);
                size.Width   = Math.Max(size.Width, innerSize.Width + tx - origX);
                size.Height += innerSize.Height;
            }

            return(size);
        }
        public override Size Draw(DrawContext context, int x, int y)
        {
            if (IsHidden && !IsWrapped)
            {
                return(DrawHidden(context, x, y));
            }

            var origX = x;
            var origY = y;

            AddSelection(context, x, y, context.Font.Height);

            x = AddOpenCloseIcon(context, x, y);
            x = AddIcon(context, x, y, context.IconProvider.Class, HotSpot.NoneId, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(context, x, y);

            x = AddText(context, x, y, context.Settings.TypeColor, HotSpot.NoneId, "Instance") + context.Font.Width;
            if (!IsWrapped)
            {
                x = AddText(context, x, y, context.Settings.NameColor, HotSpot.NameId, Name) + context.Font.Width;
            }
            x = AddText(context, x, y, context.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>") + context.Font.Width;
            x = AddIcon(context, x, y, context.IconProvider.Change, 4, HotSpotType.ChangeClassType) + context.Font.Width;

            x = AddComment(context, x, y);

            DrawInvalidMemoryIndicatorIcon(context, y);
            AddContextDropDownIcon(context, y);
            AddDeleteIcon(context, y);

            y += context.Font.Height;

            var size = new Size(x - origX, y - origY);

            if (LevelsOpen[context.Level])
            {
                var innerContext = context.Clone();
                innerContext.Address        = context.Address + Offset;
                innerContext.Memory         = context.Memory.Clone();
                innerContext.Memory.Offset += Offset;

                var innerSize = InnerNode.Draw(innerContext, tx, y);
                size.Width   = Math.Max(size.Width, innerSize.Width + tx - origX);
                size.Height += innerSize.Height;
            }

            return(size);
        }
Example #7
0
        protected override int DrawChild(ViewInfo view, int x, int y)
        {
            var ptr = view.Memory.ReadObject <IntPtr>(Offset + InnerNode.MemorySize * CurrentIndex);

            memory.Size    = InnerNode.MemorySize;
            memory.Process = view.Memory.Process;
            memory.Update(ptr);

            var v = view.Clone();

            v.Address = ptr;
            v.Memory  = memory;

            return(InnerNode.Draw(v, x, y));
        }
Example #8
0
        protected override Size DrawChild(DrawContext context, int x, int y)
        {
            var ptr = context.Memory.ReadIntPtr(Offset);

            if (!ptr.IsNull())
            {
                ptr = context.Process.ReadRemoteIntPtr(ptr + CurrentIndex * IntPtr.Size);
            }

            memory.Size = InnerNode.MemorySize;
            memory.UpdateFrom(context.Process, ptr);

            var innerContext = context.Clone();

            innerContext.Address = ptr;
            innerContext.Memory  = memory;

            return(InnerNode.Draw(innerContext, x, y));
        }
        protected override Size DrawChild(ViewInfo view, int x, int y)
        {
            var ptr = view.Memory.ReadIntPtr(Offset);

            if (!ptr.IsNull())
            {
                ptr = view.Process.ReadRemoteIntPtr(ptr + CurrentIndex * IntPtr.Size);
            }

            memory.Size = InnerNode.MemorySize;
            memory.UpdateFrom(view.Process, ptr);

            var v = view.Clone();

            v.Address = ptr;
            v.Memory  = memory;

            return(InnerNode.Draw(v, x, y));
        }
Example #10
0
        /// <summary>Draws this node.</summary>
        /// <param name="view">The view information.</param>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        /// <returns>The height the node occupies.</returns>
        public override int Draw(ViewInfo view, int x, int y)
        {
            if (IsHidden)
            {
                return(DrawHidden(view, x, y));
            }

            AddSelection(view, x, y, view.Font.Height);
            AddDelete(view, x, y);
            AddTypeDrop(view, x, y);

            x = AddOpenClose(view, x, y);
            x = AddIcon(view, x, y, Icons.Class, -1, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(view, x, y);

            x = AddText(view, x, y, Program.Settings.TypeColor, HotSpot.NoneId, "Instance") + view.Font.Width;
            x = AddText(view, x, y, Program.Settings.NameColor, HotSpot.NameId, Name);
            x = AddText(view, x, y, Program.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>");
            x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeType);

            x += view.Font.Width;
            AddComment(view, x, y);

            y += view.Font.Height;

            if (levelsOpen[view.Level])
            {
                var v = view.Clone();
                v.Address       = view.Address.Add(Offset);
                v.Memory        = view.Memory.Clone();
                v.Memory.Offset = Offset.ToInt32();

                y = InnerNode.Draw(v, tx, y);
            }

            return(y);
        }
Example #11
0
        public override Size Draw(ViewInfo view, int x, int y)
        {
            if (IsHidden && !IsWrapped)
            {
                return(DrawHidden(view, x, y));
            }

            var origX = x;
            var origY = y;

            AddSelection(view, x, y, view.Font.Height);

            if (InnerNode != null)
            {
                x = AddOpenCloseIcon(view, x, y);
            }
            else
            {
                x += TextPadding;
            }
            x = AddIcon(view, x, y, Icons.Pointer, -1, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(view, x, y);

            x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "TSharedPtr") + view.Font.Width;
            if (!IsWrapped)
            {
                x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width;
            }
            if (InnerNode == null)
            {
                x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, "<void>") + view.Font.Width;
            }
            x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeWrappedType) + view.Font.Width;

            var ptr = view.Memory.ReadIntPtr(Offset);

            x = AddText(view, x, y, view.Settings.OffsetColor, HotSpot.NoneId, "->") + view.Font.Width;
            x = AddText(view, x, y, view.Settings.ValueColor, 0, "0x" + ptr.ToString(Constants.AddressHexFormat)) + view.Font.Width;

            x = AddComment(view, x, y);

            DrawInvalidMemoryIndicatorIcon(view, y);
            AddContextDropDownIcon(view, y);
            AddDeleteIcon(view, y);

            y += view.Font.Height;

            var size = new Size(x - origX, y - origY);

            if (LevelsOpen[view.Level] && InnerNode != null)
            {
                memory.Size = InnerNode.MemorySize;
                memory.UpdateFrom(view.Process, ptr);

                var v = view.Clone();
                v.Address = ptr;
                v.Memory  = memory;

                var innerSize = InnerNode.Draw(v, tx, y);

                size.Width   = Math.Max(size.Width, innerSize.Width + tx - origX);
                size.Height += innerSize.Height;
            }

            return(size);
        }
        public override Size Draw(DrawContext context, int x, int y)
        {
            if (IsHidden && !IsWrapped)
            {
                return(DrawHidden(context, x, y));
            }

            var origX = x;
            var origY = y;

            AddSelection(context, x, y, context.Font.Height);

            x = AddOpenCloseIcon(context, x, y);
            x = AddIcon(context, x, y, context.IconProvider.Pointer, -1, HotSpotType.None);

            var tx = x;

            x = AddAddressOffset(context, x, y);

            x = AddText(context, x, y, context.Settings.TypeColor, HotSpot.NoneId, "WeakPtr") + context.Font.Width;
            x = AddText(context, x, y, context.Settings.NameColor, HotSpot.NameId, Name) + context.Font.Width;
            x = AddText(context, x, y, context.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>");
            x = AddIcon(context, x, y, context.IconProvider.Change, 4, HotSpotType.ChangeClassType);

            x += context.Font.Width;

            AddComment(context, x, y);

            DrawInvalidMemoryIndicatorIcon(context, y);
            AddContextDropDownIcon(context, y);
            AddDeleteIcon(context, y);

            y += context.Font.Height;

            var size = new Size(x - origX, y - origY);

            if (LevelsOpen[context.Level])
            {
                var ptr = context.Memory.ReadIntPtr(Offset);
                if (!ptr.IsNull())
                {
                    ptr = context.Process.ReadRemoteIntPtr(ptr);
                    if (!ptr.IsNull())
                    {
                        ptr -= IntPtr.Size;
                    }
                }

                memory.Size = InnerNode.MemorySize;
                memory.UpdateFrom(context.Process, ptr);

                var v = context.Clone();
                v.Address = ptr;
                v.Memory  = memory;

                var innerSize = InnerNode.Draw(v, tx, y);

                size.Width   = Math.Max(size.Width, innerSize.Width + tx - origX);
                size.Height += innerSize.Height;
            }

            return(size);
        }