Exemplo n.º 1
0
 public void Write(BinaryReaderWriter wr)
 {
     wr.Write(MapID);
     wr.Write(ProductID);
     wr.Write(FamilyID);
     wr.Write(MapNumber);
 }
Exemplo n.º 2
0
        public void Write(BinaryReaderWriter bw, int iCodepage)
        {
            bw.Write(Options);
            XBitmapDay.WriteAsPoi(bw);
            if (WithNightXpm)
            {
                XBitmapNight.WriteAsPoi(bw);
            }
            if (WithString)
            {
                Text.Write(bw, iCodepage);
            }
            if (WithExtendedOptions)
            {
                bw.Write(ExtOptions);
                switch (FontColType)
                {
                case FontColours.Day:
                    BinaryColor.WriteColor(bw, colFontColour[0]);
                    break;

                case FontColours.Night:
                    BinaryColor.WriteColor(bw, colFontColour[1]);
                    break;

                case FontColours.DayAndNight:
                    BinaryColor.WriteColorTable(bw, colFontColour);
                    break;
                }
            }
        }
Exemplo n.º 3
0
 public void Write(BinaryReaderWriter bw, int codepage)
 {
     bw.Write((byte)Language);
     byte[] txt = Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(codepage), Encoding.Unicode.GetBytes(Txt));
     bw.Write(txt);
     bw.Write((byte)0);
 }
Exemplo n.º 4
0
 public void Write(BinaryReaderWriter wr)
 {
     wr.Write((byte)CopyrightCode);
     wr.Write((byte)WhereCode);
     wr.Write(ExtraProperties);
     wr.WriteString(Copyright);
 }
Exemplo n.º 5
0
        /// <summary>
        /// schreibt eine Farbtabelle in den Stream
        /// </summary>
        /// <param name="bw"></param>
        /// <param name="coltable"></param>
        /// <param name="bWithAlpha"></param>
        public static void WriteColorTable(BinaryReaderWriter bw, Color[] coltable, bool bWithAlpha = false)
        {
            if (!bWithAlpha)
            {
                for (int i = 0; i < coltable.Length; i++)
                {
                    bw.Write(coltable[i].B);
                    bw.Write(coltable[i].G);
                    bw.Write(coltable[i].R);
                }
            }
            else
            {
                // Länge der Farbtabelle ermitteln
                int len = coltable.Length * 3 + coltable.Length / 2;
                if (coltable.Length % 2 == 1)
                {
                    len++;
                }
                // Farbtabelle erzeugen
                byte[] colortable = new byte[len];

                byte[] halfbytetable = new byte[2 * len];
                for (int i = 0, j = 0; i < coltable.Length; i++)
                {
                    halfbytetable[j++] = (byte)(coltable[i].B & 0xf);
                    halfbytetable[j++] = (byte)(coltable[i].B >> 4);
                    halfbytetable[j++] = (byte)(coltable[i].G & 0xf);
                    halfbytetable[j++] = (byte)(coltable[i].G >> 4);
                    halfbytetable[j++] = (byte)(coltable[i].R & 0xf);
                    halfbytetable[j++] = (byte)(coltable[i].R >> 4);
                    halfbytetable[j++] = (byte)(0xf - ((float)coltable[i].A / 0xff) * 0xf);
                }
                for (int i = 0; i < colortable.Length; i++)
                {
                    colortable[i] = (byte)(halfbytetable[2 * i] | (halfbytetable[2 * i + 1] << 4));
                }
                //bool bMoveHalfbyte = false;
                //for (int i = 0, dest = 0; i < coltable.Length; i++) {
                //   byte alpha = (byte)(~coltable[i].A / 255f * 15);
                //   if (bMoveHalfbyte) {
                //      colortable[dest++] |= (byte)(coltable[i].B << 4);
                //      colortable[dest] = (byte)(coltable[i].B >> 4);
                //      colortable[dest++] |= (byte)(coltable[i].G << 4);
                //      colortable[dest] = (byte)(coltable[i].G >> 4);
                //      colortable[dest++] |= (byte)(coltable[i].R << 4);
                //      colortable[dest] = (byte)(coltable[i].R >> 4);
                //      colortable[dest++] |= (byte)(alpha << 4);
                //   } else {
                //      colortable[dest++] = coltable[i].B;
                //      colortable[dest++] = coltable[i].G;
                //      colortable[dest++] = coltable[i].R;
                //      colortable[dest] = alpha;
                //   }
                //   bMoveHalfbyte = !bMoveHalfbyte;
                //}
                bw.Write(colortable);
            }
        }
Exemplo n.º 6
0
 /// <summary>
 /// schreibe die aktuellen Daten als MDX-Datei
 /// </summary>
 /// <param name="wr"></param>
 public void Write(BinaryReaderWriter wr)
 {
     wr.Write(new byte[] { (byte)'M', (byte)'i', (byte)'d', (byte)'x', (byte)'d', 0 });
     wr.Write(Unknown1);
     wr.Write(Unknown2);
     wr.Write((UInt32)Maps.Count);
     for (int i = 0; i < Maps.Count; i++)
     {
         Maps[i].Write(wr);
     }
 }
Exemplo n.º 7
0
 public void Write(BinaryReaderWriter wr)
 {
     wr.Write(Used);
     if (Used)
     {
         wr.WriteString(Name, null, false);
         wr.WriteString(Typ, null, false);
         wr.Write(Filesize);
         wr.Write(Flag);
         wr.Write(Part);
         wr.Write(Unknown);
         if (blocks.Count > 0)
         {
             for (int i = 0; i < (BlockSize - 32) / 2; i++)
             {
                 if (i < blocks.Count)
                 {
                     wr.Write((UInt16)(blocks[i] < 0xffff ? blocks[i] : 0xffff));
                 }
                 else
                 {
                     wr.Write((UInt16)0xffff);
                 }
             }
         }
     }
     else
     {
         for (int i = 1; i < BlockSize; i++)
         {
             wr.Write((byte)0x00);
         }
     }
 }
Exemplo n.º 8
0
        /// <summary>
        /// schreibt das Bitmap als POI in den Stream (falls der Colormode stimmt, sonst Exception)
        /// </summary>
        /// <param name="bw"></param>
        public void WriteAsPoi(BinaryReaderWriter bw)
        {
            switch (Colormode)
            {
            case BitmapColorMode.POI_SIMPLE:
            case BitmapColorMode.POI_TR:
                bw.Write((byte)Width);
                bw.Write((byte)Height);
                bw.Write((byte)colColorTable.Length);
                bw.Write((byte)Colormode);
                BinaryColor.WriteColorTable(bw, colColorTable, false);
                data.Write(bw);
                break;

            case BitmapColorMode.POI_ALPHA:
                bw.Write((byte)Width);
                bw.Write((byte)Height);
                bw.Write((byte)colColorTable.Length);
                bw.Write((byte)Colormode);
                BinaryColor.WriteColorTable(bw, colColorTable, true);
                data.Write(bw);
                break;

            default:
                throw new Exception(string.Format("Unerlaubter ColorMode für Bitmap ({0:x2}).", Colormode));
            }
        }
Exemplo n.º 9
0
 /// <summary>
 /// schreibt den Blockheader und die Blockdaten
 /// </summary>
 /// <param name="wr"></param>
 public void Write(BinaryReaderWriter wr)
 {
     blh.Length = 20;
     blh.Write(wr);
     wr.Write(Unknown1);
     wr.Write(A);
     wr.Write(Unknown2);
     wr.Write(Unknown3);
     wr.Write(B);
     wr.Write(Unknown4);
     wr.Write(C);
     wr.Write(Unknown5);
     wr.Write(D);
     wr.Write(Unknown6);
 }
Exemplo n.º 10
0
        protected override void Encode_Header(BinaryReaderWriter bw)
        {
            if (bw != null)
            {
                base.Encode_Header(bw);

                bw.Write(Unknown_x15);
                ContentsBlock.Write(bw);

                if (Headerlength > 0x1D)     // auch 0x25 gesehen mit 8 zusätzlichen Byte: 00 00 35 00 00 00 10 00

                {
                    bw.Write(Unknown_x1D);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// schreibt den Eintrag für eine Drawordertabelle (Typ 0 steht für das Ende eines Levels)
        /// </summary>
        /// <param name="bw"></param>
        /// <param name="length"></param>
        public void Write(BinaryReaderWriter bw, int length)
        {
            bw.Write((byte)(Type & 0xff));
            length--;

            byte[] b = new byte[length];
            if (0xFF < Type)               // dann auch Subtypes berücksichtigen
            {
                for (int i = 0; i < Subtypes.Count; i++)
                {
                    uint bidx = Subtypes[i] / 8;   // Byte-Index (0..)
                    b[bidx] |= (byte)(0x01 << (int)(Subtypes[i] % 8));
                }
            }

            bw.Write(b);
        }
Exemplo n.º 12
0
        /// <summary>
        /// schreibt den Multitext in den Stream
        /// </summary>
        /// <param name="bw"></param>
        /// <param name="iCodepage"></param>
        public void Write(BinaryReaderWriter bw, int iCodepage)
        {
            int len = GetIdentificationLength();

            if (len <= 0xff)
            {
                bw.Write((byte)(0xff & len));
            }
            else
            {
                bw.Write((UInt16)(0xffff & len));
            }
            foreach (Text.LanguageCode code in txt.Keys)
            {
                new Text(txt[code], code).Write(bw, iCodepage);
            }
        }
Exemplo n.º 13
0
        public void Write(BinaryReaderWriter bw, int iItemlength)
        {
            UInt16 type = (UInt16)((Type << 5) | Subtype);

            bw.Write(type);
            switch (iItemlength)
            {
            case 3: bw.Write((byte)(Offset & 0xff)); break;

            case 4: bw.Write((UInt16)(Offset & 0xffff)); break;

            case 5:
                bw.Write((UInt16)(Offset & 0xffff));
                bw.Write((byte)((Offset >> 16) & 0xff));
                break;
            }
        }
Exemplo n.º 14
0
 /// <summary>
 /// In den Stream werden entsprechend der gespeicherten Position die Daten geschrieben.
 /// </summary>
 /// <param name="bw"></param>
 public void Write(BinaryReaderWriter bw)
 {
     if (Data != null &&
         Data.Length > 0)
     {
         bw.Seek(Position.Offset);
         bw.Write(Data);
     }
 }
Exemplo n.º 15
0
 /// <summary>
 /// schreibt den Blockheader und die Blockdaten
 /// </summary>
 /// <param name="wr"></param>
 public void Write(BinaryReaderWriter wr)
 {
     blh.Length = (ushort)(1 + // Unknown1
                           Text.Length +
                           1); // 0-Byte
     blh.Write(wr);
     wr.Write(Unknown1);
     wr.WriteString(Text);
 }
Exemplo n.º 16
0
        protected override void Encode_Header(BinaryReaderWriter bw)
        {
            if (bw != null)
            {
                base.Encode_Header(bw);

                bw.Write(Unknown_0x15);

                for (int i = 0; i < SubHeaderOffsets.Length; i++)
                {
                    bw.Write(SubHeaderOffsets[i]);
                }

                if (Headerlength > 0x35)
                {
                    bw.Write(Unknown_0x35);
                }
            }
        }
Exemplo n.º 17
0
 /// <summary>
 /// schreibt die <see cref="SubtileTableitem"/> und die Höhendaten
 /// </summary>
 /// <param name="bw"></param>
 public void WriteData(BinaryReaderWriter bw)
 {
     CalculateOffsets();
     for (int i = 0; i < Subtiles.Count; i++)
     {
         Subtiles[i].Tableitem.Write(bw, ZoomlevelItem.Structure_OffsetSize, ZoomlevelItem.Structure_BaseheightSize, ZoomlevelItem.Structure_DiffSize, ZoomlevelItem.Structure_CodingtypeSize);
     }
     for (int i = 0; i < Subtiles.Count; i++)
     {
         bw.Write(Subtiles[i].Data);
     }
 }
Exemplo n.º 18
0
        /// <summary>
        /// schreibt den allgemeinen Header
        /// </summary>
        /// <param name="wr"></param>
        /// <param name="typ">nur angeben wenn der akt. <see cref="GarminTyp"/> überschrieben werden soll</param>
        protected void WriteCommonHeader(BinaryReaderWriter wr, string typ = null)
        {
            wr.Seek(HeaderOffset);

            wr.Write(Headerlength);
            if (!string.IsNullOrEmpty(typ))
            {
                GarminTyp = "GARMIN " + typ;
            }
            wr.WriteString(GarminTyp, null, false);
            wr.Write(Unknown_0x0C);
            wr.Write(Locked);
            wr.Write((Int16)(CreationDate.Year));
            wr.Write((byte)(CreationDate.Month));
            wr.Write((byte)(CreationDate.Day));
            wr.Write((byte)(CreationDate.Hour));
            wr.Write((byte)(CreationDate.Minute));
            wr.Write((byte)(CreationDate.Second));
        }
Exemplo n.º 19
0
        public override void Write(BinaryReaderWriter bw, uint headeroffset = 0, UInt16 headerlength = 0x29, uint gapoffset = 0, uint dataoffset = 0, bool setsectiondata = true)
        {
            HeaderOffset = headeroffset;
            if (headerlength > 0)
            {
                Headerlength = headerlength;
            }
            CreationDate = DateTime.Now;
            GapOffset    = gapoffset;
            DataOffset   = dataoffset;

            PtrZoomlevel = Headerlength;
            for (int z = 0; z < ZoomlevelCount; z++)
            {
                ZoomLevel[z].CalculateStructureLength();
                ZoomLevel[z].ZoomlevelItem.PtrSubtileTable = PtrZoomlevel;
                PtrZoomlevel += (uint)ZoomLevel[z].GetTablelength();
                ZoomLevel[z].ZoomlevelItem.PtrHeightdata = PtrZoomlevel;
                PtrZoomlevel += (uint)ZoomLevel[z].GetDatalength();
            }

            Encode_Header(bw);

            bw.Seek(headerlength);

            for (int z = 0; z < ZoomlevelCount; z++)
            {
                // Subtile-Tabelle schreiben
                for (int i = 0; i < ZoomLevel[z].Subtiles.Count; i++)
                {
                    ZoomlevelTableitem zti = ZoomLevel[z].ZoomlevelItem;
                    ZoomLevel[z].Subtiles[i].Tableitem.Write(bw, zti.Structure_OffsetSize, zti.Structure_BaseheightSize, zti.Structure_DiffSize, zti.Structure_CodingtypeSize);
                }
                // Subtile-Daten schreiben
                for (int i = 0; i < ZoomLevel[z].Subtiles.Count; i++)
                {
                    bw.Write(ZoomLevel[z].Subtiles[i].Data);
                }
            }

            // Zoomleveltabelle schreiben
            for (int z = 0; z < ZoomlevelCount; z++)
            {
                ZoomLevel[z].ZoomlevelItem.Write(bw);
            }

            bw.Flush();
        }
Exemplo n.º 20
0
            /// <summary>
            /// schreibt den Blockheader und die Blockdaten
            /// </summary>
            /// <param name="wr"></param>
            public new void Write(BinaryReaderWriter wr)
            {
                BinaryReaderWriter wrtmp = new BinaryReaderWriter();

                base.Write(wrtmp);

                SubCount = (UInt16)DataSize.Count;
                //Unknown1 = (UInt16)(SubCount + 1);

                wrtmp.Write(Unknown1);
                wrtmp.Write(SubCount);

                for (int i = 0; i < DataSize.Count; i++)
                {
                    wrtmp.Write(DataSize[i]);
                }

                wrtmp.Write(HasCopyright);
                wrtmp.Write(Unknown2);
                wrtmp.Write(Unknown3);
                wrtmp.Write(Unknown4);
                wrtmp.Write(Unknown5);
                wrtmp.Write(Unknown6);
                wrtmp.Write(Unknown7);

                for (int i = 0; i < Name.Count; i++)
                {
                    wrtmp.WriteString(Name[i]);
                }

                wrtmp.Write(Unknown8);
                wrtmp.Write(Unknown9);

                wrtmp.Seek(1);
                wrtmp.Write((short)(wrtmp.Length - 3)); // Länge des Datenbereiches schreiben
                wrtmp.Seek(0);

                wr.Write(wrtmp.ToArray());

                wrtmp.Dispose();
            }
Exemplo n.º 21
0
        /// <summary>
        /// schreibe die aktuellen Daten als TDB-Datei
        /// </summary>
        /// <param name="wr"></param>
        public void Write(BinaryReaderWriter wr)
        {
            // alle Daten zunächst nur in einen MemoryStream schreiben und danach mit dessen Daten die CRC berechnen
            MemoryStream mem = new MemoryStream();

            using (BinaryReaderWriter bw = new BinaryReaderWriter(mem)) {
                Head.Write(bw);

                Copyright.Write(bw);

                if (Head.TDBVersion >= 407)
                {
                    Mapdescription.Write(bw);
                }

                Overviewmap.Write(bw);

                for (int i = 0; i < Tilemap.Count; i++)
                {
                    Tilemap[i].Write(bw);
                }

                wr.Write(mem.ToArray()); // Ausgabe in den Ziel-Stream

                if (Head.TDBVersion >= 407)
                {
                    // CRC32 berechnen
                    CRC32 crc32 = new CRC32();
                    mem.Seek(0, SeekOrigin.Begin);
                    long pos = mem.Length;
                    for (long i = 0; i < pos; i++)
                    {
                        crc32.update((byte)mem.ReadByte());
                    }
                    Crc.crc = crc32.Value;
                    Crc.Write(wr); // Ausgabe in den Ziel-Stream
                }
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// schreibt die Headerdaten und verwendet die akt. Dateiabschnitte dafür
        /// </summary>
        /// <param name="bw"></param>
        protected override void Encode_Header(BinaryReaderWriter bw)
        {
            if (bw != null)
            {
                base.Encode_Header(bw);

                ZoomlevelCount      = (ushort)ZoomLevel.Count;
                ZoomlevelRecordSize = 0x3C;

                bw.Write(Flags);
                bw.Write(ZoomlevelCount);
                bw.Write(Unknown_0x1B);
                bw.Write(ZoomlevelRecordSize);
                bw.Write(PtrZoomlevel);
                bw.Write(Unknown_0x25);
            }
        }
Exemplo n.º 23
0
 /// <summary>
 /// schreibt den Blockheader und die Blockdaten
 /// </summary>
 /// <param name="wr"></param>
 public void Write(BinaryReaderWriter wr)
 {
     if (blh.Length == 0)
     {
         blh.Length = (ushort)(4 +                    // Mapnumber
                               4 +                    // ParentMapnumber
                               4 + 4 + 4 + 4 +        // 4x Koordinaten
                               Description.Length + 1 // Description + 0-Byte
                               );
     }
     blh.Write(wr);
     wr.Write(Mapnumber);
     wr.Write(ParentMapnumber);
     wr.Write(north);
     wr.Write(east);
     wr.Write(south);
     wr.Write(west);
     wr.WriteString(Description);
 }
Exemplo n.º 24
0
 /// <summary>
 /// schreibt die Daten in den Stream
 /// </summary>
 /// <param name="bw">Ausgabestream</param>
 public void Write(BinaryReaderWriter bw)
 {
     bw.Write(rawimgdata);
 }
Exemplo n.º 25
0
        protected override void Encode_Header(BinaryReaderWriter bw)
        {
            if (bw != null)
            {
                base.Encode_Header(bw);

                // Header-Daten schreiben
                Nod1Nodes.Write(bw);
                bw.Write(Flags);
                bw.Write(Unknown_0x1F);
                bw.Write(Align);
                bw.Write(Mult1);
                bw.Write(TableARecordLen);
                Nod2RoadData.Write(bw);
                bw.Write(Unknown_0x2D);
                Nod3BoundaryNodes.Write(bw);
                bw.Write(Unknown_0x3B);

                Nod4HighClassBoundary.Write(bw);
                for (int i = 0; i < ClassBoundaries.Length; i++)
                {
                    bw.Write(ClassBoundaries[i] - (i > 0 ? ClassBoundaries[i - 1] : 0));
                }



                bw.Write(Unknown_0x5B);
                Nod5.Write(bw);
                bw.Write(Unknown_0x6F);
                Nod6.Write(bw);
                bw.Write(Unknown_0x7B);
            }
        }
Exemplo n.º 26
0
        /// <summary>
        /// schreibt den Header (<see cref="Blocks4Img"/> muss korrekt für die Dateilänge gesetzt sein)
        /// </summary>
        /// <param name="wr"></param>
        public void Write(BinaryReaderWriter wr)
        {
            CalculateGeometry();

            wr.Write(XOR);
            wr.Write(Unknown_x01);
            wr.Write(UpdateMonth);
            wr.Write(_UpdateYear);
            wr.Write(Unknown_x0c);
            wr.Write(MapsourceFlag);
            wr.Write(Checksum);
            wr.Write(Encoding.ASCII.GetBytes(SIGNATURE));
            wr.Write(Unknown_x16);
            wr.Write(SectorsPerTrack);
            wr.Write(HeadsPerCylinder);
            wr.Write(Cylinders);
            wr.Write(Unknown_x1e);
            wr.Write((UInt16)CreationDate.Year);
            wr.Write((byte)CreationDate.Month);
            wr.Write((byte)CreationDate.Day);
            wr.Write((byte)CreationDate.Hour);
            wr.Write((byte)CreationDate.Minute);
            wr.Write((byte)CreationDate.Second);
            wr.Write(_HeadSectors);
            wr.Write(Encoding.ASCII.GetBytes(MAPFILEIDENTIFIER));
            wr.Write(Unknown_x47);
            wr.Write(Encoding.ASCII.GetBytes(Description1));
            wr.Write(HeadsPerCylinder2);
            wr.Write(SectorsPerTrack2);
            wr.Write(BlocksizeExp1);
            wr.Write(BlocksizeExp2);
            wr.Write(Blocks4Img);
            wr.Write(Encoding.ASCII.GetBytes(Description2));
            wr.Write(Unknown_x83);
            wr.Write(StartHeadNumber4Partition);
            wr.Write(StartSectorNumber4Partition);
            wr.Write(StartCylinderNumber4Partition);
            wr.Write(Systemtyp);
            wr.Write(LastHeadNumber4Partition);
            wr.Write(LastSectorNumber4Partition);
            wr.Write(LastCylinderNumber4Partition);
            wr.Write(RelativeSectors);
            wr.Write(LastSectorNumber4IMG);
            wr.Write(Unknown_x1ce);
            wr.Write(BOOTSIGNATURE);

            Unknown_x200 = new byte[(_HeadSectors - 1) * SECTOR_BLOCKSIZE];
            wr.Write(Unknown_x200);
        }
Exemplo n.º 27
0
            public void Write(BinaryReaderWriter wr)
            {
                wr.Write((byte)Typ);
                UInt16 len = 0;

                if (Typ == 'L')
                {
                    len = (UInt16)(12 + Name.Count);
                    foreach (var item in Name)
                    {
                        len += (UInt16)item.Length;
                    }
                    wr.Write(len);
                    wr.Write(ProductID);
                    wr.Write(FamilyID);
                    wr.Write(MapNumber);
                    foreach (var item in Name)
                    {
                        wr.WriteString(item);
                    }
                    wr.Write(Unknown0);
                    wr.Write(Unknown1);
                }
                else if (Typ == 'F')
                {
                    len = (UInt16)(8 + Name.Count);
                    foreach (var item in Name)
                    {
                        len += (UInt16)item.Length;
                    }
                    wr.Write(len);
                    wr.Write(ProductID);
                    wr.Write(FamilyID);
                    foreach (var item in Name)
                    {
                        wr.WriteString(item);
                    }
                }
                else if (Typ == 'P')
                {
                    len = (UInt16)14;
                    wr.Write(len);
                    wr.Write(ProductID);
                    wr.Write(FamilyID);
                    wr.Write(Unknown2);
                    wr.Write(Unknown3);
                    wr.Write(Unknown4);
                }
                else if (Typ == 'V')
                {
                    len = (UInt16)Name.Count;
                    foreach (var item in Name)
                    {
                        len += (UInt16)item.Length;
                    }
                    wr.Write(len);
                    foreach (var item in Name)
                    {
                        wr.WriteString(item);
                    }
                }
            }
Exemplo n.º 28
0
        public void Write(BinaryReaderWriter bw, int iCodepage)
        {
            bw.Write(Options);

            switch (Colortype)
            {
            case ColorType.Day1:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                break;

            case ColorType.Day1_Night1:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                BinaryColor.WriteColor(bw, colNightColor[0]);
                break;

            case ColorType.BM_Day2:
                XBitmapDay.WriteColorTable(bw);
                XBitmapDay.WriteRawdata(bw);
                break;

            case ColorType.BM_Day2_Night2:
                BinaryColor.WriteColorTable(bw, colDayColor);
                BinaryColor.WriteColorTable(bw, colNightColor);
                XBitmapDay.WriteRawdata(bw);
                break;

            case ColorType.BM_Day1_Night2:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                BinaryColor.WriteColorTable(bw, colNightColor);
                XBitmapDay.WriteRawdata(bw);
                break;

            case ColorType.BM_Day2_Night1:
                BinaryColor.WriteColorTable(bw, colDayColor);
                BinaryColor.WriteColor(bw, colNightColor[0]);
                XBitmapDay.WriteRawdata(bw);
                break;

            case ColorType.BM_Day1:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                XBitmapDay.WriteRawdata(bw);
                break;

            case ColorType.BM_Day1_Night1:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                BinaryColor.WriteColor(bw, colNightColor[0]);
                XBitmapDay.WriteRawdata(bw);
                break;
            }
            if (WithString)
            {
                Text.Write(bw, iCodepage);
            }
            if (WithExtendedOptions)   // es folgen weitere (max. 2) Farben
            {
                bw.Write(ExtOptions);
                switch (FontColType)
                {
                case FontColours.Day:
                    BinaryColor.WriteColor(bw, colFontColour[0]);
                    break;

                case FontColours.Night:
                    BinaryColor.WriteColor(bw, colFontColour[1]);
                    break;

                case FontColours.DayAndNight:
                    BinaryColor.WriteColorTable(bw, colFontColour);
                    break;
                }
            }
        }
Exemplo n.º 29
0
 public void Write(BinaryReaderWriter w)
 {
     w.Write(SpecType);
     w.Write(No);
     w.Write(PointsHoriz);
     w.Write(PointsVert);
     w.Write(LastRowHeight);
     w.Write(LastColWidth);
     w.Write(Unknown12);
     w.Write(MaxIdxHoriz);
     w.Write(MaxIdxVert);
     w.Write(Structure);
     w.Write(SubtileTableitemSize);
     w.Write(PtrSubtileTable);
     w.Write(PtrHeightdata);
     w.Write(west);
     w.Write(north);
     w.Write(pointDistanceVert);
     w.Write(pointDistanceHoriz);
     w.Write(MinHeight);
     w.Write(MaxHeight);
 }
Exemplo n.º 30
0
        public void Write(BinaryReaderWriter bw, int iCodepage)
        {
            bw.Write(Options);
            bw.Write(Options2);
            switch (Polylinetype)
            {
            case PolylineType.Day2:
                BinaryColor.WriteColorTable(bw, colDayColor);
                break;

            case PolylineType.Day2_Night2:
                BinaryColor.WriteColorTable(bw, colDayColor);
                BinaryColor.WriteColorTable(bw, colNightColor);
                break;

            case PolylineType.Day1_Night2:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                BinaryColor.WriteColorTable(bw, colNightColor);
                break;

            case PolylineType.NoBorder_Day2_Night1:
                BinaryColor.WriteColorTable(bw, colDayColor);
                BinaryColor.WriteColor(bw, colNightColor[0]);
                break;

            case PolylineType.NoBorder_Day1:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                break;

            case PolylineType.NoBorder_Day1_Night1:
                BinaryColor.WriteColor(bw, colDayColor[0]);
                BinaryColor.WriteColor(bw, colNightColor[0]);
                break;
            }

            if (BitmapHeight == 0) // Linien- und Randbreite ermitteln
            {
                switch (Polylinetype)
                {
                case PolylineType.Day2:
                case PolylineType.Day2_Night2:
                case PolylineType.Day1_Night2:
                    bw.Write((byte)InnerWidth);
                    if (InnerWidth > 0)
                    {
                        bw.Write((byte)(2 * BorderWidth + InnerWidth));
                    }
                    break;

                case PolylineType.NoBorder_Day2_Night1:
                case PolylineType.NoBorder_Day1:
                case PolylineType.NoBorder_Day1_Night1:
                    bw.Write((byte)InnerWidth);
                    break;
                }
            }
            else
            {
                XBitmapDay.WriteRawdata(bw);
            }

            if (WithString)
            {
                Text.Write(bw, iCodepage);
            }

            if (WithExtendedOptions)   // es folgen weitere (max. 2) Farben
            {
                bw.Write(ExtOptions);
                switch (FontColType)
                {
                case FontColours.Day:
                    BinaryColor.WriteColor(bw, colFontColour[0]);
                    break;

                case FontColours.Night:
                    BinaryColor.WriteColor(bw, colFontColour[1]);
                    break;

                case FontColours.DayAndNight:
                    BinaryColor.WriteColorTable(bw, colFontColour);
                    break;
                }
            }
        }