public override void Render(ImageSurface src, ImageSurface dst, Gdk.Rectangle[] rois)
        {
            if (!((EffectData as NightVisionData).Noise))
            {
                foreach (var rect in rois)
                {
                    Render(src, dst, rect);                      //Uses superclass chain of rendering to pass render down to single-pixel renderer.
                }
            }
            else
            {
                AddNoiseEffect noiseEffect = new AddNoiseEffect();

                noiseEffect.Render(src, dst, rois);

                foreach (var rect in rois)
                {
                    Render(dst, dst, rect);                      //Have it render colour changes pixel by pixel on the modified surface.
                }
            }
        }
        public override void Render(ImageSurface src, ImageSurface dst, Gdk.Rectangle[] rois)
        {
            if(!((EffectData as NightVisionData).Noise))
            {
                foreach (var rect in rois)
                    Render (src, dst, rect); //Uses superclass chain of rendering to pass render down to single-pixel renderer.
            } else
            {
                AddNoiseEffect noiseEffect = new AddNoiseEffect();

                noiseEffect.Render (src, dst, rois);

                foreach (var rect in rois)
                    Render (dst, dst, rect); //Have it render colour changes pixel by pixel on the modified surface.
            }
        }