objetsAdd/CTranslationAdd.js

/*
 * Created by yvesb on 21/03/2017.
 */
/*
 * MathGraph32 Javascript : Software for animating online dynamic mathematics figures
 * https://www.mathgraph32.org/
 * @Author Yves Biton (yves.biton@sesamath.net)
 * @License: GNU AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
 */
import CTranslation from '../objets/CTranslation'
import CTransformation from '../objets/CTransformation'
import CVecteur from '../objets/CVecteur'
import StyleTrait from '../types/StyleTrait'
import StyleFleche from '../types/StyleFleche'
import Color from '../types/Color'
import { getStr } from '../kernel/kernel'
export default CTranslation

CTranslation.prototype.complementInfo = function () {
  return getStr('Trans') + ' ' + 'T(' + this.or.getName() + this.ex.getName() + ')'
}

CTranslation.prototype.depDe4Rec = function (p) {
  if (this.elementTestePourDependDePourRec === p) return this.dependDeElementTestePourRec
  return this.memDep4Rec(CTransformation.prototype.depDe4Rec.call(this, p) ||
    this.or.depDe4Rec(p) || this.ex.depDe4Rec(p))
}

/**
 * Fonction ajoutant à la liste list des éléments montrant quels sont les objets avec lesquels l'objet a été construit
 * Pour les translations définies par origine et extrémité on rajoute en particulier un vecteur clignotant
 * @param {CListeObjets} list La liste clignotante à laquelle ajouter les objets antécédents
 * @param {MtgApp} app L'application propriétaire. Ce paramètre ne sert que pour les translations
 */
CTranslation.prototype.ajouteAntecedents = function (list, app) {
  list.add(this.or)
  list.add(this.ex)
  // On crée en plus un vecteur clignotant pour visualiser la translation
  // Important : Le premier paramètre correspondant à la liste propriétaire est null
  // de façon à ce que OutilProtocole.annuleClignotement retire l'implémentation graphique
  // du vecteur rajouté
  const vecteurClignotant = new CVecteur(list, null, false, Color.blue, false,
    new StyleTrait(list, StyleTrait.styleTraitContinu, 2),
    this.or, this.ex, StyleFleche.FlecheLonguePleine)
  // On donne à ce vecteur un membre isTransit qui sera utilisé dans l'outil OutilProtocole dans la fonction
  // annuleclignotement
  vecteurClignotant.isTransit = true
  vecteurClignotant.positionne()
  vecteurClignotant.creeAffichage(app.svgFigure, false, app.doc.couleurFond)
  list.add(vecteurClignotant)
}

CTranslation.prototype.estDefiniParObjDs = function (listeOb) {
  return this.or.estDefPar(listeOb) &&
  this.ex.estDefPar(listeOb)
}