private void CalculateEncoding() { var idP = _tablet.getProductId(); var encodingFlag = (encodingFlag)_protocolHelper.simulateEncodingFlag(idP); if ((encodingFlag & (encodingFlag.EncodingFlag_16bit | encodingFlag.EncodingFlag_24bit)) != 0) { if (_tablet.supportsWrite()) { _useColor = true; } } if ((encodingFlag & encodingFlag.EncodingFlag_24bit) != 0) { _encodingMode = _tablet.supportsWrite() ? encodingMode.EncodingMode_24bit_Bulk : encodingMode.EncodingMode_24bit; } else if ((encodingFlag & encodingFlag.EncodingFlag_16bit) != 0) { _encodingMode = _tablet.supportsWrite() ? encodingMode.EncodingMode_16bit_Bulk : encodingMode.EncodingMode_16bit; } else { _encodingMode = encodingMode.EncodingMode_1bit; } }
static void Main(string[] args) { Console.WriteLine("width : " + Console.WindowWidth.ToString() + "height : " + Console.WindowHeight.ToString()); while (Console.WindowWidth < 100 || Console.WindowHeight < 20) { Console.WriteLine("width : " + Console.WindowWidth.ToString() + "height : " + Console.WindowHeight.ToString()); Console.Write("increase the windows size then press enter.\nmin width : 100 , min height : 20"); Console.ReadLine(); } //menu(new string[] { "item 1","item 2","item 3","item 4" },"select an item then press enter") createArray(); string fileName = ""; if (args.Length != 0 && File.Exists(args[0])) { fileName = args[0]; } else { do { Console.Write("Enter file name : "); fileName = Console.ReadLine(); if (fileName.StartsWith("'") || fileName.StartsWith("\"")) { fileName = fileName.Substring(1); } if (fileName.EndsWith("'") || fileName.EndsWith("\"")) { fileName = fileName.Substring(0, fileName.Length - 1); } } while (!File.Exists(fileName)); } Console.Clear(); Console.Title = "H : help, file name : " + fileName; FileStream fs = new FileStream(fileName, FileMode.Open); if (fs.Length <= 999999999) { long k = 0; bool exit = false; while (!exit) { //Console.Write(fixSize(k.ToString(), 9)); fs.Position = k; Console.Clear(); for (int l = 0; l < Console.WindowHeight; l++) { Console.Write(fixSize((fs.Position + 1).ToString(), 9) + ":"); byte[] by = new byte[30]; int rl = fs.Length - 1 - fs.Position < 30 ? (int)(fs.Length - 1 - fs.Position) : 30; fs.Read(by, 0, rl); for (int i = 0; i < rl; i++) { Console.Write(fixSize(hex[by[i]], 3)); } if (Console.WindowWidth > 130) { Console.Write('|'); switch (encMode) { case encodingMode.utf8: Console.Write(replaceenter(UTF8Encoding.UTF8.GetString(by, 0, 30))); break; case encodingMode.utf16: Console.Write(replaceenter(UnicodeEncoding.Unicode.GetString(by, 0, 30))); break; case encodingMode.ascii: Console.Write(replaceenter(ASCIIEncoding.ASCII.GetString(by, 0, 30))); break; } } if (l < Console.WindowHeight - 1) { Console.WriteLine(); } } ConsoleKeyInfo ck = Console.ReadKey(true); if (ck.Key == ConsoleKey.DownArrow) { k += linesPerScroll * 30; if (k > fs.Length - 1) { k = fs.Length - 1; } } else if (ck.Key == ConsoleKey.UpArrow) { k -= linesPerScroll * 30; if (k < 0) { k = 0; } } else if (ck.Key == ConsoleKey.Home) { k = 0; } else if (ck.Key == ConsoleKey.End) { k = fs.Length - Console.WindowHeight * 30; if (k < 0) { k = 0; } } else if (ck.Key == ConsoleKey.PageUp) { k -= Console.WindowHeight * 30; if (k < 0) { k = 0; } } else if (ck.Key == ConsoleKey.PageDown) { k += Console.WindowHeight * 30; if (k > fs.Length - 1) { k = fs.Length - 1; } } else if (ck.Key == ConsoleKey.Tab) { switch (menu(new string[] { "back", "goto", "open another file", "lines per scroll", "Text Encoding Mode", "Exit" }, "select an item then press enter\n")) { case "back": break; case "goto": Console.Clear(); Console.Write("Enter byte number : "); long bn = 0; if (long.TryParse(Console.ReadLine(), out bn)) { bn -= 1; if (bn < fs.Length && bn > -1) { k = bn; } } break; case "open another file": string fname = ""; Console.Clear(); do { Console.Write("Enter file name : "); fname = Console.ReadLine(); } while (!File.Exists(fname)); fileName = fname; fs.Close(); fs = new FileStream(fileName, FileMode.Open); Console.Title = "press tab to open menu ,file name : " + fileName; k = 0; break; case "lines per scroll": Console.Clear(); Console.Write("Enter a number : "); int ln = 0; if (int.TryParse(Console.ReadLine(), out ln)) { linesPerScroll = ln; } break; case "Text Encoding Mode": string answer = menu(new string[] { "UTF-8", "ASCII", "UTF-16" }, "select an item then press enter\n"); if (answer == "UTF-8") { encMode = encodingMode.utf8; } else if (answer == "ASCII") { encMode = encodingMode.utf8; } else if (answer == "UTF-16") { encMode = encodingMode.utf16; } break; case "Exit": fs.Close(); System.Diagnostics.Process.GetCurrentProcess().Kill(); break; } } } } else { Console.WriteLine("file is very big"); Console.ReadLine(); fs.Close(); System.Diagnostics.Process.GetCurrentProcess().Kill(); } }