Example #1
0
        public void ImportImageDataAs8Bit(Bitmap bitmap, IPalette palette, bool isBasePalette, out int difference)
        {
            difference = 0;
            if (bitmap == null)
            {
                return;
            }

            BitsPerPixel   = 8;
            FirstByte      = 1;
            ImageWidth     = bitmap.Width;
            ImageHeight    = bitmap.Height;
            ImageOffset    = default;
            FrameWidth     = (byte)bitmap.Width;
            FrameHeight    = (byte)bitmap.Height;
            ImageHandle    = 1;
            PaletteHandle  = isBasePalette ? 0 : 1;
            Memory         = 1;
            PaletteHandle2 = 1;
            ImageData      = new byte[bitmap.Width * bitmap.Height];

            for (int x = 0; x < ImageWidth; x++)
            {
                for (int y = 0; y < ImageHeight; y++)
                {
                    Color pixel  = bitmap.GetPixel(x, y);
                    int   idata8 = palette.GetClosestIndexFromColor(pixel, out int d);
                    difference += d;
                    byte data8 = (byte)(idata8.Clamp(0, byte.MaxValue));
                    int  pos   = x + y * ImageWidth;
                    ImageData[pos] = data8;
                }
            }

            if (!isBasePalette)
            {
                Palette.Import(palette);
            }
        }