void refreshWindow() { int frameCount = movie.frameCount(); labelFrameInfo.Text = getShowFrameInfo(); hScrollBarFrames.Enabled = frameCount != 0; tabPageAnimation.Enabled = frameCount != 0; removeFrameToolStripMenuItem.Enabled = frameCount != 0; cloneToWorkingAreaToolStripMenuItem.Enabled = frameCount != 0; makeAnimationToolStripMenuItem.Enabled = frameCount != 0; remove1FrameToolStripMenuItem.Enabled = (frameCount > 1); remove10ToolStripMenuItem.Enabled = (frameCount > 10); replaceToolStripMenuItem.Enabled = (frameCount != 0); clearToolStripMenuItem.Enabled = (frameCount != 0); this.Text = applicationTitle + " - " + ((currentProjectFile == null)? "New project": currentProjectFile) + (currentProjectModified ? "*" : ""); panel1.BackColor = workFrame.colorMap[(int)numericUpDown10.Value]; panelAnnotationColor.BackColor = grid.annotationColor; if (CudaPainter.enabled) { if (CudaPainter.canRender(workFrame)) { LabelCuda.Text = "CUDA Enabled"; } else { LabelCuda.Text = "CUDA Enabled but cannot be used"; } } else { LabelCuda.Text = "CUDA Disabled"; } }
//Real size is twice more! unsafe public Bitmap getFrame(int halfWidth, int halfHeight, Grid grid) { setSize(2 * halfWidth, 2 * halfHeight); Bitmap result = null; if (CudaPainter.enabled && CudaPainter.canRender(this) && !CudaPainter.corrupted && !CudaPainter.busy) { try { result = CudaPainter.render(realHalfWidth, realHalfHeight, this); } catch (Exception ex) { CudaPainter.corrupted = true; MessageBox.Show("Error while rendering picture on GPU.\n" + ex.Message + "\n\nRecommendations:\n" + "0.Restart application immidiately.\n" + "1.Increase timeout in registry (HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\GraphicsDrivers\\...)\n" + "2.Use row Scan\n" + "3.Request smaller frame\n" + "4.Don't use CUDA."); return(null); } } else { if (genMode == GeneratingMode.Delegate) { result = getFrameDelegate(); } else { result = getFrameFormula(); } } drawGrid(ref result, grid); return(result); }