/// <summary> /// Start rendering full Animation. /// </summary> private void btnStart_Click(object sender, EventArgs e) { _pictureSize = ParameterDict.Current.GetDouble("Animation.Size"); _animationSmooth = ParameterDict.Current.GetBool("Animation.Smooth"); _inAnimation = true; ParameterInput.MainParameterInput.SetButtonsToStart(); CreateAnimationSteps(tbAnimationDescription.Text); if (_animationSteps.Steps.Count == 0) { return; } btnStart.Enabled = false; btnStop.Enabled = true; btnStop.Visible = true; _animationAbort = false; lblAnimationProgress.Text = "run ..."; // Prepare AnimationHistory ParameterHistory animationHistory = new ParameterHistory(); for (int i = 0; i < _animationSteps.Steps.Count; i++) { AnimationPoint ap = _animationSteps.Steps[i]; _dataPerTime.Load(ap.Time); ParameterDict.Current.SetDouble("View.Size", _pictureSize); animationHistory.Save(); } // Compute each Animation frame. for (int i = 1; i < _animationSteps.Steps.Count; i++) { AnimationPoint ap1 = _animationSteps.Steps[i - 1]; AnimationPoint ap2 = _animationSteps.Steps[i]; ComputeAnimationPart(ap1.Time, ap2.Time, ap2.Steps, animationHistory, i - 1); if (_animationAbort) { break; } } if (_animationSteps.Steps.Count > 0) { ComputeAnimationPart(_animationSteps.Steps[_animationSteps.Steps.Count - 1].Time, _animationSteps.Steps[_animationSteps.Steps.Count - 1].Time, 1, animationHistory, _animationSteps.Steps.Count - 1); } btnStop.Visible = false; btnStart.Enabled = true; lblAnimationProgress.Text = "ready"; _animationAbort = false; _inAnimation = false; ParameterInput.MainParameterInput.SetButtonsToStop(); }
/// <summary> /// Rendering of one preview image is ready. /// </summary> void mPreview1_RenderingEnds() { if (_currentPreviewStep >= _animationSteps.Steps.Count) { _inRenderingPreview = false; _currentPreviewStep = 0; btnPreview.Enabled = true; return; } if (!_inRenderingPreview) { return; } // Load data of currentPreviewStep: AnimationPoint ap = _animationSteps.Steps[_currentPreviewStep]; ParameterHistory animationHistory = new ParameterHistory(); _dataPerTime.Load(ap.Time); animationHistory.Save(); PreviewControl mPreview1 = new Fractrace.PreviewControl(0); mPreview1.Width = _previewWidth; mPreview1.Height = _previewHeight; mPreview1.Location = new System.Drawing.Point(_previewWidth * _currentPreviewStep, 0); pnlPreview.Controls.Add(mPreview1); mPreview1.ShowProgressBar = false; mPreview1.RenderOnClick = false; AnimationStepPreview stepInfo = new AnimationStepPreview(); stepInfo.Width = _previewWidth; stepInfo.Height = 30; // _previewHeight; stepInfo.Location = new System.Drawing.Point(_previewWidth * _currentPreviewStep, _previewHeight); pnlPreview.Controls.Add(stepInfo); int steps = 0; if (_animationSteps.Steps.Count > _currentPreviewStep + 1) { steps = _animationSteps.Steps[_currentPreviewStep + 1].Steps; } stepInfo.Init(ap.Time, steps); _stepPreviewControls[ap.Time] = stepInfo; _currentPreviewStep++; mPreview1.RenderingEnds += new PictureRenderingIsReady(mPreview1_RenderingEnds); mPreview1.Draw(); }
/// <summary> /// Compute part of animation. /// </summary> private void ComputeAnimationPart(int from, int to, int steps, ParameterHistory animationHistory, int historyIndex) { lblAnimationProgress.Text = "compute: " + from.ToString() + " " + to.ToString(); for (int i = 0; i < steps && !_animationAbort; i++) { lblAnimationProgress.Text = "compute: " + from.ToString() + " " + to.ToString() + " Step " + i.ToString() + " (from " + steps.ToString() + ")"; double r = 1.0 / steps * (double)i; Application.DoEvents(); if (_animationSmooth) { animationHistory.LoadSmoothed(r + historyIndex); } else { animationHistory.Load(r + historyIndex); } int updateSteps = ParameterDict.Current.GetInt("View.UpdateSteps"); if (updateSteps <= 0) { updateSteps = 0; } if (updateSteps > 1) { ParameterDict.Current.SetInt("View.UpdateSteps", updateSteps - 1); } ResultImageView.PublicForm.SetPictureBoxSize(); Fractrace.Scheduler.PaintJob paintJob = new Scheduler.PaintJob(ResultImageView.PublicForm, ResultImageView.PublicForm.GestaltPicture); _currentPaintJob = paintJob; paintJob.Run(updateSteps); ResultImageView.PublicForm.CallDrawImage(); if (_stepPreviewControls.ContainsKey(from)) { _stepPreviewControls[from].UpdateComputedStep(i); } } }
/// <summary> /// Initialisierung. /// </summary> public void Init(ParameterHistory data) { _dataPerTime = data; }
/// <summary> /// Rendering of one preview image is ready. /// </summary> void mPreview1_RenderingEnds() { if (_currentPreviewStep >= _animationSteps.Steps.Count) { _inRenderingPreview = false; _currentPreviewStep = 0; btnPreview.Enabled = true; return; } if (!_inRenderingPreview) return; // Load data of currentPreviewStep: AnimationPoint ap = _animationSteps.Steps[_currentPreviewStep]; ParameterHistory animationHistory = new ParameterHistory(); _dataPerTime.Load(ap.Time); animationHistory.Save(); PreviewControl mPreview1 = new Fractrace.PreviewControl(0); mPreview1.Width = _previewWidth ; mPreview1.Height = _previewHeight; mPreview1.Location = new System.Drawing.Point(_previewWidth * _currentPreviewStep, 0); pnlPreview.Controls.Add(mPreview1); mPreview1.ShowProgressBar = false; mPreview1.RenderOnClick = false; AnimationStepPreview stepInfo = new AnimationStepPreview(); stepInfo.Width = _previewWidth; stepInfo.Height = _previewHeight; stepInfo.Location = new System.Drawing.Point(_previewWidth * _currentPreviewStep, _previewHeight); pnlPreview.Controls.Add(stepInfo); int steps=0; if ( _animationSteps.Steps.Count>_currentPreviewStep+1 ) steps = _animationSteps.Steps[_currentPreviewStep+1].Steps; stepInfo.Init(ap.Time, steps); _stepPreviewControls[ap.Time] = stepInfo; _currentPreviewStep++; mPreview1.RenderingEnds += new PictureRenderingIsReady(mPreview1_RenderingEnds); mPreview1.Draw(); }
/// <summary> /// Compute part of animation. /// </summary> private void ComputeAnimationPart(int from, int to, int steps, ParameterHistory animationHistory, int historyIndex) { lblAnimationProgress.Text = "compute: " + from.ToString() + " " + to.ToString(); for (int i = 0; i < steps && !_animationAbort; i++) { lblAnimationProgress.Text = "compute: " + from.ToString() + " " + to.ToString() + " Step " + i.ToString() + " (from " + steps.ToString() + ")"; double r = 1.0 / steps * (double)i; Application.DoEvents(); if (_animationSmooth) animationHistory.LoadSmoothed(r + historyIndex); else animationHistory.Load(r + historyIndex); int updateSteps = ParameterDict.Current.GetInt("View.UpdateSteps"); if (updateSteps <= 0) updateSteps = 0; if (updateSteps > 1) ParameterDict.Current.SetInt("View.UpdateSteps", updateSteps - 1); ResultImageView.PublicForm.SetPictureBoxSize(); Fractrace.Scheduler.PaintJob paintJob = new Scheduler.PaintJob(ResultImageView.PublicForm, ResultImageView.PublicForm.GestaltPicture); _currentPaintJob = paintJob; paintJob.Run(updateSteps); ResultImageView.PublicForm.CallDrawImage(); if (_stepPreviewControls.ContainsKey(from)) _stepPreviewControls[from].UpdateComputedStep(i); } }
/// <summary> /// Start rendering full Animation. /// </summary> private void btnStart_Click(object sender, EventArgs e) { _pictureSize = ParameterDict.Current.GetDouble("Animation.Size"); _animationSmooth = ParameterDict.Current.GetBool("Animation.Smooth"); _inAnimation = true; ParameterInput.MainParameterInput.SetButtonsToStart(); CreateAnimationSteps(tbAnimationDescription.Text); if (_animationSteps.Steps.Count == 0) return; btnStart.Enabled = false; btnStop.Enabled = true; btnStop.Visible = true; _animationAbort = false; lblAnimationProgress.Text = "run ..."; // Prepare AnimationHistory ParameterHistory animationHistory = new ParameterHistory(); for (int i = 0; i < _animationSteps.Steps.Count; i++) { AnimationPoint ap = _animationSteps.Steps[i]; _dataPerTime.Load(ap.Time); ParameterDict.Current.SetDouble("View.Size", _pictureSize); animationHistory.Save(); } // Compute each Animation frame. for (int i = 1; i < _animationSteps.Steps.Count; i++) { AnimationPoint ap1 = _animationSteps.Steps[i - 1]; AnimationPoint ap2 = _animationSteps.Steps[i]; ComputeAnimationPart(ap1.Time, ap2.Time, ap2.Steps, animationHistory,i-1); if (_animationAbort) break; } if (_animationSteps.Steps.Count > 0) { ComputeAnimationPart(_animationSteps.Steps[_animationSteps.Steps.Count - 1].Time, _animationSteps.Steps[_animationSteps.Steps.Count - 1].Time, 1, animationHistory, _animationSteps.Steps.Count-1); } btnStop.Visible = false; btnStart.Enabled = true; lblAnimationProgress.Text = "ready"; _animationAbort = false; _inAnimation = false; ParameterInput.MainParameterInput.SetButtonsToStop(); }
GrandScheduler() { _mainDisplayForm = Fractrace.ResultImageView.PublicForm; _mainParameterInput = Fractrace.ParameterInput.MainParameterInput; _history = _mainParameterInput.History; }