Example #1
0
        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);
            }
        }