public static void readEnglishZTR() { String[] allfiles = System.IO.Directory.GetFiles(@"C:\LR\HRW", "*_us.ztr", System.IO.SearchOption.AllDirectories); foreach (var file in allfiles) { Stream fs = File.OpenRead(file); FFXIIITextEncoding encoding = FFXIIITextEncodingFactory.CreateEuro(); ZtrFileUnpacker unpacker = new ZtrFileUnpacker(fs, encoding); ZtrFileEntry[] entries = unpacker.Unpack(); String outputfile = file.Substring(0, file.Length - 4) + ".txt"; using (FileStream fs2 = File.OpenWrite(outputfile)) { StreamWriter sw = new StreamWriter(fs2); foreach (ZtrFileEntry entry in entries) { sw.WriteLine(""); if (entry.IsAnimatedText) { sw.WriteLine(entry.Key + " | " + entry.Value + " | Is Animated? " + entry.IsAnimatedText); } else { sw.WriteLine(entry.Key + " | " + entry.Value); } } sw.Flush(); sw.Close(); } } }
private static TextEncodingInfo FromXml(XmlElement codepageNode) { FFXIIICodePage codepage = FFXIIICodePageHelper.FromXml(codepageNode); FFXIIITextEncoding encoding = new FFXIIITextEncoding(codepage); return(new TextEncodingInfo(encoding)); }
public ZtrFileTextUnpacker(Stream input, ZtrFileEntry[] output, ZtrFileHeaderLineInfo[] offsets, FFXIIITextEncoding encoding) { _input = input; _output = output; _offsets = offsets; _encoding = encoding; }
public ZtrFilePacker(Stream output, FFXIIITextEncoding encoding, ZtrFileType?type) { _encoding = encoding; _output = output; _bw = new BinaryWriter(_output); _type = type; }
public TextEncodingInfo Provide() { ImgbArchiveAccessor accessor = CreateAccessor(); WpdArchiveListing listing; WpdEntry[] fontEntries; WflContent[] fontContent; TextureSection[] textureHeaders; string[] names; ReadXgrContent(accessor, out listing, out fontEntries, out fontContent, out textureHeaders, out names); DxTexture[] textures = ReadTextures(accessor, textureHeaders); try { char[] chars = new char[256 + WflContent.AdditionalTableCount]; ConcurrentDictionary <char, short> codes = new ConcurrentDictionary <char, short>(); if (_oldEncoding == null) { _oldEncoding = InteractionService.TextEncoding.Provide(); } UiEncodingWindowSource[] sources = PrepareWindowSources(fontContent, textures, names, chars, codes); UiEncodingWindow wnd = new UiEncodingWindow(); foreach (UiEncodingWindowSource source in sources) { wnd.Add(source); } if (wnd.ShowDialog() == true) { FFXIIICodePage codepage = new FFXIIICodePage(chars, new Dictionary <char, short>(codes)); FFXIIITextEncoding encoding = new FFXIIITextEncoding(codepage); TextEncodingInfo result = new TextEncodingInfo(encoding); result.Save(); Inject(listing, fontEntries, fontContent); return(result); } } finally { textures.SafeDispose(); } throw new OperationCanceledException(); }
public void Show(ArchiveListing listing, ArchiveEntry entry) { _listing = listing; _entry = entry; if (listing == null || entry == null) { _textBox.Text = null; return; } FFXIIITextEncoding encoding = InteractionService.TextEncoding.Provide().Encoding; ZtrFileEntry[] entries; using (Stream data = listing.Accessor.ExtractBinary(entry)) { ZtrFileUnpacker unpacker = new ZtrFileUnpacker(data, encoding); entries = unpacker.Unpack(); } if (entries.IsNullOrEmpty()) { return; } using (MemoryStream ms = new MemoryStream(4096)) { ZtrTextWriter writer = new ZtrTextWriter(ms, StringsZtrFormatter.Instance); writer.Write(entry.Name, entries); ms.Position = 0; using (StreamReader sr = new StreamReader(ms, System.Text.Encoding.UTF8, false)) _textBox.Text = sr.ReadToEnd(); } Visibility = Visibility.Visible; }
public TextEncodingInfo(FFXIIITextEncoding encoding) { Encoding = Exceptions.CheckArgumentNull(encoding, "encoding"); }
public static void writetoZTR() { String[] allfiles = System.IO.Directory.GetFiles(@"C:\LR\ysn\", "*.txt", System.IO.SearchOption.AllDirectories); foreach (var file in allfiles) { int counter = 0; string line; List <ZtrFileEntry> entries = new List <ZtrFileEntry>(); System.IO.StreamReader filestream = new System.IO.StreamReader(file); while ((line = filestream.ReadLine()) != null) { string[] splitstring = line.Split(new[] { " | " }, StringSplitOptions.None); ZtrFileEntry lineentry = new ZtrFileEntry(); lineentry.IsAnimatedText = false; lineentry.Key = splitstring[0]; if (splitstring[1].Contains("#")) { lineentry.Value = ""; } else { if (splitstring[1].Contains("%")) { string[] deconstructedstring = splitstring[1].Split(new[] { "%" }, StringSplitOptions.None); //byte[] charsepbytes = new byte[] { 0, 0, 1, 0 }; //string characterseparator = Convert(charsepbytes); char charzero = '*'; char charone = '&'; string characterseparator = ""; StringBuilder builder = new StringBuilder(characterseparator); builder.Append(charzero); builder.Append(charone); System.Diagnostics.Debug.WriteLine(builder.ToString()); lineentry.Value = deconstructedstring[0] + builder.ToString() + deconstructedstring[1]; } else { lineentry.Value = splitstring[1]; } } entries.Add(lineentry); System.Diagnostics.Debug.WriteLine(splitstring[1]); } ZtrFileEntry[] ztrarray = entries.ToArray(); FFXIIITextEncoding encoding = FFXIIITextEncodingFactory.CreateEuro(); String outputfile = @"C:\LR\ysn\" + Path.GetFileName(file) + ".ztr"; using (FileStream fs2 = File.OpenWrite(outputfile)) { ZtrFilePacker packer = new ZtrFilePacker(fs2, encoding, ZtrFileType.BigEndianCompressedDictionary); packer.Pack(ztrarray); StreamWriter sw = new StreamWriter(fs2); sw.Flush(); sw.Close(); } } }
public ZtrFileUnpacker(Stream input, FFXIIITextEncoding encoding) { _encoding = encoding; _input = input; _br = new BinaryReader(_input); }
public ZtrFileTextPacker(Stream output, ZtrFileEntry[] input, FFXIIITextEncoding encoding) { _output = output; _input = input; _encoding = encoding; }