@stringsync/vexml
Version:
MusicXML to Vexflow
44 lines (43 loc) • 1.36 kB
JavaScript
import * as conversions from './conversions';
export class Clef {
config;
log;
partId;
staveNumber;
sign;
octaveChange;
constructor(config, log, partId, staveNumber, sign, octaveChange) {
this.config = config;
this.log = log;
this.partId = partId;
this.staveNumber = staveNumber;
this.sign = sign;
this.octaveChange = octaveChange;
}
static default(config, log, partId, staveNumber) {
return new Clef(config, log, partId, staveNumber, 'treble', null);
}
static create(config, log, partId, musicXML) {
const clefSign = conversions.fromClefPropertiesToClefSign(musicXML.clef.getSign(), musicXML.clef.getLine());
return new Clef(config, log, partId, musicXML.clef.getStaveNumber(), clefSign, musicXML.clef.getOctaveChange());
}
parse() {
return {
type: 'clef',
sign: this.sign,
octaveShift: this.octaveChange,
};
}
getPartId() {
return this.partId;
}
getStaveNumber() {
return this.staveNumber;
}
isEqual(clef) {
return this.partId === clef.partId && this.staveNumber === clef.staveNumber && this.isEquivalent(clef);
}
isEquivalent(clef) {
return this.sign === clef.sign && this.octaveChange === clef.octaveChange;
}
}