public void InsertImage(int index, Bitmap image, short x, short y)
        {
            Mir3Image mImage = new Mir3Image(image)
            {
                OffSetX = x, OffSetY = y
            };

            Images.Insert(index, mImage);
        }
        public void ReplaceImage(int Index, Bitmap image, short x, short y)
        {
            Mir3Image mImage = new Mir3Image(image)
            {
                OffSetX = x, OffSetY = y
            };

            Images[Index] = mImage;
        }
        public void AddImage(Bitmap image, short x, short y)
        {
            Mir3Image mImage = new Mir3Image(image)
            {
                OffSetX = x, OffSetY = y
            };

            Images.Add(mImage);
        }
        public Bitmap GetPreview(int index, ImageType type)
        {
            if (index < 0 || index >= Images.Count)
            {
                return(new Bitmap(1, 1));
            }

            Mir3Image image = Images[index];

            switch (type)
            {
            case ImageType.Image:
                if (image == null || image.Image == null)
                {
                    return(new Bitmap(1, 1));
                }

                if (image.Preview == null)
                {
                    image.CreatePreview();
                }

                return(image.Preview);

            case ImageType.Shadow:
                if (image == null || image.ShadowImage == null)
                {
                    return(new Bitmap(1, 1));
                }

                if (image.ShadowPreview == null)
                {
                    image.CreateShadowPreview();
                }

                return(image.ShadowPreview);

            case ImageType.Overlay:
                if (image == null || image.OverlayImage == null)
                {
                    return(new Bitmap(1, 1));
                }

                if (image.OverlayPreview == null)
                {
                    image.CreateOverlayPreview();
                }

                return(image.OverlayPreview);
            }

            return(new Bitmap(1, 1));
        }
        public Mir3Image CreateImage(int index, ImageType type)
        {
            if (!CheckImage(index))
            {
                return(null);
            }

            Mir3Image image = Images[index];
            Bitmap    bmp;

            switch (type)
            {
            case ImageType.Image:
                if (!image.ImageValid)
                {
                    image.CreateImage(_bReader);
                }
                bmp = image.Image;
                break;

            case ImageType.Shadow:
                if (!image.ShadowValid)
                {
                    image.CreateShadow(_bReader);
                }
                bmp = image.ShadowImage;
                break;

            case ImageType.Overlay:
                if (!image.OverlayValid)
                {
                    image.CreateOverlay(_bReader);
                }
                bmp = image.OverlayImage;
                break;

            default:
                return(null);
            }

            if (bmp == null)
            {
                return(null);
            }

            return(image);
        }
        public void ReadLibrary()
        {
            if (_bReader == null)
            {
                return;
            }

            using (MemoryStream mstream = new MemoryStream(_bReader.ReadBytes(_bReader.ReadInt32())))
                using (BinaryReader reader = new BinaryReader(mstream))
                {
                    int count = reader.ReadInt32();
                    for (int i = 0; i < count; i++)
                    {
                        Images.Add(null);
                    }

                    for (int i = 0; i < Images.Count; i++)
                    {
                        if (!reader.ReadBoolean())
                        {
                            continue;
                        }

                        Images[i] = new Mir3Image(reader);
                    }
                }
            for (int i = 0; i < Images.Count; i++)
            {
                if (Images[i] == null)
                {
                    continue;
                }

                CreateImage(i, ImageType.Image);
                CreateImage(i, ImageType.Shadow);
                CreateImage(i, ImageType.Overlay);
            }
        }