static FilenameResolver()
 {
     //if (System.Web.HttpContext.Current != null)
     //    resolver = new WebFilenameResolver();
     //else
     resolver = new BasicFilenameResolver();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="Paint.PictureStateManager"/> class.		
 /// <param name='filenameResolver' Determines the filename for all files saved/loaded />
 /// <param name='pictureIOManager' Handles the saving of the imageStateData />
 /// <param name='renderTargetHandler' Handles the rendering of the appropriate render target when undo/redoing a change />
 /// <param name='imageStateData' Current save point, max undo/redo count etc />
 /// </summary>
 public PictureStateManager(IFilenameResolver filenameResolver, IPictureIOManager pictureIOManager, IRenderTargertHandler renderTargetHandler, ImageStateData imageStateData)
 {
     this.canvasRecorder = new CanvasRecorder();
     this.renderTargetHandler = renderTargetHandler;
     this.filenameResolver = filenameResolver;
     this.pictureIOManager = pictureIOManager;
     this.ImageStateData = imageStateData;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="Paint.PaintApp"/> class.
        /// Instantiate our GraphicsDeviceManager and establish where the content folder is
        /// </summary>
        /// <param name='pictureIOManager'>Picture IO Manager</param>
        /// <param name='filenameResolver'>Filename Resolver</param>
        /// <param name='imageStateData'>ImageSaveData</param>
        /// <param name='saveBusyMessageDisplay'>Class for dsplaying the 'Busy - saving' message</param>
        /// <param name='toolboxLayoutDefinition'>Layout of the toolbox</param>
        /// <param name='deviceScale'>The device scale/resolution. 1 = normal.  2 = retina.</param>
        public PaintApp(
			IPictureIOManager pictureIOManager, 
			IFilenameResolver filenameResolver, 
			ImageStateData imageStateData,
			IUIBusyMessage saveBusyMessageDisplay,
			ToolboxLayoutDefinition toolboxLayoutDefinition,
			int deviceScale)
            : base(imageStateData, toolboxLayoutDefinition, deviceScale)
        {
            this.filenameResolver = filenameResolver;
            this.pictureIOManager = pictureIOManager;
            this.saveBusyMessageDisplay = saveBusyMessageDisplay;
        }
        /// <summary>
        /// Copies the image (and all associated data files) to the specified image name
        /// </summary>
        /// <param name='destinationImageFilenameResolver'>
        /// Details of where we need to copy the files.
        /// </param>
        public void CopyImage(IFilenameResolver destinationImageFilenameResolver)
        {
            if (!Directory.Exists(destinationImageFilenameResolver.DataFolder))
            {
                Directory.CreateDirectory(destinationImageFilenameResolver.DataFolder);
            }

            File.Copy(this.filenameResolver.MasterImageInfoFilename, destinationImageFilenameResolver.MasterImageInfoFilename);
            File.Copy(this.filenameResolver.MasterImageFilename, destinationImageFilenameResolver.MasterImageFilename);

            var imageStateData = this.LoadImageStateData();
            int end = imageStateData.FirstSavePoint == 0 ? imageStateData.LastSavePoint : imageStateData.MaxUndoRedoCount - 1;

            for (int count = 0; count <= end; count++)
            {
                File.Copy(this.filenameResolver.ImageSavePointFilename(count), destinationImageFilenameResolver.ImageSavePointFilename(count));
                File.Copy(this.filenameResolver.MasterCanvasRecorderFilename(count), destinationImageFilenameResolver.MasterCanvasRecorderFilename(count));
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="Paint.PictureIOManager"/> class.
 /// </summary>
 /// <param name='filenameResolver'>Filename resolver.</param>
 public PictureIOManager(IFilenameResolver filenameResolver)
 {
     this.filenameResolver = filenameResolver;
 }