Beispiel #1
0
        private bool loadBinmapFile(string filename, bool apply = false)
        {
            // look for & load binmap file
            if (!File.Exists(filename))
            {
                return(false);
            }
            if (Path.GetExtension(filename) != ".binmap")
            {
                return(false);
            }

            using (BinaryReader reader = new BinaryReader(File.Open(filename, FileMode.Open)))
            {
                string signature = reader.ReadString();
                if (signature != "BINMAP")
                {
                    Debug.WriteLine("Binmap signature not found!");
                    return(false);
                }

                string version = reader.ReadString();
                BinmapDataFilename = reader.ReadString();

                if (apply)
                {
                    int numBytes = reader.ReadInt32();
                    if (numBytes != list.Bins.Count)
                    {
                        Debug.WriteLine("Byte count mismatch!");
                        return(false);
                    }

                    while (reader.BaseStream.Position != reader.BaseStream.Length)
                    {
                        int    offset    = reader.ReadInt32();
                        int    format    = reader.ReadByte();
                        bool   lineBreak = reader.ReadBoolean();
                        string comment   = reader.ReadString();

                        Bin bin = list.Bins[offset];
                        bin.Format    = (Bin.Formats)format;
                        bin.LineBreak = lineBreak;
                        bin.Comment   = comment;

                        if (bin.LineBreak || bin.Offset == 0)
                        {
                            list.AddScrollbarMark(bin.Offset, bin.Color);
                        }
                    }

                    Debug.WriteLine("Binmap loaded.");
                }
            }

            return(true);
        }