File size: 1,216 Bytes
af6912c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//    abc_triplet_element.js: Definition of the TripletElem class.

var TripletElem = function TripletElem(number, anchor1, options) {
	this.type = "TripletElem";
	this.anchor1 = anchor1; // must have a .x and a .parent property or be null (means starts at the "beginning" of the line - after key signature)
	this.number = number;
	this.durationClass = ('d' + (Math.round(anchor1.parent.durationClass * 1000) / 1000)).replace(/\./, '-');
	this.middleElems = []; // This is to calculate the highest interior pitch. It is used to make sure that the drawn bracket never crosses a really high middle note.
	this.flatBeams = options.flatBeams;
};

TripletElem.prototype.isClosed = function () {
	return !!this.anchor2;
};

TripletElem.prototype.middleNote = function (elem) {
	this.middleElems.push(elem);
};

TripletElem.prototype.setCloseAnchor = function (anchor2) {
	this.anchor2 = anchor2;
	// TODO-PER: This used to be just for beamed triplets but it looks like bracketed triplets need extra room, too. The only one that doesn't is stem down and beamed
	//if (this.anchor1.parent.beam)
	if (!this.anchor1.parent.beam || this.anchor1.stemDir === 'up')
		this.endingHeightAbove = 4;
};

module.exports = TripletElem;