Example #1
0
        public void Load(String fileName, PixelFormat format = PixelFormat.Format8bppIndexed)
        {
            FileStream   fs         = new FileStream(fileName, FileMode.Open, FileAccess.Read);
            BinaryReader br         = new BinaryReader(fs);
            UInt16       numSprites = br.ReadUInt16();

            numSprites++;
            UInt16[] width  = new UInt16[numSprites];
            UInt16[] height = new UInt16[numSprites];
            if (sprites == null)
            {
                sprites = new ArrayList();
            }
            for (UInt16 i = 0; i < numSprites; i++)
            {
                width[i] = br.ReadUInt16();
            }
            for (UInt16 i = 0; i < numSprites; i++)
            {
                height[i] = br.ReadUInt16();
            }
            switch (format)
            {
            case PixelFormat.Format8bppIndexed:
            case PixelFormat.Indexed:
                if (pal == null)
                {
                    // load a default palette
                    pal = new PaletteFile();
                }
                for (UInt16 i = 0; i < numSprites; i++)
                {
                    try
                    {
                        Bitmap bmp = new Bitmap((int)(width[i]), (int)(height[i]));
                        for (UInt16 y = 0; y < height[i]; y++)
                        {
                            for (UInt16 x = 0; x < width[i]; x++)
                            {
                                Byte col = br.ReadByte();
                                bmp.SetPixel(x, y, pal[col]);
                            }
                        }
                        sprites.Add(bmp);
                    }
                    catch (Exception ex) {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                    }
                }
                break;

            case PixelFormat.Format16bppRgb565:
                for (UInt16 i = 0; i < numSprites; i++)
                {
                    Bitmap bmp = new Bitmap((width[i] / 2), height[i]);
                    for (UInt16 y = 0; y < height[i]; y++)
                    {
                        for (UInt16 x = 0; x < (width[i] / 2); x++)
                        {
                            UInt16 w = br.ReadUInt16();
                            bmp.SetPixel(x, y, PixelFormatConverter.R5G6B5(w));
                        }
                    }
                    sprites.Add(bmp);
                }
                break;

            default:
                throw new ArgumentException("PixelFormat not supported.");
            }
            br.Close();
            fs.Close();
        }
Example #2
0
        private bool LoadImage(string FileName)
        {
            string FileExt = FileName.Substring(FileName.IndexOf(".")).ToLower();
            string imgKey;

            if (FileExt == ".pal")
            {
                pal          = new PaletteFile(FileName);
                panel1.Width = 180;
                panel1.Update();
                return(true);
            }

            if (FileExt == ".img")
            {
                ImgFile imgf  = new ImgFile();
                string  palFN = FileName.Substring(0, FileName.IndexOf(".")) + ".pal";
                if (System.IO.File.Exists(palFN))
                {
                    pal          = new PaletteFile(palFN);
                    panel1.Width = 180;
                    panel1.Update();
                }


                imgf.PaletteFile = pal;
                imgf.Load(FileName);
                spriteView.BeginUpdate();
                for (int idx = 0; idx < imgf.Count; idx++)
                {
                    Bitmap bmp = imgf[idx];
                    imgKey = String.Format("Image{0}", key);
                    key++;
                    imageList1.Images.Add(imgKey, bmp);
                    sprites.Add(bmp);

                    spriteView.Items.Add(String.Format("{0}:{1}", FileName, idx), imgKey);
                }
                spriteView.EndUpdate();
                imgf = null;
                return(true);
            }

            if (FileExt == ".hmg")
            {
                ImgFile imgf = new ImgFile();

                imgf.Load(FileName, PixelFormat.Format16bppRgb565);
                spriteView.BeginUpdate();
                for (int idx = 0; idx < imgf.Count; idx++)
                {
                    Bitmap bmp = imgf[idx];
                    imgKey = String.Format("Image{0}", key);
                    key++;
                    imageList1.Images.Add(imgKey, bmp);
                    sprites.Add(bmp);

                    spriteView.Items.Add(string.Format("{0}:{1}", FileName, idx), imgKey);
                }
                spriteView.EndUpdate();
                imgf = null;
                return(true);
            }


            Image sprite = null;

            try
            {
                sprite = Image.FromFile(FileName);
            }
            catch (Exception)
            {
                return(false);
            }
            imgKey = string.Format("Image{0}", key);
            key++;
            imageList1.Images.Add(imgKey, sprite);

            sprites.Add(sprite);
            spriteView.BeginUpdate();
            spriteView.Items.Add(FileName, imgKey);
            spriteView.EndUpdate();
            return(true);
        }
Example #3
0
 public ImgFile()
 {
     sprites = new ArrayList();
     pal     = null;
     palFN   = "";
 }