VexFlow - Copyright (c) Mohit Muthanna 2010.
A base class for stave modifiers (e.g. clefs, key signatures)
import { Element } from './element';
export class StaveModifier extends Element {
static get Position() {
return {
LEFT: 1,
RIGHT: 2,
ABOVE: 3,
BELOW: 4,
BEGIN: 5,
END: 6,
};
}
constructor() {
super();
this.attrs.type = 'StaveModifier';
this.padding = 10;
this.position = StaveModifier.Position.ABOVE;
}
getPosition() { return this.position; }
setPosition(position) { this.position = position; return this; }
getStave() { return this.stave; }
setStave(stave) { this.stave = stave; return this; }
getWidth() { return this.width; }
setWidth(width) { this.width = width; return this; }
getX() { return this.x; }
setX(x) { this.x = x; return this; }
getCategory() { return ''; }
makeSpacer(padding) {
TODO(0xfe): Return an instance of type Spacer
based on GhostNote
instead of this hack.
return {
getContext() { return true; },
setStave() {},
renderToStave() {},
getMetrics() {
return { width: padding };
},
};
}
placeGlyphOnLine(glyph, stave, line) {
glyph.setYShift(stave.getYForLine(line) - stave.getYForGlyphs());
}
getPadding(index) {
return (index !== undefined && index < 2 ? 0 : this.padding);
}
setPadding(padding) { this.padding = padding; return this; }
}