Example #1
0
        public void UnloadImage()
        {
            if (IsClosing)
            {
                return;
            }
            imageCached = BitmapChangeTracker.UndoCount != 0 || BitmapChangeTracker.RedoCount != 0;

            bool isGif = BitmapChangeTracker.Format == ImgFormat.gif;

            if (!imageCached)
            {
                ibMain.Image = null;
                BitmapChangeTracker.Clear();
            }
            else
            {
                ibMain.DisposeImageBeforeChange = false; // let the change tracker handle disposing
                ibMain.Image = null;
                ibMain.DisposeImageBeforeChange = true;
            }

            ImageShown = false;
            OnImageUnload();

            if (InternalSettings.Garbage_Collect_On_Image_Unload)
            {
                GC.Collect();
            }
        }
Example #2
0
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            bool isGif = BitmapChangeTracker.Format == Helpers.ImgFormat.gif;

            BitmapChangeTracker.Dispose();
            ibMain.Dispose();

            if (disposing && (components != null))
            {
                components.Dispose();
            }

            if (ImageViewer.Settings.InternalSettings.Garbage_Collect_On_Image_Unload)
            {
                System.GC.Collect();
            }
            else if (ImageViewer.Settings.InternalSettings.Garbage_Collect_After_Disposing_Gif && isGif)
            {
                System.GC.Collect();
            }
            base.Dispose(disposing);
        }
Example #3
0
        private void LoadImage()
        {
            if (PreventLoadImage)
            {
                return;
            }

            ibMain.Text = "";

            if (!File.Exists(imagePath.FullName))
            {
                ibMain.Image = null;
                ImageShown   = false;
                OnImageUnload();
                Invalidate();
                //MessageBox.Show("invalid image");

                /*MessageBox.Show(this,
                 *  InternalSettings.Item_Does_Not_Exist_Message,
                 *  InternalSettings.Item_Does_Not_Exist_Title,
                 *  MessageBoxButtons.OK);
                 *
                 * Program.mainForm.CloseCurrentTabPage();
                 *
                 * // need to call this here to display the image
                 * // of the tab that gets selected after CloseCurrentTabPage
                 * if (Program.mainForm.CurrentPage != null)
                 *  Program.mainForm.CurrentPage.LoadImageSafe();
                 */
                ibMain.Text = "The Path: \n" + imagePath.FullName + "\nDoes Not Exists";
                return;
            }

            if (changingImagePath)
            {
                BitmapChangeTracker?.Clear();
            }

            if (BitmapChangeTracker.CurrentBitmap == null)
            {
                BitmapChangeTracker.CurrentBitmap = ImageHelper.LoadImage(ImagePath.FullName); //ImageHelper.LoadImageAsBitmap(imagePath.FullName);
                if (BitmapChangeTracker.CurrentBitmap == null || BitmapChangeTracker.CurrentBitmap.Image == null)
                {
                    ibMain.Image = null;
                    ImageShown   = false;
                    ibMain.Text  = "The Path: \n" + imagePath.FullName + "\nCould Not Be Loaded, The Image Is Invalid / Unsupported";
                    OnImageUnload();
                    Invalidate();
                }
            }

            if (InternalSettings.Show_Default_Transparent_Colors)
            {
                ibMain.GridColor          = InternalSettings.Default_Transparent_Grid_Color;
                ibMain.GridColorAlternate = InternalSettings.Default_Transparent_Grid_Color_Alternate;
            }
            else
            {
                ibMain.GridColor          = InternalSettings.Current_Transparent_Grid_Color;
                ibMain.GridColorAlternate = InternalSettings.Current_Transparent_Grid_Color_Alternate;
            }

            if (ImageAnimator.CanAnimate(BitmapChangeTracker.CurrentBitmap.Image))
            {
                int curFrame = 0;

                if (GifDecoder != null)
                {
                    curFrame = GifDecoder.ActiveFrameIndex;
                }

                GifDecoder = new GifDecoder(BitmapChangeTracker.CurrentBitmap as Gif);

                if (curFrame != 0)
                {
                    GifDecoder.SetFrame(curFrame);
                }
            }
            else
            {
                GifDecoder = null;
            }

            ibMain.Image = BitmapChangeTracker.CurrentBitmap;
            ImageShown   = true;

            OnImageLoad();
            Invalidate();
        }