GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — ReClass.NET/ReClass.NET/Nodes/VirtualMethodTableNode.cs at master · ReClassNET/ReClass.NET Expand file tree/ Copy pathVirtualMethodTableNode.csMore file actions 117 lines (91 loc) · 2.66 KB / Copy pathVirtualMethodTableNode.csFile metadata and controls117 lines (91 loc) · 2.66 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 using System; using System.Drawing; using System.Linq; using ReClassNET.Controls; using ReClassNET.Memory; using ReClassNET.UI; namespace ReClassNET.Nodes { public class VirtualMethodTableNode : BaseContainerNode { private readonly MemoryBuffer memory = new MemoryBuffer(); public override int MemorySize => IntPtr.Size; protected override bool ShouldCompensateSizeChanges => false; public override void GetUserInterfaceInfo(out string name, out Image icon) { name = "VTable Pointer"; icon = Properties.Resources.B16x16_Button_VTable; } public override bool CanHandleChildNode(BaseNode node) { return node is VirtualMethodNode; } public override void Initialize() { for (var i = 0; i < 10; ++i) { AddNode(CreateDefaultNodeForSize(IntPtr.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.VirtualTable, HotSpot.NoneId, HotSpotType.None); var tx = x; x = AddAddressOffset(context, x, y); x = AddText(context, x, y, context.Settings.VTableColor, HotSpot.NoneId, $"VTable[{Nodes.Count}]") + context.Font.Width; if (!IsWrapped) { x = AddText(context, x, y, context.Settings.NameColor, HotSpot.NameId, Name) + 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 ptr = context.Memory.ReadIntPtr(Offset); memory.Size = Nodes.Count * IntPtr.Size; memory.UpdateFrom(context.Process, ptr); var innerContext = context.Clone(); innerContext.Address = ptr; innerContext.Memory = memory; foreach (var node in Nodes) { var innerSize = node.Draw(innerContext, tx, y); size.Width = Math.Max(size.Width, innerSize.Width + tx - origX); size.Height += innerSize.Height; y += innerSize.Height; } } return size; } public override int CalculateDrawnHeight(DrawContext context) { if (IsHidden && !IsWrapped) { return HiddenHeight; } var height = context.Font.Height; if (LevelsOpen[context.Level]) { height += Nodes.Sum(n => n.CalculateDrawnHeight(context)); } return height; } protected override BaseNode CreateDefaultNodeForSize(int size) { // ignore the size parameter return new VirtualMethodNode(); } } } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |