public void Write(BinaryWriter writer, ref Palette_15Bit prevPalette) { if (PaletteType == PaletteType.EMPTY_ENTRY) { // no data. Wirte a single null byte. writer.Write('\0'); return; } if (PaletteHandle == 0) { // base palette or high color (16-bit). Any non-zero value permitted. Fix this to 1 FirstByte = 1; } else if (prevPalette.Equals(Palette)) { FirstByte = 2; } else { FirstByte = 1; prevPalette = Palette; // for the next entry } writer.Write(FirstByte); writer.Write(ImageWidth); writer.Write(ImageHeight); writer.Write(ImageOffsetX); writer.Write(ImageOffsetY); writer.Write(ImageHandle); writer.Write(PaletteHandle); writer.Write(BitsPerPixel); writer.Write(FrameHeight); writer.Write(FrameWidth); writer.Write(Alignment); writer.Write(ImageData); if (PaletteType == PaletteType.EMBEDDED_PALETTE) { if (Memory == 0) { Memory = 1; } if (PaletteHandle2 == 0) { PaletteHandle2 = 1; } writer.Write(Memory); writer.Write(PaletteHandle2); Palette.Write(writer); } }