|
@@ -89,6 +89,25 @@ export default defineComponent({
|
|
|
state.gradual = getGradualLengthByXml(xml);
|
|
|
}
|
|
|
};
|
|
|
+ // 一行谱模式,创建固定的光标
|
|
|
+ const createFixedCursor = () => {
|
|
|
+ if (!state.isSingleLine) return;
|
|
|
+ // const svg: any = document.getElementById("osmdSvgPage1");
|
|
|
+ // state.osmdSvgDom = svg;
|
|
|
+ const scrollDom = document.getElementById("musicAndSelection");
|
|
|
+ const cursorDom = document.getElementById("cursorImg-0");
|
|
|
+ state.fistNoteLeft = cursorDom?.getBoundingClientRect()?.left || 0;
|
|
|
+ state.osdmScrollDom = scrollDom;
|
|
|
+ state.cursorDom = cursorDom;
|
|
|
+ let copyCursor: any = cursorDom?.cloneNode(true);
|
|
|
+ if (copyCursor) {
|
|
|
+ copyCursor.setAttribute('id','cursor-copy');
|
|
|
+ copyCursor.style.position = 'sticky';
|
|
|
+ copyCursor.style.zIndex = '2';
|
|
|
+ copyCursor.style.background = 'red';
|
|
|
+ copyCursor && scrollDom?.appendChild(copyCursor);
|
|
|
+ }
|
|
|
+ }
|
|
|
const init = async () => {
|
|
|
const container = document.getElementById("musicAndSelection");
|
|
|
if (!container || !musicData.score) return;
|
|
@@ -102,7 +121,7 @@ export default defineComponent({
|
|
|
drawPartNames: props.showPartNames, // 是否渲染声轨名称
|
|
|
drawComposer: false, // 渲染作者
|
|
|
defaultColorMusic: props.musicColor, // 颜色
|
|
|
- // renderSingleHorizontalStaffline: true,
|
|
|
+ renderSingleHorizontalStaffline: state.isSingleLine ? true : false,
|
|
|
// pageFormat: 'A4_P',
|
|
|
// autoBeam: true,
|
|
|
// drawMetronomeMarks: false,
|
|
@@ -111,7 +130,7 @@ export default defineComponent({
|
|
|
|
|
|
});
|
|
|
// osmd.EngravingRules.CompactMode = true // 紧凑模式
|
|
|
- osmd.EngravingRules.PageRightMargin = 2;
|
|
|
+ osmd.EngravingRules.PageRightMargin = state.isSingleLine ? (window.innerWidth+100)/10 : 2;
|
|
|
osmd.EngravingRules.PageTopMargin = 10;
|
|
|
osmd.EngravingRules.PageTopMarginNarrow = 3;
|
|
|
osmd.EngravingRules.PageLeftMargin = 2;
|
|
@@ -128,11 +147,8 @@ export default defineComponent({
|
|
|
await osmd.load(musicData.score);
|
|
|
osmd.zoom = state.zoom;
|
|
|
osmd.render();
|
|
|
- // const svg: any = document.getElementById("osmdSvgPage1");
|
|
|
- // state.osmdSvgDom = svg;
|
|
|
- const scrollDom = document.getElementById("musicAndSelection");
|
|
|
- state.osdmScrollDom = scrollDom;
|
|
|
- // console.log("🚀 ~ osmd:", osmd, svg)
|
|
|
+ createFixedCursor();
|
|
|
+ // console.log("🚀 ~ osmd:", osmd)
|
|
|
emit("rendered", osmd);
|
|
|
resetFormate();
|
|
|
resetGivenFormate();
|