/// <summary>
        /// Exectuado quando o evento de adição de ponto concluída é despoletado.
        /// </summary>
        /// <param name="sender">O objecto que despoleta o evento.</param>
        /// <param name="eventArgs">Os argumentos do evento.</param>
        public override void AfterAddEventHandler(
            object sender,
            AddDeleteEventArgs <Tuple <SourceType, TargetType> > eventArgs)
        {
            var firstCoord = eventArgs.AddedOrRemovedObject.Item1;

            this.UpdateStateFromPointAddition(firstCoord);
            this.UpdatePolynomialFromMatrices();
        }
        /// <summary>
        /// Executado quando o evento de aviso de adição de um ponto é excutado.
        /// </summary>
        /// <param name="sender">O obejcto que enviou o evento.</param>
        /// <param name="eventArgs">Os argumentos passados para o evento.</param>
        public override void BeforeAddEventHandler(
            object sender,
            AddDeleteEventArgs <Tuple <SourceType, TargetType> > eventArgs)
        {
            var firstCoord = eventArgs.AddedOrRemovedObject.Item1;

            if (this.pointsContainer.AsParallel().Any(pt => this.sourceField.Equals(pt.Item1, firstCoord)))
            {
                throw new MathematicsException("A point with the same first coordinate in point set already exists.");
            }
        }
Example #3
0
 /// <summary>
 /// Adiciona um ponto ao contentor.
 /// </summary>
 /// <param name="firstCoord">A primeira coordenada do ponto.</param>
 /// <param name="secondCoord">A segunda coordenada do ponto.</param>
 public void Add(FirstCoeffType firstCoord, SecondCoeffType secondCoord)
 {
     if (firstCoord == null)
     {
         throw new ArgumentNullException("firstCoord");
     }
     else if (secondCoord == null)
     {
         throw new ArgumentNullException("secondCoord");
     }
     else
     {
         var point = Tuple.Create(firstCoord, secondCoord);
         if (this.BeforeAddEvent == null)
         {
             this.points.Add(Tuple.Create(firstCoord, secondCoord));
             if (this.AfterAddEvent != null)
             {
                 this.AfterAddEvent.Invoke(
                     this,
                     new AddDeleteEventArgs <Tuple <FirstCoeffType, SecondCoeffType> >(point));
             }
         }
         else
         {
             var eventArg = new AddDeleteEventArgs <Tuple <FirstCoeffType, SecondCoeffType> >(point);
             this.BeforeAddEvent.Invoke(
                 this,
                 eventArg);
             this.points.Add(point);
             if (this.AfterAddEvent != null)
             {
                 this.AfterAddEvent.Invoke(
                     this,
                     eventArg);
             }
         }
     }
 }
Example #4
0
 /// <summary>
 /// Remove o elemneto especificado pelo índice.
 /// </summary>
 /// <param name="index">O índice do elemento a ser removido.</param>
 public void RemoveAt(int index)
 {
     if (index >= 0 && index < this.points.Count)
     {
         if (this.BeforeDeleteEvent == null)
         {
             this.points.RemoveAt(index);
         }
         else
         {
             var eventArg = new AddDeleteEventArgs <int>(index);
             this.BeforeDeleteEvent.Invoke(
                 this,
                 eventArg);
             this.points.RemoveAt(index);
             if (this.AfterAddEvent != null)
             {
                 this.AfterDeleteEvent.Invoke(
                     this,
                     eventArg);
             }
         }
     }
 }
 /// <summary>
 /// Exectuado quando o evento de remoção do ponto concluída é despoletado.
 /// </summary>
 /// <param name="sender">O objecto que depoleta o evento.</param>
 /// <param name="eventArgs">Os argumentos do evento.</param>
 public override void AfterRemoveEventHandler(
     object sender,
     AddDeleteEventArgs <int> eventArgs)
 {
     throw new NotSupportedException("Points removal isn´t supported yet.");
 }
Example #6
0
 /// <summary>
 /// Manuseador do evento que é despoletado após o objecto ser removido do contentor de pontos.
 /// </summary>
 /// <param name="sender">O objecto que despoleta o evento.</param>
 /// <param name="eventArgs">O argumento do evento.</param>
 public abstract void AfterRemoveEventHandler(object sender, AddDeleteEventArgs <int> eventArgs);
Example #7
0
 /// <summary>
 /// Manuseador do evento que é despoletado após o objecto ser adicionado ao contentor de pontos.
 /// </summary>
 /// <param name="sender">O objecto que despoleta o evento.</param>
 /// <param name="eventArgs">O argumento do evento.</param>
 public abstract void AfterAddEventHandler(object sender, AddDeleteEventArgs <Tuple <SourceType, TargetType> > eventArgs);