public void SaveData(ImageStateData imageStateData, RenderTarget2D masterImageRenderTarget, RenderTarget2D[] undoRedoRenderTargets, int bottomMarginToCutOff)
{
this.SaveImageStateData(this.filenameResolver.MasterImageInfoFilename, imageStateData);
int end = imageStateData.FirstSavePoint == 0 ? imageStateData.LastSavePoint : imageStateData.MaxUndoRedoCount - 1;
for (int count = 0; count <= end; count++)
{
var renderTarget = undoRedoRenderTargets[count];
// Save the render target to disk
renderTarget.SaveAsPng(
this.filenameResolver.ImageSavePointFilename(count),
renderTarget.Width,
renderTarget.Height);
// copy the working canvas recorder file into the master folder.
var masterCanvasRecorderFile = this.filenameResolver.MasterCanvasRecorderFilename(count);
if (File.Exists(masterCanvasRecorderFile))
{
File.Delete(masterCanvasRecorderFile);
}
File.Move(this.filenameResolver.WorkingCanvasRecorderFilename(count), masterCanvasRecorderFile);
}
// Save the Master image as a JPG as it has no alpha channel - which is ideal for displaying on the home
// home screen where we don't want the background image showing through
masterImageRenderTarget.SaveAsJpeg(
this.filenameResolver.MasterImageFilename,
masterImageRenderTarget.Width,
masterImageRenderTarget.Height - bottomMarginToCutOff);
File.Delete(this.filenameResolver.WorkingImageInfoFilename);
}