objets/CSousListeObjets.js

/*
 * 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 CListeObjets from './CListeObjets'

export default CSousListeObjets

/**
 * Classe utilisée pour gérer des listes d'objets internes à la liste principale de la figure.
 * Cet objet difère de CListeObjets dans le fait qu'il n'enregistre pas des objets dans le flux
 * mais seulement les indices des objets de la liste
 * @constructor
 * @param {KernelUniteAngle} uniteAngle
 * @param id
 * @returns {CSousListeObjets}
 */
function CSousListeObjets (uniteAngle, id) {
  CListeObjets.call(this, uniteAngle, id)
}
// CListeObjets.prototype = Object.create(Array.prototype);
CSousListeObjets.prototype = new CListeObjets()
CSousListeObjets.prototype.constructor = CSousListeObjets
CSousListeObjets.prototype.className = 'CSousListeObjets'
CSousListeObjets.prototype.superClass = 'CListeObjets'

CSousListeObjets.prototype.remplacePoint = function (ancienPoint, nouveauPoint) {
  for (let i = 0; i < this.longueur(); i++) {
    const elb = this.get(i)
    if (elb === ancienPoint) this.set(this.indexOf(ancienPoint), nouveauPoint)
  }
}
CSousListeObjets.prototype.read = function (inps, listeProprietaire) {
  const nombreObjets = inps.readInt()
  for (let i = 0; i < nombreObjets; i++) {
    const ind = inps.readInt()
    const elb = listeProprietaire.get(ind)
    this.add(elb)
  }
}
CSousListeObjets.prototype.write = function (oups, listeProprietaire) {
  const lon = this.longueur()
  oups.writeInt(lon)
  for (let i = 0; i < lon; i++) oups.writeInt(listeProprietaire.indexOf(this.get(i)))
}