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)); }
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)); }
/// <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); }
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); }
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)); }
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)); }
/// <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); }
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); }