objets/CArcDeCercleAncetre.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 NatObj from '../types/NatObj'
import CCercle from './CCercle'
import { cens } from 'src/kernel/kernel'
export default CArcDeCercleAncetre

/**
 * Classe ancêtre de tous les arcs de cercle.
 * @constructor
 * @extends CCercle
 * @param {CListeObjets} listeProprietaire  La liste propriétaire.
 * @param {CImplementationProto} impProto  null ou la construction propriétaire.
 * @param {boolean} estElementFinal  true si élément final de construction.
 * @param {Color} couleur
 * @param {boolean} masque  true si l'objet est masqué.
 * @param {StyleTrait} style  le style de tracé.
* @returns {CArcDeCercleAncetre}
 */
function CArcDeCercleAncetre (listeProprietaire, impProto, estElementFinal, couleur, masque, style) {
  if (arguments.length === 0) return // Ajout version 4.9.9.4
  if (arguments.length === 1) CCercle.call(this, listeProprietaire)
  else {
    CCercle.call(this, listeProprietaire, impProto, estElementFinal, couleur, masque, style)
  }
  this.valeurAngleAuCentre = 0 // Nécessaire JavaScript pour CSurfaceSecteurCirculaire
}
CArcDeCercleAncetre.prototype = new CCercle()
CArcDeCercleAncetre.prototype.constructor = CArcDeCercleAncetre
CArcDeCercleAncetre.prototype.superClass = 'CCercle'
CArcDeCercleAncetre.prototype.className = 'CArcDeCercleAncetre'

CArcDeCercleAncetre.prototype.setClone = function (ptel) {
  CCercle.prototype.setClone.call(this, ptel)
  this.origine_x = ptel.origine_x
  this.origine_y = ptel.origine_y
  this.valeurAngleAuCentre = ptel.valeurAngleAuCentre
}
CArcDeCercleAncetre.prototype.getNature = function () {
  return NatObj.NArc
}
CArcDeCercleAncetre.prototype.createg = function () {
  let style = ''
  const stroke = this.style.stroke
  if (stroke.length !== 0) style += 'stroke-dasharray:' + stroke + ';'
  const strokewidth = this.style.strokeWidth
  style += 'stroke-width:' + strokewidth + ';'
  // style += "stroke:"+this.couleur.rgb()+";"; Modifié version 4.9.9.4
  // style += 'stroke:' + this.color + ';'  // Modifié version 6.9.1
  style += 'stroke:' + this.color + ';opacity:' + this.couleur.opacity + ';'

  style += 'fill:none'
  return cens('path', {
    d: this.path(),
    style,
    // Ligne suivante modifiée version 6.5.2
    // 'pointer-events': 'none'
    'pointer-events': this.pointerevents
  })
}
CArcDeCercleAncetre.prototype.hasg = function (masquage, memeMasque = false) {
  return this.existe && (memeMasque || !(this.masque && masquage)) && !this.horsFenetre
}
CArcDeCercleAncetre.prototype.horsCadre = function () {
  return this.horsFenetre
}
CArcDeCercleAncetre.prototype.trace = function (svg) {
  const g = this.createg()
  g.setAttribute('id', this.id)
  svg.appendChild(g)
  this.g = g
}
CArcDeCercleAncetre.prototype.update = function () {
  const g = this.g
  g.removeAttribute('d')
  g.setAttribute('d', this.path())
}
CArcDeCercleAncetre.prototype.chaineDesignation = function () {
  return 'desArc'
}