Ejemplo n.º 1
0
        public void Handle(Data.Sprite sprite, ref Bitmap bmp)
        {
            var rct   = bmp.Scan();
            var image = new Bitmap(rct.Width, rct.Height);

            using (var g = Graphics.FromImage(image)) {
                var empty = new Rectangle(Point.Empty, rct.Size);
                g.DrawImage(bmp, empty, rct, GraphicsUnit.Pixel);
            }
            bmp = image;
        }
Ejemplo n.º 2
0
 public void AddSprite(uint spriteIndex, Data.Sprite sprite)
 {
     sprites.Add(spriteIndex, sprite);
 }
Ejemplo n.º 3
0
        public static Data.Sprite ImportImage(string Filename)
        {
            if (System.IO.File.Exists(Filename))
            {
                Bitmap bitmap = new Bitmap(Filename);
                if (bitmap.Width % 8 == 0 && bitmap.Height % 8 == 0)
                {
                    Data.Sprite Sprite;
                    System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;

                    if (palette.Entries.Length <= 16)
                    {
                        if (palette.Entries.Length > 1)
                        {
                            Sprite = new Data.Sprite(bitmap.Width / 8, bitmap.Height / 8, Data.Sprite.SpriteType.Color16);
                        }
                        else
                        {
                            throw new Exception("The image loaded was not indexed or used an undefined alpha channel.");
                        }
                    }
                    else
                    {
                        bool r = false;
                        int  i = 16;
                        while (i < palette.Entries.Length & !r)
                        {
                            if (palette.Entries[i].ToArgb() != Color.Black.ToArgb())
                            {
                                r = true;
                            }

                            i++;
                        }

                        if (r)
                        {
                            Sprite = new Data.Sprite(bitmap.Width / 8, bitmap.Height / 8, Data.Sprite.SpriteType.Color256);
                        }
                        else
                        {
                            Sprite = new Data.Sprite(bitmap.Width / 8, bitmap.Height / 8, Data.Sprite.SpriteType.Color16);
                        }
                    }

                    for (int p = 0; p < Sprite.Palette.Colors.Length; p++)
                    {
                        if (p < palette.Entries.Length)
                        {
                            Sprite.Palette.Colors[p] = new Data.GBAcolor(palette.Entries[p]);
                        }
                    }

                    Sprite.ImageData = GetDataFromBitmap(bitmap, Sprite.Palette.Type);
                    return(Sprite);
                }
                else
                {
                    throw new Exception("The image's dimensions were not multiples of eight.");
                }
            }
            else
            {
                throw new Exception("The file does not exist.");
            }
        }