예제 #1
0
        /// <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();
        }
예제 #2
0
        /// <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();
        }
예제 #3
0
 /// <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);
         }
     }
 }
예제 #4
0
 /// <summary>
 /// Initialisierung.
 /// </summary>
 public void Init(ParameterHistory data)
 {
     _dataPerTime = data;
 }
예제 #5
0
        /// <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();
        }
예제 #6
0
 /// <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);
     }
 }
예제 #7
0
 /// <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();
 }
예제 #8
0
 /// <summary>
 /// Initialisierung.
 /// </summary>
 public void Init(ParameterHistory data)
 {
     _dataPerTime = data;
 }
예제 #9
0
 GrandScheduler()
 {
     _mainDisplayForm = Fractrace.ResultImageView.PublicForm;
     _mainParameterInput = Fractrace.ParameterInput.MainParameterInput;
     _history = _mainParameterInput.History;
 }