Пример #1
0
        OcadFileHeader ReadFileHeader()
        {
            OcadFileHeader fh = new OcadFileHeader();
            fh.Read(reader);

            return fh;
        }
Пример #2
0
 OcadSetup ReadSetup(OcadFileHeader fh)
 {
     OcadSetup setup = new OcadSetup();
     setup.Read(reader, fh.SetupPos, fh.SetupSize);
     return setup;
 }
Пример #3
0
        // Write the given map to an OCAD file.
        //   version = 6,7,8 -- the OCAD version
        //   usedSavedOcadInfo utilizes symbol information that was saved away if this file was
        //     loaded from OCAD, for better round tripping. Setup structure information and
        //     symbol header information is always used.
        public void WriteMap(Map map, string filename, int version, bool useSavedOcadInfo)
        {
            using (map.Read()) {
                this.map = map;
                this.version = version;
                this.filename = filename;
                //this.useOcadSaved = useSavedOcadInfo;

                if (version < 6 || version > 9)
                    throw new ArgumentException("Bad version number", "version");

                OcadFileHeader fileHeader = new OcadFileHeader();

                using (writer = new BinaryWriter(new FileStream(filename, FileMode.Create, FileAccess.ReadWrite), Encoding.GetEncoding(1252))) {
                    fileHeader.OCADMark = 3245;

                    if (version == 6)
                        fileHeader.SectionMark = 0;
                    else if (version == 7)
                        fileHeader.SectionMark = 7;
                    else if (version == 8)
                        fileHeader.SectionMark = 2;
                    else
                        fileHeader.SectionMark = 0;

                    fileHeader.Version = (short) version;
                    fileHeader.Subversion = 0;
                    // other fields will be filled in later and re-written at the end

                    fileHeader.Write(writer);

                    if (version <= 8) {
                        WriteSymbolHeader();
                        fileHeader.SetupPos = WriteSetup(out fileHeader.SetupSize);
                    }

                    fileHeader.FirstSymBlk = WriteSymbols();
                    fileHeader.FirstIdxBlk = WriteObjects();

                    if (version >= 8)
                        fileHeader.FirstStIndexBlk = WriteStringParameters();

                    // rewrite the file header
                    writer.Seek(0, SeekOrigin.Begin);
                    fileHeader.Write(writer);
                }
            }
        }