diff --git a/GTA V Script Decompiler/Function.cs b/GTA V Script Decompiler/Function.cs index a85ac6a..86f2a6f 100644 --- a/GTA V Script Decompiler/Function.cs +++ b/GTA V Script Decompiler/Function.cs @@ -1093,7 +1093,7 @@ public void decodeinstruction() case Instruction.PushString: tempstring = Stack.PopLit(); - if (!Utils.intparse(tempstring, out tempint)) + if (!Utils.IntParse(tempstring, out tempint)) Stack.Push("StringTable(" + tempstring + ")", Stack.DataType.StringPtr); else if (!this.Scriptfile.StringTable.ContainsKey(tempint)) Stack.Push("StringTable(" + tempstring + ")", Stack.DataType.StringPtr); @@ -1253,7 +1253,7 @@ public void returncheck(string temp) return; } int tempint; - if (Utils.intparse(temp, out tempint)) + if (Utils.IntParse(temp, out tempint)) { ReturnType = Types.gettype(Stack.DataType.Int); return; @@ -1383,7 +1383,7 @@ public void decodeinsructionsforvarinfo() if (Stack.TopType == Stack.DataType.Int) { tempstring = Stack.PopLit(); - if (Utils.intparse(tempstring, out tempint)) + if (Utils.IntParse(tempstring, out tempint)) { Stack.PeekVar(0).Value = tempint; } @@ -1400,7 +1400,7 @@ public void decodeinsructionsforvarinfo() if (Stack.TopType == Stack.DataType.Int) { tempstring = Stack.PopLit(); - if (Utils.intparse(tempstring, out tempint)) + if (Utils.IntParse(tempstring, out tempint)) { Stack.PeekVar(0).Value = tempint; } @@ -1427,7 +1427,7 @@ public void decodeinsructionsforvarinfo() case Instruction.pArray1: case Instruction.pArray2: - if (!Utils.intparse(Stack.PeekItem(1), out tempint)) + if (!Utils.IntParse(Stack.PeekItem(1), out tempint)) { tempint = -1; } @@ -1436,14 +1436,14 @@ public void decodeinsructionsforvarinfo() Stack.Op_ArrayGetP(ins.GetOperandsAsUInt); break; case Instruction.ArrayGet1: case Instruction.ArrayGet2: - if (!Utils.intparse(Stack.PeekItem(1), out tempint)) + if (!Utils.IntParse(Stack.PeekItem(1), out tempint)) { tempint = -1; } CheckArray(ins.GetOperandsAsUInt, tempint); Stack.Op_ArrayGet(ins.GetOperandsAsUInt); break; case Instruction.ArraySet1: case Instruction.ArraySet2: - if (!Utils.intparse(Stack.PeekItem(1), out tempint)) + if (!Utils.IntParse(Stack.PeekItem(1), out tempint)) { tempint = -1; } @@ -1482,7 +1482,7 @@ public void decodeinsructionsforvarinfo() { tempstring = Stack.PopLit(); if (ins.GetOperandsAsUInt > Pcount) - if (Utils.intparse(tempstring, out tempint)) + if (Utils.IntParse(tempstring, out tempint)) { GetFrameVar(ins.GetOperandsAsUInt).Value = tempint; } diff --git a/GTA V Script Decompiler/GTA V Script Decompiler.csproj b/GTA V Script Decompiler/GTA V Script Decompiler.csproj index 0c15660..b2fadf3 100644 --- a/GTA V Script Decompiler/GTA V Script Decompiler.csproj +++ b/GTA V Script Decompiler/GTA V Script Decompiler.csproj @@ -78,8 +78,9 @@ Off - - ..\FastColoredTextBox.dll + + ..\packages\FCTB.2.16.11.0\lib\FastColoredTextBox.dll + True @@ -132,6 +133,7 @@ True + SettingsSingleFileGenerator Settings.Designer.cs diff --git a/GTA V Script Decompiler/MainForm.cs b/GTA V Script Decompiler/MainForm.cs index 21620ba..5988a44 100644 --- a/GTA V Script Decompiler/MainForm.cs +++ b/GTA V Script Decompiler/MainForm.cs @@ -921,13 +921,13 @@ private void findHashFromStringsToolStripMenuItem_Click(object sender, EventArgs updatestatus($"No Strings Found, Time taken: {DateTime.Now - Start}"); else { - updatestatus($"Founs {FoundStrings.Count} strings, Time taken: {DateTime.Now - Start}"); + updatestatus($"Found {FoundStrings.Count} strings, Time taken: {DateTime.Now - Start}"); FoundStrings.Sort((x, y) => x.Item1.CompareTo(y.Item1)); using (StreamWriter oFile = File.CreateText(Path.Combine(fsd.SelectedPath, "STRINGS.txt"))) { foreach (Tuple Item in FoundStrings) { - oFile.WriteLine($"0x{Utils.formathexhash(Item.Item1)} : \"{Item.Item2}\""); + oFile.WriteLine($"{Utils.FormatHexHash(Item.Item1)} : \"{Item.Item2}\""); } } } diff --git a/GTA V Script Decompiler/NativeFiles.cs b/GTA V Script Decompiler/NativeFiles.cs index 8e0c932..4fb353c 100644 --- a/GTA V Script Decompiler/NativeFiles.cs +++ b/GTA V Script Decompiler/NativeFiles.cs @@ -93,6 +93,10 @@ public x64NativeFile(Stream Nativefile) continue; string val = data[0]; string nat = (Program.Show_Nat_Namespace ? (data[1] + "::") : "") + data[2]; + + // force uppercase + nat = nat.ToUpper(); + ulong value; if (ulong.TryParse(val, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out value)) { diff --git a/GTA V Script Decompiler/ScriptHeaders.cs b/GTA V Script Decompiler/ScriptHeaders.cs index 31bf0ba..d545c24 100644 --- a/GTA V Script Decompiler/ScriptHeaders.cs +++ b/GTA V Script Decompiler/ScriptHeaders.cs @@ -94,7 +94,7 @@ static ScriptHeader GeneratePcHeader(Stream scriptStream) ScriptHeader header = new ScriptHeader(); IO.Reader reader = new IO.Reader(scriptStream, false); scriptStream.Seek(0, SeekOrigin.Begin); - header.RSC7Offset = (reader.ReadUInt32() == 0x52534337) ? 0x10 : 0x0; + header.RSC7Offset = (reader.SReadUInt32() == 0x52534337) ? 0x10 : 0x0; scriptStream.Seek(header.RSC7Offset, SeekOrigin.Begin); header.Magic = reader.ReadInt32(); //0x0 reader.Advance(); diff --git a/GTA V Script Decompiler/Stack.cs b/GTA V Script Decompiler/Stack.cs index a9bc2d3..d24e5a1 100644 --- a/GTA V Script Decompiler/Stack.cs +++ b/GTA V Script Decompiler/Stack.cs @@ -63,7 +63,7 @@ public void Push(params int[] values) } public void PushHexInt(uint value) { - _stack.Add(new StackValue(StackValue.Type.Literal, Utils.formathexhash(value), DataType.Int)); + _stack.Add(new StackValue(StackValue.Type.Literal, Utils.FormatHexHash(value), DataType.Int)); } public void PushVar(string value, Vars_Info.Var Variable) { @@ -204,6 +204,13 @@ public void Dup() else Push(top); } + public string PopString() + { + StackValue val = Pop(); + if ((val.ItemType == StackValue.Type.Literal) || (val.ItemType == StackValue.Type.Pointer)) + return val.Value; + throw new Exception("Not a string item received"); + } public string PopLit() { StackValue val = Pop(); @@ -815,7 +822,7 @@ public void Op_And() throw new Exception("Not a literal item recieved"); if (s1.Datatype == DataType.Bool || s2.Datatype == DataType.Bool) PushCond("(" + s2.Value + " && " + s1.Value + ")"); - else if (Utils.intparse(s1.Value, out temp) || Utils.intparse(s2.Value, out temp)) + else if (Utils.IntParse(s1.Value, out temp) || Utils.IntParse(s2.Value, out temp)) Push(s2.Value + " & " + s1.Value, DataType.Int); else Push("(" + s2.Value + " && " + s1.Value + ")"); @@ -829,7 +836,7 @@ public void Op_Or() throw new Exception("Not a literal item recieved"); if (s1.Datatype == DataType.Bool || s2.Datatype == DataType.Bool) PushCond("(" + s2.Value + " || " + s1.Value + ")"); - else if (Utils.intparse(s1.Value, out temp) || Utils.intparse(s2.Value, out temp)) + else if (Utils.IntParse(s1.Value, out temp) || Utils.IntParse(s2.Value, out temp)) Push(s2.Value + " | " + s1.Value, DataType.Int); else Push("(" + s2.Value + " || " + s1.Value + ")"); @@ -888,7 +895,7 @@ public void Op_GetImmP() { string immediate = PopLit(); int temp; - if (Utils.intparse(immediate, out temp)) + if (Utils.IntParse(immediate, out temp)) { if (Peek().ItemType == StackValue.Type.Pointer) Push(new StackValue(StackValue.Type.Pointer, PopPointerRef() + ".f_" + (Program.Hex_Index ? temp.ToString("X") : temp.ToString()))); @@ -965,7 +972,7 @@ public void Op_ToStack() pointer = PopPointerRef(); count = PopLit(); - if (!Utils.intparse(count, out amount)) + if (!Utils.IntParse(count, out amount)) throw new Exception("Expecting the amount to push"); PushString(pointer, amount); } @@ -974,7 +981,7 @@ public void Op_ToStack() pointer = PopPointerRef(); count = PopLit(); - if (!Utils.intparse(count, out amount)) + if (!Utils.IntParse(count, out amount)) throw new Exception("Expecting the amount to push"); PushStruct(pointer, amount); } @@ -1098,7 +1105,7 @@ public string Op_FromStack() pointer = PopPointerRef(); count = PopLit(); int amount; - if (!Utils.intparse(count, out amount)) + if (!Utils.IntParse(count, out amount)) throw new Exception("Expecting the amount to push"); string res = pointer + " = {"; foreach (StackValue val in PopList(amount)) @@ -1147,21 +1154,33 @@ public void Op_Hash() } public string op_strcopy(int size) { + return $"{PopString()} /*{size}*/ = {PopString()};"; + + /* string pointer = PopPointer(); string pointer2 = PopPointer(); return "StringCopy(" + pointer + ", " + pointer2 + ", " + size.ToString() + ");"; + */ } public string op_stradd(int size) { + return $"{PopString()} /*{size}*/ += {PopString()};"; + + /* string pointer = PopPointer(); string pointer2 = PopPointer(); return "StringConCat(" + pointer + ", " + pointer2 + ", " + size.ToString() + ");"; + */ } public string op_straddi(int size) { + return op_stradd(size); + + /* string pointer = PopPointer(); string inttoadd = PopLit(); return "StringIntConCat(" + pointer + ", " + inttoadd + ", " + size.ToString() + ");"; + */ } public string op_itos(int size) { @@ -1175,7 +1194,7 @@ public string op_sncopy() string value = PopLit(); string count = PopLit(); int amount; - if (!Utils.intparse(count, out amount)) + if (!Utils.IntParse(count, out amount)) throw new Exception("Int Stack value expected"); return "MemCopy(" + pointer + ", " + "{" + PopListForCall(amount) + "}, " + value + ");"; } diff --git a/GTA V Script Decompiler/Utils.cs b/GTA V Script Decompiler/Utils.cs index df9a90e..0fe77bc 100644 --- a/GTA V Script Decompiler/Utils.cs +++ b/GTA V Script Decompiler/Utils.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -23,63 +24,97 @@ public static uint jenkins_one_at_a_time_hash(string str) hash += (hash << 15); return hash; } - public static string formathexhash(uint hash) + public static string FormatHexHash(uint hash) { - string hashres = hash.ToString("X"); - while (hashres.Length < 8) - hashres = "0" + hashres; - return hashres; + return $"0x{hash:X8}"; } public static float SwapEndian(float num) { + var b = BitConverter.GetBytes(num); + + return (float)((b[3] << 0) | (b[2] << 8) | (b[1] << 16) | (b[0] << 24)); + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToSingle(data, 0); - } + */ + } public static uint SwapEndian(uint num) { + var b = BitConverter.GetBytes(num); + + return (uint)((b[3] << 0) | (b[2] << 8) | (b[1] << 16) | (b[0] << 24)); + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToUInt32(data, 0); - } + */ + } public static int SwapEndian(int num) { + var b = BitConverter.GetBytes(num); + + return (int)((b[3] << 0) | (b[2] << 8) | (b[1] << 16) | (b[0] << 24)); + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToInt32(data, 0); - } + */ + } public static ulong SwapEndian(ulong num) { + var b = BitConverter.GetBytes(num); + + return (ulong)((b[7] << 0) | (b[6] << 8) | (b[5] << 16) | (b[4] << 24) | + (b[3] << 32) | (b[2] << 40) | (b[1] << 48) | (b[0] << 56)); + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToUInt64(data, 0); - } + */ + } public static long SwapEndian(long num) { + var b = BitConverter.GetBytes(num); + + return (long)((b[7] << 0) | (b[6] << 8) | (b[5] << 16) | (b[4] << 24) | + (b[3] << 32) | (b[2] << 40) | (b[1] << 48) | (b[0] << 56)); + + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToInt64(data, 0); - } + */ + } public static ushort SwapEndian(ushort num) { + var b = BitConverter.GetBytes(num); + + return (ushort)((b[1] << 0) | (b[0] << 8)); + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToUInt16(data, 0); - } + */ + } public static short SwapEndian(short num) { + var b = BitConverter.GetBytes(num); + + return (short)((b[1] << 0) | (b[0] << 8)); + /* byte[] data = BitConverter.GetBytes(num); Array.Reverse(data); return BitConverter.ToInt16(data, 0); - } - public static bool intparse(string temp, out int value) + */ + } + public static bool IntParse(string temp, out int value) { - if (Program.getIntType == Program.IntType._hex) - { - return int.TryParse(temp.Substring(2), System.Globalization.NumberStyles.HexNumber, new System.Globalization.CultureInfo("en-gb"), out value); - } - else - return int.TryParse(temp, out value); + var isHex = (Program.getIntType == Program.IntType._hex); + var numberStyle = (isHex) ? NumberStyles.HexNumber : NumberStyles.Integer; + var str = (isHex) ? temp.Substring(2) : temp; + + return int.TryParse(str, numberStyle, new CultureInfo("en-US"), out value); } } diff --git a/GTA V Script Decompiler/packages.config b/GTA V Script Decompiler/packages.config new file mode 100644 index 0000000..5311823 --- /dev/null +++ b/GTA V Script Decompiler/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/packages/FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg b/packages/FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg new file mode 100644 index 0000000..00c68d2 Binary files /dev/null and b/packages/FCTB.2.16.11.0/FCTB.2.16.11.0.nupkg differ diff --git a/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.xml b/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.xml new file mode 100644 index 0000000..85ff5c8 --- /dev/null +++ b/packages/FCTB.2.16.11.0/lib/FastColoredTextBox.xml @@ -0,0 +1,3188 @@ + + + + FastColoredTextBox + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Highlights syntax for given language + + + + + Highlights syntax for given XML description file + + + + + Highlights C# code + + + + + + Highlights VB code + + + + + + Highlights HTML code + + + + + + Highlights XML code + + + + + + Highlights SQL code + + + + + + Highlights PHP code + + + + + + Highlights JavaScript code + + + + + + Highlights Lua code + + + + + + String style + + + + + Comment style + + + + + Number style + + + + + C# attribute style + + + + + Class name style + + + + + Keyword style + + + + + Style of tags in comments of C# + + + + + HTML attribute value style + + + + + HTML tag brackets style + + + + + HTML tag name style + + + + + HTML Entity style + + + + + XML attribute style + + + + + XML attribute value style + + + + + XML tag brackets style + + + + + XML tag name style + + + + + XML Entity style + + + + + XML CData style + + + + + Variable style + + + + + Specific PHP keyword style + + + + + Specific PHP keyword style + + + + + SQL Statements style + + + + + SQL Functions style + + + + + SQL Types style + + + + + Language + + + + + Item of autocomplete menu + + + + + Returns text for inserting into Textbox + + + + + Compares fragment text with this item + + + + + Returns text for display into popup menu + + + + + This method is called after item inserted into text + + + + + Title for tooltip. + + Return null for disable tooltip for this item + + + + Tooltip text. + + For display tooltip text, ToolTipTitle must be not null + + + + Menu text. This text is displayed in the drop-down menu. + + + + + Fore color of text of item + + + + + Back color of item + + + + + Item do not appears + + + + + Item appears + + + + + Item appears and will selected + + + + + Autocomplete item for code snippets + + Snippet can contain special char ^ for caret position. + + + + Compares fragment text with this item + + + + + This autocomplete item appears after dot + + + + + This Item does not check correspondence to current text fragment. + SuggestItem is intended for dynamic menus. + + + + + Style of chars + + This is base class for all text and design renderers + + + + Constructor + + + + + Renders given range of text + + Graphics object + Position of the range in absolute control coordinates + Rendering range of text + + + + Occurs when user click on StyleVisualMarker joined to this style + + + + + Shows VisualMarker + Call this method in Draw method, when you need to show VisualMarker for your style + + + + + Returns CSS for export to HTML + + + + + + Returns RTF descriptor for export to RTF + + + + + + This style is exported to outer formats (HTML for example) + + + + + Occurs when user click on StyleVisualMarker joined to this style + + + + + Style for chars rendering + This renderer can draws chars, with defined fore and back colors + + + + + Renderer for folded block + + + + + Renderer for selected area + + + + + Marker style + Draws background color for text + + + + + Draws small rectangle for popup menu + + + + + This style draws a wavy line below a given text range. + + Thanks for Yallie + + + + This style is used to mark range of text as ReadOnly block + + You can inherite this style to add visual effects of readonly text + + + + Popup menu for autocomplete + + + + + Shows popup menu immediately + + If True - MinFragmentLength will be ignored + + + + Regex pattern for serach fragment around caret + + + + + Minimum fragment length for popup + + + + + User selects item + + + + + It fires after item inserting + + + + + Occurs when popup menu is opening + + + + + Allow TAB for select menu item + + + + + Interval of menu appear (ms) + + + + + Back color of selected item + + + + + Border color of hovered item + + + + + Minimal size of menu + + + + + Image list of menu + + + + + Tooltip duration (ms) + + + + + Tooltip + + + + + This class contains the source text (chars and styles). + It stores a text lines, the manager of commands, undo/redo stack, styles. + + + + + This class contains the source text (chars and styles). + It stores a text lines, the manager of commands, undo/redo stack, styles. + + + + + Styles + + + + + Text lines + + + + + Occurs when line was inserted/added + + + + + Occurs when line was removed + + + + + Occurs when text was changed + + + + + Occurs when recalc is needed + + + + + Occurs when recalc wordwrap is needed + + + + + Occurs before text changing + + + + + Occurs after CurrentTB was changed + + + + + Current focused FastColoredTextBox + + + + + Default text style + This style is using when no one other TextStyle is not defined in Char.style + + + + + Lines count + + + + + Occurs when need to display line in the textbox + + + + + Occurs when need to save line in the file + + + + + End Of Line characters used for saving + + + + + This text will be displayed in textbox + + + + + This property contains only changed text. + If text of line is not changed, this property contains null. + + + + + This text will be saved in the file + + + + + This class records, stores and executes the macros. + + + + + Executes recorded macro + + + + + + Adds the char to current macro + + + + + Adds keyboard key to current macro + + + + + Clears last recorded macro + + + + + Allows to user to record macros + + + + + Returns current recording state. Set to True/False to start/stop recording programmatically. + + + + + FCTB + + + + + Returns True if last macro is empty + + + + + Macros as string. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + These classes are required for correct data binding to Text property of FastColoredTextbox + + + + + Diapason of text chars + + + + + Constructor + + + + + Constructor + + + + + Constructor + + + + + Constructor. Creates range of the line + + + + + Returns intersection with other range, + empty range returned otherwise + + + + + + + Returns union with other range. + + + + + + + Select all chars of control + + + + + Returns required char's number before start of the Range + + + + + Returns required char's number after start of the Range + + + + + Clone range + + + + + + Move range right + + This method jump over folded blocks + + + + Move range left + + This method can to go inside folded blocks + + + + Move range left + + This method jump over folded blocks + + + + Move range left + + This method can to go inside folded blocks + + + + Set style for range + + + + + Set style for given regex pattern + + + + + Set style for given regex + + + + + Set style for given regex pattern + + + + + Set style for given regex pattern + + + + + Set style for given regex pattern + + + + + Appends style to chars of range + + + + + Sets folding markers + + Pattern for start folding line + Pattern for finish folding line + + + + Sets folding markers + + Pattern for start folding line + Pattern for finish folding line + + + + Sets folding markers + + Pattern for start and end folding line + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex pattern. + Search is separately in each line. + This method requires less memory than GetRanges(). + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex. + Search is separately in each line. + This method requires less memory than GetRanges(). + + Regex + Enumeration of ranges + + + + Finds ranges for given regex pattern. + Search is separately in each line (order of lines is reversed). + This method requires less memory than GetRanges(). + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex + + Enumeration of ranges + + + + Clear styles of range + + + + + Clear styles of range + + + + + Clear folding markers of all lines of range + + + + + Starts selection position updating + + + + + Ends selection position updating + + + + + Exchanges Start and End if End appears before Start + + + + + Exchanges Start and End + + + + + Expands range from first char of Start line to last char of End line + + + + + Get fragment of text around Start place. Returns maximal matched to pattern fragment. + + Allowed chars pattern for fragment + Range of found fragment + + + + Get fragment of text around Start place. Returns maximal matched to given Style. + + Allowed style for fragment + Range of found fragment + + + + Get fragment of text around Start place. Returns maximal mathed to pattern fragment. + + Allowed chars pattern for fragment + Range of found fragment + + + + Is char before range readonly + + + + + + Is char after range readonly + + + + + + Return true if no selected text + + + + + Column selection mode + + + + + Start line and char position + + + + + Finish line and char position + + + + + Text of range + + This property has not 'set' accessor because undo/redo stack works only with + FastColoredTextBox.Selection range. So, if you want to set text, you need to use FastColoredTextBox.Selection + and FastColoredTextBox.InsertText() mehtod. + + + + + Returns first char after Start place + + + + + Returns first char before Start place + + + + + Return minimum of end.X and start.X + + + + + Return maximum of end.X and start.X + + + + + Chars of range (exclude \n) + + + + + Range is readonly? + This property return True if any char of the range contains ReadOnlyStyle. + Set this property to True/False to mark chars of the range as Readonly/Writable. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Returns edited hotkey map + + + + + + Fast colored textbox + + + + + Constructor + + + + + Removes all hints + + + + + Add and shows the hint + + Linked range + Inner control + Scrolls textbox to the hint + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Add and shows the hint + + Linked range + Inner control + + + + Add and shows simple text hint + + Linked range + Text of simple hint + Scrolls textbox to the hint + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Add and shows simple text hint + + Linked range + Text of simple hint + + + + Occurs when user click on the hint + + + + + + Occurs when VisibleRange is changed + + + + + Invalidates the entire surface of the control and causes the control to be redrawn. + This method is thread safe and does not require Invoke. + + + + + Returns list of styles of given place + + + + + Call this method if the recalc of the position of lines is needed. + + + + + Call this method if the recalc of the position of lines is needed. + + + + + Call this method if the recalc of the position of lines is needed. + + + + + Navigates forward (by Line.LastVisit property) + + + + + Navigates backward (by Line.LastVisit property) + + + + + Navigates to defined line, without Line.LastVisit reseting + + + + + Add new style + + Layer index of this style + + + + Shows find dialog + + + + + Shows find dialog + + + + + Shows replace dialog + + + + + Shows replace dialog + + + + + Gets length of given line + + Line index + Length of line + + + + Get range of line + + Line index + + + + Copy selected text into Clipboard + + + + + Cut selected text into Clipboard + + + + + Paste text from clipboard into selected position + + + + + Select all chars of text + + + + + Move caret to end of text + + + + + Move caret to first position + + + + + Clear text, styles, history, caches + + + + + Clear buffer of styles + + + + + Clear style of all text + + + + + Clears undo and redo stacks + + + + + Insert text into current selected position + + + + + Insert text into current selected position + + + + + + Insert text into current selection position (with predefined style) + + + + + + Insert text into current selection position (with predefined style) + + + + + Append string to end of the Text + + + + + Append string to end of the Text + + + + + Returns index of the style in Styles + -1 otherwise + + + Index of the style in Styles + + + + Returns StyleIndex mask of given styles + + + StyleIndex mask of given styles + + + + Deletes selected chars + + + + + Deletes current line(s) + + + + + Calculates wordwrap cutoffs + + + + + Scroll control for display defined rectangle + + + + + + Updates scrollbar position after Value changed + + + + + Scroll control for display caret + + + + + Scroll control left + + + + + Scroll control for display selection area + + + + + Scroll control for display given range + + + + + Scroll control for display given range + + + + + Process control keys + + + + + Scrolls to nearest bookmark or to first bookmark + + Current bookmark line index + + + + Scrolls to nearest previous bookmark or to last bookmark + + Current bookmark line index + + + + Bookmarks line + + + + + Unbookmarks current line + + + + + Moves selected lines down + + + + + Moves selected lines up + + + + + Convert selected text to upper case + + + + + Convert selected text to lower case + + + + + Convert selected text to title case + + + + + Insert/remove comment prefix into selected lines + + + + + Insert/remove comment prefix into selected lines + + + + + Process "real" keys (no control) + + + + + Do AutoIndentChars + + + + + Finds given char after current caret position, moves the caret to found pos. + + + + + + Inserts autoindent's spaces in the line + + + + + Returns needed start space count for the line + + + + + Undo last operation + + + + + Redo + + + + + Draws text to given Graphics + + + Start place of drawing text + Size of drawing + + + + Draw control + + + + + Gets the value for the system control panel mouse wheel scroll settings. + The value returns the number of lines that shall be scolled if the user turns the mouse wheet one step. + + + This methods gets the "WheelScrollLines" value our from the registry key "HKEY_CURRENT_USER\Control Panel\Desktop". + If the value of this option is 0, the screen will not scroll when the mouse wheel is turned. + If the value of this option is -1 or is greater than the number of lines visible in the window, + the screen will scroll up or down by one page. + + + Number of lines to scrol l when the mouse wheel is turned + + + + + Gets nearest line and char position from coordinates + + Point + Line and char position + + + + Gets nearest absolute text position for given point + + Point + Position + + + + Fires TextChanging event + + + + + Fires TextChanged event + + + + + Fires TextChanged event + + + + + Fires TextChanged event + + + + + Call this method before multiple text changing + + + + + Call this method after multiple text changing + + + + + Fires TextChanged event + + + + + Clears folding state for range of text + + + + + Fires SelectionChanged event + + + + + Gets absolute text position from line and char position + + Line and char position + Point of char + + + + Gets line and char position from absolute text position + + + + + Gets absolute char position from char position + + + + + Gets point for given line and char position + + Line and char position + Coordiantes + + + + Get range of text + + Absolute start position + Absolute finish position + Range + + + + Get range of text + + Line and char position + Line and char position + Range + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Finds ranges for given regex pattern + + Regex pattern + Enumeration of ranges + + + + Get text of given line + + Line index + Text + + + + Exapnds folded block + + Start line + + + + Collapse folding blocks using FoldedBlocks dictionary. + + + + + Expand collapsed block + + + + + Expand collapsed block + + Any line inside collapsed block + + + + Collapses all folding blocks + + + + + Exapnds all folded blocks + + + + + + Collapses folding block + + Start folding line + + + + Start foilding marker for the line + + + + + End foilding marker for the line + + + + + Collapse text block + + + + + Insert TAB into front of seletcted lines. + + + + + Remove TAB from front of seletcted lines. + + + + + Remove TAB in front of the caret ot the selected line. + + + + + Insert autoindents into selected lines + + + + + Insert prefix into front of seletcted lines + + + + + Remove prefix from front of selected lines + This method ignores forward spaces of the line + + + + + Begins AutoUndo block. + All changes of text between BeginAutoUndo() and EndAutoUndo() will be canceled in one operation Undo. + + + + + Ends AutoUndo block. + All changes of text between BeginAutoUndo() and EndAutoUndo() will be canceled in one operation Undo. + + + + + Highlights brackets around caret + + + + + Returns range between brackets (or null if not found) + + + + + Selectes next fragment for given regex. + + + + + Prints range of text + + + + + Prints all text + + + + + Prints all text, without any dialog windows + + + + + Open text file + + + + + Open text file (with automatic encoding detector) + + + + + Open file binding mode + + + + + + + Close file binding mode + + + + + Save text to the file + + + + + + + Set VisibleState of line + + + + + Returns VisibleState of the line + + + + + Shows Goto dialog form + + + + + Occurs when undo/redo stack is changed + + + + + Search lines by regex pattern + + + + + Removes given lines + + + + + Activates the scrolling mode (middle click button). + + MouseEventArgs + + + + Deactivates the scrolling mode (middle click button). + + + + + Restore scrolls + + + + + AutoComplete brackets + + + + + Colors of some service visual markers + + + + + Contains UniqueId of start lines of folded blocks + + This dictionary remembers folding state of blocks. + It is needed to restore child folding after user collapsed/expanded top-level folding block. + + + + Strategy of search of brackets to highlighting + + + + + Automatically shifts secondary wordwrap lines on the shift amount of the first line + + + + + Indent of secondary wordwrap lines (in chars) + + + + + MacrosManager records, stores and executes the macroses + + + + + Allows drag and drop + + + + + Collection of Hints. + This is temporary buffer for currently displayed hints. + + You can asynchronously add, remove and clear hints. Appropriate hints will be shown or hidden from the screen. + + + + Delay (ms) of ToolTip + + + + + ToolTip component + + + + + Color of bookmarks + + + + + Bookmarks + + + + + Enables virtual spaces + + + + + Strategy of search of end of folding block + + + + + Indicates if tab characters are accepted as input + + + + + Indicates if return characters are accepted as input + + + + + Shows or hides the caret + + + + + Enables caret blinking + + + + + Color of border of text area + + + + + Type of border of text area + + + + + Background color for current line + + + + + Background color for highlighting of changed lines + + + + + Fore color (default style color) + + + + + Height of char in pixels (includes LineInterval) + + + + + Interval between lines (in pixels) + + + + + Width of char in pixels + + + + + Spaces count for tab + + + + + Text was changed + + + + + Text version + + This counter is incremented each time changes the text + + + + Read only + + + + + Shows line numbers. + + + + + Shows vertical lines between folding start line and folding end line. + + + + + Rectangle where located text + + + + + Color of line numbers. + + + + + Start value of first line number. + + + + + Background color of indent area + + + + + Background color of padding area + + + + + Color of disabled component + + + + + Color of caret + + + + + Wide caret + + + + + Color of service lines (folding lines, borders of blocks etc.) + + + + + Padings of text area + + + + + --Do not use this property-- + + + + + Color of folding area indicator + + + + + Enables folding indicator (left vertical line between folding bounds) + + + + + Left distance to text beginning + + + + + Left padding in pixels + + + + + This property draws vertical line after defined char position. + Set to 0 for disable drawing of vertical line. + + + + + Styles + + + + + Hotkeys. Do not use this property in your code, use HotkeysMapping property. + + + + + Hotkeys mapping + + + + + Default text style + This style is using when no one other TextStyle is not defined in Char.style + + + + + Style for rendering Selection area + + + + + Style for folded block rendering + + + + + Style for brackets highlighting + + + + + Style for alternative brackets highlighting + + + + + Opening bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Closing bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Alternative opening bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Alternative closing bracket for brackets highlighting. + Set to '\x0' for disable brackets highlighting. + + + + + Comment line prefix. + + + + + This property specifies which part of the text will be highlighted as you type (by built-in highlighter). + + When a user enters text, a component refreshes highlighting (because the text was changed). + This property specifies exactly which section of the text will be re-highlighted. + This can be useful to highlight multi-line comments, for example. + + + + Is keyboard in replace mode (wide caret) ? + + + + + Allows text rendering several styles same time. + + + + + Allows to record macros. + + + + + Allows AutoIndent. Inserts spaces before new line. + + + + + Does autoindenting in existing lines. It works only if AutoIndent is True. + + + + + Minimal delay(ms) for delayed events (except TextChangedDelayed). + + + + + Minimal delay(ms) for TextChangedDelayed event. + + + + + Language for highlighting by built-in highlighter. + + + + + Syntax Highlighter + + + + + XML file with description of syntax highlighting. + This property works only with Language == Language.Custom. + + + + + Position of left highlighted bracket. + + + + + Position of right highlighted bracket. + + + + + Position of left highlighted alternative bracket. + + + + + Position of right highlighted alternative bracket. + + + + + Start line index of current highlighted folding area. Return -1 if start of area is not found. + + + + + End line index of current highlighted folding area. Return -1 if end of area is not found. + + + + + TextSource + + + + + The source of the text. + Allows to get text from other FastColoredTextBox. + + + + + Returns current visible range of text + + + + + Current selection range + + + + + Background color. + It is used if BackBrush is null. + + + + + Background brush. + If Null then BackColor is used. + + + + + Multiline + + + + + WordWrap. + + + + + WordWrap mode. + + + + + If true then line breaks included into the selection will be selected too. + Then line breaks will be shown as selected blank character. + + + + + Do not change this property + + + + + Count of lines + + + + + Gets or sets char and styleId for given place + This property does not fire OnTextChanged event + + + + + Gets Line + + + + + Text of control + + + + + Text lines + + + + + Gets colored text as HTML + + For more flexibility you can use ExportToHTML class also + + + + Gets colored text as RTF + + For more flexibility you can use ExportToRTF class also + + + + Text of current selection + + + + + Start position of selection + + + + + Length of selected text + + + + + Font + + Use only monospaced font + + + + Font + + Use only monospaced font + + + + Indicates that IME is allowed (for CJK language entering) + + + + + Is undo enabled? + + + + + Is redo enabled? + + + + + Range of all text + + + + + Color of selected area + + + + + Reserved space for line number characters. + If smaller than needed (e. g. line count >= 10 and this value set to 1) this value will have no impact. + If you want to reserve space, e. g. for line numbers >= 10 or >= 100 than you can set this value to 2 or 3 or higher. + + + + + Occurs when mouse is moving over text and tooltip is needed + + + + + HintClick event. + It occurs if user click on the hint. + + + + + TextChanged event. + It occurs after insert, delete, clear, undo and redo operations. + + + + + Fake event for correct data binding + + + + + Occurs when user paste text from clipboard + + + + + TextChanging event. + It occurs before insert, delete, clear, undo and redo operations. + + + + + SelectionChanged event. + It occurs after changing of selection. + + + + + VisibleRangeChanged event. + It occurs after changing of visible range. + + + + + TextChangedDelayed event. + It occurs after insert, delete, clear, undo and redo operations. + This event occurs with a delay relative to TextChanged, and fires only once. + + + + + SelectionChangedDelayed event. + It occurs after changing of selection. + This event occurs with a delay relative to SelectionChanged, and fires only once. + + + + + VisibleRangeChangedDelayed event. + It occurs after changing of visible range. + This event occurs with a delay relative to VisibleRangeChanged, and fires only once. + + + + + It occurs when user click on VisualMarker. + + + + + It occurs when visible char is enetering (alphabetic, digit, punctuation, DEL, BACKSPACE) + + Set Handle to True for cancel key + + + + It occurs when visible char is enetered (alphabetic, digit, punctuation, DEL, BACKSPACE) + + + + + It occurs when calculates AutoIndent for new line + + + + + It occurs when line background is painting + + + + + Occurs when line was inserted/added + + + + + Occurs when line was removed + + + + + Occurs when current highlighted folding area is changed. + Current folding area see in StartFoldingLine and EndFoldingLine. + + + + + + Occurs when undo/redo stack is changed + + + + + + Occurs when component was zoomed + + + + + Occurs when user pressed key, that specified as CustomAction + + + + + Occurs when scroolbars are updated + + + + + Occurs when custom wordwrap is needed + + + + + Enables AutoIndentChars mode + + + + + Regex patterns for AutoIndentChars (one regex per line) + + + + + Zooming (in percentages) + + + + + Inserted line index + + + + + Count of inserted lines + + + + + Removed line index + + + + + Count of removed lines + + + + + UniqueIds of removed lines + + + + + TextChanged event argument + + + + + Constructor + + + + + This range contains changed area of text + + + + + Set to true if you want to cancel text inserting + + + + + Word wrapping by control width + + + + + Word wrapping by preferred line width (PreferredLineWidth) + + + + + Char wrapping by control width + + + + + Char wrapping by preferred line width (PreferredLineWidth) + + + + + Custom wrap (by event WordWrapNeeded) + + + + + Title of page. If you want to print Title on the page, insert code &w in Footer or Header. + + + + + Footer of page. + Here you can use special codes: &w (Window title), &D, &d (Date), &t(), &4 (Time), &p (Current page number), &P (Total number of pages), && (A single ampersand), &b (Right justify text, Center text. If &b occurs once, then anything after the &b is right justified. If &b occurs twice, then anything between the two &b is centered, and anything after the second &b is right justified). + More detailed see here + + + + + Header of page + Here you can use special codes: &w (Window title), &D, &d (Date), &t(), &4 (Time), &p (Current page number), &P (Total number of pages), && (A single ampersand), &b (Right justify text, Center text. If &b occurs once, then anything after the &b is right justified. If &b occurs twice, then anything between the two &b is centered, and anything after the second &b is right justified). + More detailed see here + + + + + Prints line numbers + + + + + Additional spaces count for this line, relative to previous line + + + + + Additional spaces count for next line, relative to previous line + + + + + Absolute indentation of current line. You can change this property if you want to set absolute indentation. + + + + + Type of highlighting + + + + + Highlight only changed range of text. Highest performance. + + + + + Highlight visible range of text. Middle performance. + + + + + Highlight all (visible and invisible) text. Lowest performance. + + + + + Strategy of search of end of folding block + + + + + Strategy of search of brackets to highlighting + + + + + ToolTipNeeded event args + + + + + HintClick event args + + + + + CustomAction event args + + + + + Style index mask (16 styles) + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Shows document map of FCTB + + + + + Scale + + + + + Scrollbar visibility + + + + + Base class for bookmark collection + + + + + Collection of bookmarks + + + + + Removes bookmark by line index + + + + + Returns Bookmark by index. + + + + + Bookmark of FastColoredTextbox + + + + + Scroll textbox to the bookmark + + + + + Name of bookmark + + + + + Line index + + + + + Color of bookmark sign + + + + + Line index and char index + + + + + Line of text + + + + + Clears style of chars, delete folding markers + + + + + Clears folding markers + + + + + Text of line was changed + + + + + Time of last visit of caret in this line + + This property can be used for forward/backward navigating + + + + Background brush. + + + + + Unique ID + + + + + Count of needed start spaces for AutoIndent + + + + + Text of the line + + + + + Count of start spaces + + + + + Chars count + + + + + Visible state + + + + + Gets index of wordwrap string for given char position + + + + + Positions for wordwrap cutoffs + + + + + Count of wordwrap string count for this line + + + + + Limited stack + + + + + Constructor + + Maximum length of stack + + + + Pop item + + + + + Peek item + + + + + Push item + + + + + Clear stack + + + + + Max stack length + + + + + Current length of stack + + + + + Char and style + + + + + Unicode character + + + + + Style bit mask + + Bit 1 in position n means that this char will rendering by FastColoredTextBox.Styles[n] + + + + Insert single char + + This operation includes also insertion of new line and removing char by backspace + + + + Constructor + + Underlaying textbox + Inserting char + + + + Undo operation + + + + + Execute operation + + + + + Merge lines i and i+1 + + + + + Insert text + + + + + Constructor + + Underlaying textbox + Text for inserting + + + + Undo operation + + + + + Execute operation + + + + + Insert text into given ranges + + + + + Constructor + + Underlaying textbox + List of ranges for replace + Text for inserting + + + + Undo operation + + + + + Execute operation + + + + + Clear selected text + + + + + Construstor + + Underlaying textbox + + + + Undo operation + + + + + Execute operation + + + + + Replaces text + + + + + Constructor + + Underlaying textsource + List of ranges for replace + + + + Undo operation + + + + + Execute operation + + + + + Removes lines + + + + + Constructor + + Underlaying textbox + List of ranges for replace + Text for inserting + + + + Undo operation + + + + + Execute operation + + + + + Wrapper for multirange commands + + + + + Remembers current selection and restore it after Undo + + + + + Exports colored text as RTF + + At this time only TextStyle renderer is supported. Other styles is not exported. + + + + Includes line numbers + + + + + Use original font + + + + + Dictionary of shortcuts for FCTB + + + + + Actions for shortcuts + + + + + Collection of Hints. + This is temporary buffer for currently displayed hints. + + + + + Clears all displayed hints + + + + + Add and shows the hint + + + + + + Is collection contains the hint? + + + + + Count of hints + + + + + Hint of FastColoredTextbox + + + + + Scroll textbox to the hint + + + + + Creates Hint + + Linked range + Text for simple hint + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Creates Hint + + Linked range + Text for simple hint + + + + Creates Hint + + Linked range + Inner control + Inlining. If True then hint will moves apart text + Docking. If True then hint will fill whole line + + + + Creates Hint + + Linked range + Inner control + + + + Text of simple hint + + + + + Linked range + + + + + Backcolor + + + + + Second backcolor + + + + + Border color + + + + + Fore color + + + + + Text alignment + + + + + Font + + + + + Occurs when user click on simple hint + + + + + Inner control + + + + + Docking (allows None and Fill only) + + + + + Width of hint (if Dock is None) + + + + + Height of hint + + + + + Host panel + + + + + Tag + + + + + Cursor + + + + + Inlining. If True then hint will moves apart text. + + + + + Exports colored text as HTML + + At this time only TextStyle renderer is supported. Other styles is not exported. + + + + Use nbsp; instead space + + + + + Use nbsp; instead space in beginning of line + + + + + Use original font + + + + + Use style tag instead style attribute + + + + + Use 'br' tag instead of '\n' + + + + + Includes line numbers + + + +