abcjs-rails 2.0 → 2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/abcjs/api/abc_animation.js +0 -19
- data/app/assets/javascripts/abcjs/api/abc_tunebook.js +0 -5
- data/app/assets/javascripts/abcjs/edit/abc_editor.js +0 -10
- data/app/assets/javascripts/abcjs/parse/abc_parse.js +11 -35
- data/app/assets/javascripts/abcjs/parse/abc_parse_directive.js +2 -18
- data/app/assets/javascripts/abcjs/write/abc_absolute_element.js +9 -25
- data/app/assets/javascripts/abcjs/write/abc_abstract_engraver.js +21 -16
- data/app/assets/javascripts/abcjs/write/abc_beam_element.js +5 -94
- data/app/assets/javascripts/abcjs/write/abc_crescendo_element.js +0 -16
- data/app/assets/javascripts/abcjs/write/abc_decoration.js +3 -2
- data/app/assets/javascripts/abcjs/write/abc_dynamic_decoration.js +0 -8
- data/app/assets/javascripts/abcjs/write/abc_ending_element.js +0 -20
- data/app/assets/javascripts/abcjs/write/abc_engraver_controller.js +1 -1
- data/app/assets/javascripts/abcjs/write/abc_relative_element.js +9 -46
- data/app/assets/javascripts/abcjs/write/abc_renderer.js +1 -1
- data/app/assets/javascripts/abcjs/write/abc_staff_group_element.js +4 -67
- data/app/assets/javascripts/abcjs/write/abc_tie_element.js +0 -24
- data/app/assets/javascripts/abcjs/write/abc_triplet_element.js +0 -54
- data/app/assets/javascripts/abcjs/write/abc_voice_element.js +24 -13
- data/lib/abcjs-rails/version.rb +1 -1
- metadata +2 -4
- data/app/assets/javascripts/abcjs/write/abc_layout.js +0 -1040
- data/app/assets/javascripts/abcjs/write/abc_write.js +0 -535
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdcbdb9238f2f1f23907474b552d5de442640107
|
4
|
+
data.tar.gz: ad3934f6f67f4448a726395cb6c6bfe15fe99c47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9731f7c7de5fffeef49346ee6f09355e892a7f830e6b11d117d0c6af05349328a7dcaed6b7d97ddee4cf57ad4652a451ad521551a35e6eb396b48dda1cc7531
|
7
|
+
data.tar.gz: 3310a61ea0d346f45f8b37e2a79cecf354bd009ea4bb83f5d3ca091d2ffb17d2d10ac05fb6a2cc63e6755c0fd7a32b3d506d351b453e4cb5be4f3987893d8034
|
@@ -20,10 +20,7 @@ if (!window.ABCJS)
|
|
20
20
|
window.ABCJS = {};
|
21
21
|
|
22
22
|
(function() {
|
23
|
-
<<<<<<< HEAD
|
24
23
|
"use strict";
|
25
|
-
=======
|
26
|
-
>>>>>>> origin/master
|
27
24
|
|
28
25
|
function hasClass(element, cls) {
|
29
26
|
var elClass = element.getAttribute("class");
|
@@ -83,10 +80,7 @@ if (!window.ABCJS)
|
|
83
80
|
if (options.showCursor) {
|
84
81
|
cursor = $('<div class="cursor" style="position: absolute;"></div>');
|
85
82
|
$(paper).append(cursor);
|
86
|
-
<<<<<<< HEAD
|
87
83
|
$(paper).css({ position: "relative" });
|
88
|
-
=======
|
89
|
-
>>>>>>> origin/master
|
90
84
|
}
|
91
85
|
|
92
86
|
stopNextTime = false;
|
@@ -136,7 +130,6 @@ if (!window.ABCJS)
|
|
136
130
|
for (var line=0;line<engraver.staffgroups.length; line++) {
|
137
131
|
var group = engraver.staffgroups[line];
|
138
132
|
var voices = group.voices;
|
139
|
-
<<<<<<< HEAD
|
140
133
|
var firstStaff = group.staffs[0];
|
141
134
|
var middleC = firstStaff.absoluteY;
|
142
135
|
var top = middleC - firstStaff.top*ABCJS.write.spacing.STEP;
|
@@ -144,10 +137,6 @@ if (!window.ABCJS)
|
|
144
137
|
middleC = lastStaff.absoluteY;
|
145
138
|
var bottom = middleC - lastStaff.bottom*ABCJS.write.spacing.STEP;
|
146
139
|
var height = bottom - top;
|
147
|
-
=======
|
148
|
-
var top = group.y;
|
149
|
-
var height = group.height;
|
150
|
-
>>>>>>> origin/master
|
151
140
|
var maxVoiceTime = 0;
|
152
141
|
// Put in the notes for all voices, then sort them, then remove duplicates
|
153
142
|
for (var v = 0; v < voices.length; v++) {
|
@@ -165,16 +154,12 @@ if (!window.ABCJS)
|
|
165
154
|
// If the note is tied on both sides it can just be ignored.
|
166
155
|
} else {
|
167
156
|
// the last note wasn't tied.
|
168
|
-
<<<<<<< HEAD
|
169
157
|
if (!eventHash["event"+voiceTime])
|
170
158
|
eventHash["event"+voiceTime] = { type: "event", time: voiceTime, top: top, height: height, left: element.x, width: element.w };
|
171
159
|
else {
|
172
160
|
// If there is more than one voice then two notes can fall at the same time. Usually they would be lined up in the same place, but if it is a whole rest, then it is placed funny. In any case, the left most element wins.
|
173
161
|
eventHash["event"+voiceTime].left = Math.min(eventHash["event"+voiceTime].left, element.x);
|
174
162
|
}
|
175
|
-
=======
|
176
|
-
eventHash["event"+voiceTime] = { type: "event", time: voiceTime, top: top, height: height, left: element.x, width: element.w };
|
177
|
-
>>>>>>> origin/master
|
178
163
|
if (isTiedToNext)
|
179
164
|
isTiedState = true;
|
180
165
|
}
|
@@ -218,13 +203,9 @@ if (!window.ABCJS)
|
|
218
203
|
if (currentNote.type === "bar") {
|
219
204
|
if (options.hideFinishedMeasures)
|
220
205
|
processMeasureHider(currentNote.lineNum, currentNote.measureNum);
|
221
|
-
<<<<<<< HEAD
|
222
206
|
if (timingEvents.length > 0)
|
223
207
|
return timingEvents[0].time / beatLength;
|
224
208
|
return 0;
|
225
|
-
=======
|
226
|
-
return processShowCursor();
|
227
|
-
>>>>>>> origin/master
|
228
209
|
}
|
229
210
|
if (options.showCursor)
|
230
211
|
cursor.css({ left: currentNote.left + "px", top: currentNote.top + "px", width: currentNote.width + "px", height: currentNote.height + "px" });
|
@@ -156,13 +156,8 @@ if (!window.ABCJS)
|
|
156
156
|
/* jshint -W064 */ var paper = Raphael(div, width, 400); /* jshint +W064 */
|
157
157
|
if (engraverParams === undefined)
|
158
158
|
engraverParams = {};
|
159
|
-
<<<<<<< HEAD
|
160
159
|
var engraver_controller = new ABCJS.write.EngraverController(paper, engraverParams);
|
161
160
|
engraver_controller.engraveABC(tune);
|
162
|
-
=======
|
163
|
-
var engraver_controller = new ABCJS.write.Printer(paper, engraverParams);
|
164
|
-
engraver_controller.printABC(tune);
|
165
|
-
>>>>>>> origin/master
|
166
161
|
tune.engraver = engraver_controller;
|
167
162
|
}
|
168
163
|
|
@@ -241,13 +241,8 @@ window.ABCJS.Editor.prototype.renderTune = function(abc, params, div) {
|
|
241
241
|
abcParser.parse(tunebook.tunes[0].abc, params); //TODO handle multiple tunes
|
242
242
|
var tune = abcParser.getTune();
|
243
243
|
var paper = Raphael(div, 800, 400);
|
244
|
-
<<<<<<< HEAD
|
245
244
|
var engraver_controller = new ABCJS.write.EngraverController(paper, this.engraverparams);
|
246
245
|
engraver_controller.engraveABC(tune);
|
247
|
-
=======
|
248
|
-
var engraver_controller = new ABCJS.write.Printer(paper, this.engraverparams);
|
249
|
-
engraver_controller.printABC(tune);
|
250
|
-
>>>>>>> origin/master
|
251
246
|
};
|
252
247
|
|
253
248
|
window.ABCJS.Editor.prototype.modelChanged = function() {
|
@@ -264,13 +259,8 @@ window.ABCJS.Editor.prototype.modelChanged = function() {
|
|
264
259
|
this.timerId = null;
|
265
260
|
this.div.innerHTML = "";
|
266
261
|
var paper = Raphael(this.div, 800, 400);
|
267
|
-
<<<<<<< HEAD
|
268
262
|
this.engraver_controller = new ABCJS.write.EngraverController(paper, this.engraverparams);
|
269
263
|
this.engraver_controller.engraveABC(this.tunes);
|
270
|
-
=======
|
271
|
-
this.engraver_controller = new ABCJS.write.Printer(paper, this.engraverparams);
|
272
|
-
this.engraver_controller.printABC(this.tunes);
|
273
|
-
>>>>>>> origin/master
|
274
264
|
this.tunes[0].engraver = this.engraver_controller; // TODO-PER: We actually want an output object for each tune, not the entire controller. When refactoring, don't save data in the controller.
|
275
265
|
if (ABCJS.midi.MidiWriter && this.mididiv) {
|
276
266
|
if (this.mididiv !== this.div)
|
@@ -642,7 +642,7 @@ window.ABCJS.parse.Parse = function() {
|
|
642
642
|
state = 'octave';
|
643
643
|
// At this point we have a valid note. The rest is optional. Set the duration in case we don't get one below
|
644
644
|
if (canHaveBrokenRhythm && multilineVars.next_note_duration !== 0) {
|
645
|
-
el.duration = multilineVars.next_note_duration;
|
645
|
+
el.duration = multilineVars.default_length * multilineVars.next_note_duration;
|
646
646
|
multilineVars.next_note_duration = 0;
|
647
647
|
durationSetByPreviousNote = true;
|
648
648
|
} else
|
@@ -681,7 +681,7 @@ window.ABCJS.parse.Parse = function() {
|
|
681
681
|
state = 'Zduration';
|
682
682
|
} else {
|
683
683
|
if (canHaveBrokenRhythm && multilineVars.next_note_duration !== 0) {
|
684
|
-
el.duration = multilineVars.next_note_duration;
|
684
|
+
el.duration = multilineVars.default_length * multilineVars.next_note_duration;
|
685
685
|
multilineVars.next_note_duration = 0;
|
686
686
|
durationSetByPreviousNote = true;
|
687
687
|
} else
|
@@ -704,7 +704,7 @@ window.ABCJS.parse.Parse = function() {
|
|
704
704
|
case '/':
|
705
705
|
if (state === 'octave' || state === 'duration') {
|
706
706
|
var fraction = tokenizer.getFraction(line, index);
|
707
|
-
if (!durationSetByPreviousNote)
|
707
|
+
//if (!durationSetByPreviousNote)
|
708
708
|
el.duration = el.duration * fraction.value;
|
709
709
|
// TODO-PER: We can test the returned duration here and give a warning if it isn't the one expected.
|
710
710
|
el.endChar = fraction.index;
|
@@ -772,7 +772,7 @@ window.ABCJS.parse.Parse = function() {
|
|
772
772
|
if (canHaveBrokenRhythm) {
|
773
773
|
var br2 = getBrokenRhythm(line, index);
|
774
774
|
index += br2[0] - 1; // index gets incremented below, so we'll let that happen
|
775
|
-
multilineVars.next_note_duration = br2[2]
|
775
|
+
multilineVars.next_note_duration = br2[2];
|
776
776
|
el.duration = br2[1]*el.duration;
|
777
777
|
state = 'end_slur';
|
778
778
|
} else {
|
@@ -902,13 +902,6 @@ window.ABCJS.parse.Parse = function() {
|
|
902
902
|
}
|
903
903
|
if (gracenotes.length)
|
904
904
|
return [gra[0], gracenotes];
|
905
|
-
// for (var ret = letter_to_pitch(gra[1], ii); ret[0]>0 && ii<gra[1].length;
|
906
|
-
// ret = letter_to_pitch(gra[1], ii)) {
|
907
|
-
// //todo get other stuff that could be in a grace note
|
908
|
-
// ii += ret[0];
|
909
|
-
// gracenotes.push({el_type:"gracenote",pitch:ret[1]});
|
910
|
-
// }
|
911
|
-
// return [ gra[0], gracenotes ];
|
912
905
|
}
|
913
906
|
return [ 0 ];
|
914
907
|
};
|
@@ -996,17 +989,11 @@ window.ABCJS.parse.Parse = function() {
|
|
996
989
|
|
997
990
|
// Start with the standard staff, clef and key symbols on each line
|
998
991
|
var delayStartNewLine = multilineVars.start_new_line;
|
999
|
-
// if (multilineVars.start_new_line) {
|
1000
|
-
// startNewLine();
|
1001
|
-
// }
|
1002
992
|
if (multilineVars.continueall === undefined)
|
1003
993
|
multilineVars.start_new_line = true;
|
1004
994
|
else
|
1005
995
|
multilineVars.start_new_line = false;
|
1006
996
|
var tripletNotesLeft = 0;
|
1007
|
-
//var tripletMultiplier = 0;
|
1008
|
-
// var inTie = false;
|
1009
|
-
// var inTieChord = {};
|
1010
997
|
|
1011
998
|
// See if the line starts with a header field
|
1012
999
|
var retHeader = header.letter_to_body_header(line, i);
|
@@ -1033,7 +1020,6 @@ window.ABCJS.parse.Parse = function() {
|
|
1033
1020
|
startNewLine();
|
1034
1021
|
delayStartNewLine = false;
|
1035
1022
|
}
|
1036
|
-
// var el = { };
|
1037
1023
|
|
1038
1024
|
// We need to decide if the following characters are a bar-marking or a note-group.
|
1039
1025
|
// Unfortunately, that is ambiguous. Both can contain chord symbols and decorations.
|
@@ -1194,6 +1180,7 @@ window.ABCJS.parse.Parse = function() {
|
|
1194
1180
|
|
1195
1181
|
// handle chords.
|
1196
1182
|
if (line.charAt(i) === '[') {
|
1183
|
+
var chordStartChar = i;
|
1197
1184
|
i++;
|
1198
1185
|
var chordDuration = null;
|
1199
1186
|
|
@@ -1232,9 +1219,6 @@ window.ABCJS.parse.Parse = function() {
|
|
1232
1219
|
|
1233
1220
|
if (multilineVars.next_note_duration !== 0) {
|
1234
1221
|
el.duration = el.duration * multilineVars.next_note_duration;
|
1235
|
-
// window.ABCJS.parse.each(el.pitches, function(p) {
|
1236
|
-
// p.duration = p.duration * multilineVars.next_note_duration;
|
1237
|
-
// });
|
1238
1222
|
multilineVars.next_note_duration = 0;
|
1239
1223
|
}
|
1240
1224
|
|
@@ -1250,11 +1234,6 @@ window.ABCJS.parse.Parse = function() {
|
|
1250
1234
|
}
|
1251
1235
|
}
|
1252
1236
|
|
1253
|
-
// if (el.startSlur !== undefined) {
|
1254
|
-
// window.ABCJS.parse.each(el.pitches, function(pitch) { if (pitch.startSlur === undefined) pitch.startSlur = el.startSlur; else pitch.startSlur += el.startSlur; });
|
1255
|
-
// delete el.startSlur;
|
1256
|
-
// }
|
1257
|
-
|
1258
1237
|
var postChordDone = false;
|
1259
1238
|
while (i < line.length && !postChordDone) {
|
1260
1239
|
switch (line.charAt(i)) {
|
@@ -1264,7 +1243,6 @@ window.ABCJS.parse.Parse = function() {
|
|
1264
1243
|
break;
|
1265
1244
|
case ')':
|
1266
1245
|
if (el.endSlur === undefined) el.endSlur = 1; else el.endSlur++;
|
1267
|
-
//window.ABCJS.parse.each(el.pitches, function(pitch) { if (pitch.endSlur === undefined) pitch.endSlur = 1; else pitch.endSlur++; });
|
1268
1246
|
break;
|
1269
1247
|
case '-':
|
1270
1248
|
window.ABCJS.parse.each(el.pitches, function(pitch) { pitch.startTie = {}; });
|
@@ -1275,7 +1253,10 @@ window.ABCJS.parse.Parse = function() {
|
|
1275
1253
|
var br2 = getBrokenRhythm(line, i);
|
1276
1254
|
i += br2[0] - 1; // index gets incremented below, so we'll let that happen
|
1277
1255
|
multilineVars.next_note_duration = br2[2];
|
1278
|
-
chordDuration
|
1256
|
+
if (chordDuration)
|
1257
|
+
chordDuration = chordDuration * br2[1];
|
1258
|
+
else
|
1259
|
+
chordDuration = br2[1];
|
1279
1260
|
break;
|
1280
1261
|
case '1':
|
1281
1262
|
case '2':
|
@@ -1290,7 +1271,7 @@ window.ABCJS.parse.Parse = function() {
|
|
1290
1271
|
var fraction = tokenizer.getFraction(line, i);
|
1291
1272
|
chordDuration = fraction.value;
|
1292
1273
|
i = fraction.index;
|
1293
|
-
if (line.charAt(i) === '-' || line.charAt(i) === ')')
|
1274
|
+
if (line.charAt(i) === '-' || line.charAt(i) === ')' || line.charAt(i) === ' ' || line.charAt(i) === '<' || line.charAt(i) === '>')
|
1294
1275
|
i--; // Subtracting one because one is automatically added below
|
1295
1276
|
else
|
1296
1277
|
postChordDone = true;
|
@@ -1309,16 +1290,13 @@ window.ABCJS.parse.Parse = function() {
|
|
1309
1290
|
if (el.pitches !== undefined) {
|
1310
1291
|
if (chordDuration !== null) {
|
1311
1292
|
el.duration = el.duration * chordDuration;
|
1312
|
-
// window.ABCJS.parse.each(el.pitches, function(p) {
|
1313
|
-
// p.duration = p.duration * chordDuration;
|
1314
|
-
// });
|
1315
1293
|
}
|
1316
1294
|
if (multilineVars.barNumOnNextNote) {
|
1317
1295
|
el.barNumber = multilineVars.barNumOnNextNote;
|
1318
1296
|
multilineVars.barNumOnNextNote = null;
|
1319
1297
|
}
|
1320
1298
|
multilineVars.addFormattingOptions(el, tune.formatting, 'note');
|
1321
|
-
tune.appendElement('note', startOfLine+
|
1299
|
+
tune.appendElement('note', startOfLine+chordStartChar, startOfLine+i, el);
|
1322
1300
|
multilineVars.measureNotEmpty = true;
|
1323
1301
|
el = {};
|
1324
1302
|
}
|
@@ -1348,7 +1326,6 @@ window.ABCJS.parse.Parse = function() {
|
|
1348
1326
|
if (core.endSlur !== undefined) el.endSlur = core.endSlur;
|
1349
1327
|
if (core.endTie !== undefined) el.rest.endTie = core.endTie;
|
1350
1328
|
if (core.startSlur !== undefined) el.startSlur = core.startSlur;
|
1351
|
-
//if (el.startSlur !== undefined) el.startSlur = el.startSlur;
|
1352
1329
|
if (core.startTie !== undefined) el.rest.startTie = core.startTie;
|
1353
1330
|
if (el.startTie !== undefined) el.rest.startTie = el.startTie;
|
1354
1331
|
}
|
@@ -1400,7 +1377,6 @@ window.ABCJS.parse.Parse = function() {
|
|
1400
1377
|
if (i === startI) { // don't know what this is, so ignore it.
|
1401
1378
|
if (line.charAt(i) !== ' ' && line.charAt(i) !== '`')
|
1402
1379
|
warn("Unknown character ignored", line, i);
|
1403
|
-
// warn("Unknown character ignored (" + line.charCodeAt(i) + ")", line, i);
|
1404
1380
|
i++;
|
1405
1381
|
}
|
1406
1382
|
}
|
@@ -34,10 +34,7 @@ window.ABCJS.parse.parseDirective = {};
|
|
34
34
|
multilineVars.vocalfont = { face: "\"Times New Roman\"", size: 13, weight: "bold", style: "normal", decoration: "none" };
|
35
35
|
multilineVars.wordsfont = { face: "\"Times New Roman\"", size: 16, weight: "normal", style: "normal", decoration: "none" };
|
36
36
|
|
37
|
-
<<<<<<< HEAD
|
38
37
|
// These fonts are global for the entire tune.
|
39
|
-
=======
|
40
|
-
>>>>>>> origin/master
|
41
38
|
tune.formatting.composerfont = { face: "\"Times New Roman\"", size: 14, weight: "normal", style: "italic", decoration: "none" };
|
42
39
|
tune.formatting.subtitlefont = { face: "\"Times New Roman\"", size: 16, weight: "normal", style: "normal", decoration: "none" };
|
43
40
|
tune.formatting.tempofont = { face: "\"Times New Roman\"", size: 15, weight: "bold", style: "normal", decoration: "none" };
|
@@ -45,7 +42,6 @@ window.ABCJS.parse.parseDirective = {};
|
|
45
42
|
tune.formatting.footerfont = { face: "\"Times New Roman\"", size: 12, weight: "normal", style: "normal", decoration: "none" };
|
46
43
|
tune.formatting.headerfont = { face: "\"Times New Roman\"", size: 12, weight: "normal", style: "normal", decoration: "none" };
|
47
44
|
tune.formatting.voicefont = { face: "\"Times New Roman\"", size: 13, weight: "bold", style: "normal", decoration: "none" };
|
48
|
-
<<<<<<< HEAD
|
49
45
|
|
50
46
|
// these are the default fonts for these element types. In the printer, these fonts might change as the tune progresses.
|
51
47
|
tune.formatting.annotationfont = multilineVars.annotationfont;
|
@@ -58,8 +54,6 @@ window.ABCJS.parse.parseDirective = {};
|
|
58
54
|
tune.formatting.textfont = multilineVars.textfont;
|
59
55
|
tune.formatting.vocalfont = multilineVars.vocalfont;
|
60
56
|
tune.formatting.wordsfont = multilineVars.wordsfont;
|
61
|
-
=======
|
62
|
-
>>>>>>> origin/master
|
63
57
|
}
|
64
58
|
|
65
59
|
var fontTypeCanHaveBox = { gchordfont: true, measurefont: true, partsfont: true };
|
@@ -283,13 +277,8 @@ window.ABCJS.parse.parseDirective = {};
|
|
283
277
|
if (!currentSetting) {
|
284
278
|
warn("Must specify the size of the font since there is no default value.", str, position);
|
285
279
|
size = 12;
|
286
|
-
<<<<<<< HEAD
|
287
280
|
} else
|
288
281
|
size = currentSetting.size;
|
289
|
-
=======
|
290
|
-
}
|
291
|
-
size = currentSetting.size;
|
292
|
-
>>>>>>> origin/master
|
293
282
|
} else
|
294
283
|
size = parseFloat(size);
|
295
284
|
|
@@ -320,6 +309,8 @@ window.ABCJS.parse.parseDirective = {};
|
|
320
309
|
if (tokens.length === 0)
|
321
310
|
return "Directive \"" + cmd + "\" requires a font as a parameter.";
|
322
311
|
multilineVars[cmd] = getFontParameter(tokens, multilineVars[cmd], str, 0, cmd);
|
312
|
+
if (multilineVars.is_in_header) // If the font appears in the header, then it becomes the default font.
|
313
|
+
tune.formatting[cmd] = multilineVars[cmd];
|
323
314
|
return null;
|
324
315
|
};
|
325
316
|
var getGlobalFont = function(cmd, tokens, str) {
|
@@ -372,7 +363,6 @@ window.ABCJS.parse.parseDirective = {};
|
|
372
363
|
if (str !== null) return str;
|
373
364
|
multilineVars[key] = (multilineVars[key] === 1);
|
374
365
|
return null;
|
375
|
-
<<<<<<< HEAD
|
376
366
|
};
|
377
367
|
|
378
368
|
var addMultilineVarOneParamChoice = function(key, cmd, tokens, choices) {
|
@@ -388,8 +378,6 @@ window.ABCJS.parse.parseDirective = {};
|
|
388
378
|
return "Directive \"" + cmd + "\" requires one of [ " + choices.join(", ") + " ] as a parameter.";
|
389
379
|
multilineVars[key] = choice;
|
390
380
|
return null;
|
391
|
-
=======
|
392
|
-
>>>>>>> origin/master
|
393
381
|
};
|
394
382
|
|
395
383
|
window.ABCJS.parse.parseDirective.parseFontChangeLine = function(textstr) {
|
@@ -455,10 +443,6 @@ window.ABCJS.parse.parseDirective = {};
|
|
455
443
|
// straightflags: { type: "boolean", optional: true },
|
456
444
|
// stretchstaff: { type: "boolean", optional: true },
|
457
445
|
// titleformat: { type: "string", optional: true },
|
458
|
-
<<<<<<< HEAD
|
459
|
-
=======
|
460
|
-
// vocalabove: { type: "boolean", optional: true },
|
461
|
-
>>>>>>> origin/master
|
462
446
|
case "bagpipes":tune.formatting.bagpipes = true;break;
|
463
447
|
case "landscape":multilineVars.landscape = true;break;
|
464
448
|
case "papersize":multilineVars.papersize = restOfString;break;
|
@@ -105,6 +105,15 @@ ABCJS.write.AbsoluteElement.prototype.addRight = function (right) {
|
|
105
105
|
this.addChild(right);
|
106
106
|
};
|
107
107
|
|
108
|
+
ABCJS.write.AbsoluteElement.prototype.addCentered = function (elem) {
|
109
|
+
var half = elem.w/2;
|
110
|
+
if (-half<this.extraw) this.extraw = -half;
|
111
|
+
this.extra[this.extra.length] = elem;
|
112
|
+
if (elem.dx+half>this.w) this.w = elem.dx+half;
|
113
|
+
this.right[this.right.length] = elem;
|
114
|
+
this.addChild(elem);
|
115
|
+
};
|
116
|
+
|
108
117
|
ABCJS.write.AbsoluteElement.prototype.setLimit = function(member, child) {
|
109
118
|
if (!child[member]) return;
|
110
119
|
if (!this.specialY[member])
|
@@ -150,29 +159,22 @@ ABCJS.write.AbsoluteElement.prototype.pushBottom = function (bottom) {
|
|
150
159
|
}
|
151
160
|
};
|
152
161
|
|
153
|
-
<<<<<<< HEAD
|
154
162
|
ABCJS.write.AbsoluteElement.prototype.setX = function (x) {
|
155
163
|
this.x = x;
|
156
164
|
for (var i=0; i<this.children.length; i++)
|
157
165
|
this.children[i].setX(x);
|
158
166
|
};
|
159
167
|
|
160
|
-
=======
|
161
|
-
>>>>>>> origin/master
|
162
168
|
ABCJS.write.AbsoluteElement.prototype.draw = function (renderer, bartop) {
|
163
169
|
this.elemset = renderer.paper.set();
|
164
170
|
if (this.invisible) return;
|
165
171
|
renderer.beginGroup();
|
166
172
|
for (var i=0; i<this.children.length; i++) {
|
167
|
-
<<<<<<< HEAD
|
168
173
|
if (ABCJS.write.debugPlacement) {
|
169
174
|
if (this.children[i].klass === 'ornament')
|
170
175
|
renderer.printShadedBox(this.x, renderer.calcY(this.children[i].top), this.w, renderer.calcY(this.children[i].bottom)-renderer.calcY(this.children[i].top), "rgba(0,0,200,0.3)");
|
171
176
|
}
|
172
177
|
this.elemset.push(this.children[i].draw(renderer,bartop));
|
173
|
-
=======
|
174
|
-
this.elemset.push(this.children[i].draw(renderer,this.x, bartop));
|
175
|
-
>>>>>>> origin/master
|
176
178
|
}
|
177
179
|
this.elemset.push(renderer.endGroup(this.type));
|
178
180
|
if (this.klass)
|
@@ -180,7 +182,6 @@ ABCJS.write.AbsoluteElement.prototype.draw = function (renderer, bartop) {
|
|
180
182
|
var color = ABCJS.write.debugPlacement ? "rgba(0,0,0,0.3)" : "rgba(0,0,0,0)"; // Create transparent box that encompasses the element, and not so transparent to debug it.
|
181
183
|
var target = renderer.printShadedBox(this.x, renderer.calcY(this.top), this.w, renderer.calcY(this.bottom)-renderer.calcY(this.top), color);
|
182
184
|
var self = this;
|
183
|
-
<<<<<<< HEAD
|
184
185
|
var controller = renderer.controller;
|
185
186
|
// this.elemset.mouseup(function () {
|
186
187
|
target.mouseup(function () {
|
@@ -189,14 +190,6 @@ ABCJS.write.AbsoluteElement.prototype.draw = function (renderer, bartop) {
|
|
189
190
|
this.abcelem.abselem = this;
|
190
191
|
|
191
192
|
var spacing = ABCJS.write.spacing.STEP;
|
192
|
-
=======
|
193
|
-
this.elemset.mouseup(function () {
|
194
|
-
renderer.notifySelect(self);
|
195
|
-
});
|
196
|
-
this.abcelem.abselem = this;
|
197
|
-
|
198
|
-
var spacing = ABCJS.write.spacing.STEP*renderer.scale;
|
199
|
-
>>>>>>> origin/master
|
200
193
|
|
201
194
|
var start = function () {
|
202
195
|
// storing original relative coordinates
|
@@ -210,7 +203,6 @@ ABCJS.write.AbsoluteElement.prototype.draw = function (renderer, bartop) {
|
|
210
203
|
this.translate(0,this.dy);
|
211
204
|
},
|
212
205
|
up = function () {
|
213
|
-
<<<<<<< HEAD
|
214
206
|
if (self.abcelem.pitches) {
|
215
207
|
var delta = -Math.round(this.dy / spacing);
|
216
208
|
self.abcelem.pitches[0].pitch += delta;
|
@@ -219,14 +211,6 @@ ABCJS.write.AbsoluteElement.prototype.draw = function (renderer, bartop) {
|
|
219
211
|
}
|
220
212
|
};
|
221
213
|
if (this.abcelem.el_type==="note" && controller.editable)
|
222
|
-
=======
|
223
|
-
var delta = -Math.round(this.dy/spacing);
|
224
|
-
self.abcelem.pitches[0].pitch += delta;
|
225
|
-
self.abcelem.pitches[0].verticalPos += delta;
|
226
|
-
renderer.notifyChange();
|
227
|
-
};
|
228
|
-
if (this.abcelem.el_type==="note" && renderer.editable)
|
229
|
-
>>>>>>> origin/master
|
230
214
|
this.elemset.drag(move, start, up);
|
231
215
|
};
|
232
216
|
|