/// <summary>
        /// load image to the reader/writer
        /// </summary>
        /// <param name="actualImage"></param>
        public void ReloadImage(ActualImage actualImage)
        {
            if (this.actualImage == actualImage)
            {
                return;
            }

            //in this version we support actual images
            //in 2 formats :
            //1. 32 bits ARGB
            //2. 8  bits gray scale
            //

            this.actualImage = actualImage;
            switch (actualImage.PixelFormat)
            {
            case PixelFormat.ARGB32:
            {
                Attach(actualImage.Width,
                       actualImage.Height,
                       actualImage.BitDepth,
                       ActualImage.GetBuffer(actualImage),
                       pixelBlenderRGBA ?? (pixelBlenderRGBA = new PixelBlenderBGRA()));
            }
            break;

            case PixelFormat.GrayScale8:
            {
                Attach(actualImage.Width,
                       actualImage.Height,
                       actualImage.BitDepth,
                       ActualImage.GetBuffer(actualImage),
                       pixelBlenderGray ?? (pixelBlenderGray = new PixelBlenderGray(1)));
            }
            break;

            default:
            {
                throw new NotSupportedException();
            }
            }
        }
        public void ReloadImage(ActualImage actualImage)
        {
            if (this.actualImage == actualImage)
            {
                return;
            }
            this.actualImage = actualImage;
            //calculate image stride
            switch (actualImage.PixelFormat)
            {
            case PixelFormat.ARGB32:
            {
                Attach(actualImage.Width,
                       actualImage.Height,
                       actualImage.BitDepth,
                       ActualImage.GetBuffer(actualImage),
                       pixelBlenderRGBA ?? (pixelBlenderRGBA = new PixelBlenderBGRA()));
                //Attach(actualImage.Width,
                //    actualImage.Height,
                //    actualImage.BitDepth,
                //    ActualImage.GetBuffer(actualImage),
                //    pixelBlenderRGBA ?? (pixelBlenderRGBA = new PixelBlenderGammaBGRA(0.8f)));
            }
            break;

            case PixelFormat.GrayScale8:
            {
                Attach(actualImage.Width,
                       actualImage.Height,
                       actualImage.BitDepth,
                       ActualImage.GetBuffer(actualImage),
                       pixelBlenderGray ?? (pixelBlenderGray = new PixelBlenderGray(1)));
            }
            break;

            case PixelFormat.RGB24:
            default:
            {
                throw new NotSupportedException();
            }
            }
        }