TIANYONG 3 months ago
parent
commit
46531b07dd

+ 1 - 1
osmd-extended

@@ -1 +1 @@
-Subproject commit 46bdba03a3654e74d0ad2bd61e993a2467d0f80e
+Subproject commit 2692703cac7823ace1b04e8923c5eb4648d2b72e

+ 2 - 2
src/helpers/formateMusic.ts

@@ -869,7 +869,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 		if (state.isCombineRender) {
 			iterator.currentVoiceEntries = iterator.currentVoiceEntries.filter((item: any) => {
 				const trackName = state.isEvxml && state.evxmlAddPartName ? item.parentVoice.parent.IdString || '' : item.parentVoice.parent.Name || '';
-				return trackName === firstTrackName
+				return trackName?.trim() === firstTrackName
 			});
 		}
 		let minIndex = 0, elRealValue = 0
@@ -1039,7 +1039,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			
 			// 合并展示某些分轨,需要把展示的分轨筛选出来
 			if (state.isCombineRender && note.sourceMeasure.verticalMeasureList.length) {
-				note.sourceMeasure.verticalMeasureList = note.sourceMeasure?.verticalMeasureList.filter((item: any) => state.canSelectTracks.includes(item?.parentStaff?.parentInstrument.Name))
+				note.sourceMeasure.verticalMeasureList = note.sourceMeasure?.verticalMeasureList.filter((item: any) => state.canSelectTracks.includes(item?.parentStaff?.parentInstrument.Name?.trim()))
 			}
 
 			activeVerticalMeasureList = [note.sourceMeasure?.verticalMeasureList?.[0]] || [];

+ 1 - 1
src/page-instrument/view-product-img/index.tsx

@@ -115,7 +115,7 @@ export default defineComponent({
 			<div class={styles.detail}>
 				<div id="scrollContainer" class={[styles.container, "hideCursor"]}>
 					{/* 曲谱渲染 */}
-					{!detailData.isLoading && <MusicScore renderTypeKey={productRenderType} showSelection={false} onRendered={handleRendered} />}
+					{!detailData.isLoading && <MusicScore renderTypeKey={productRenderType} showSelection={false} isDownXml={true} onRendered={handleRendered} />}
 				</div>
 			</div>
 		);

+ 10 - 1
src/view/music-score/index.tsx

@@ -61,6 +61,11 @@ export default defineComponent({
 			type: Boolean,
 			default: false,
 		},
+		/** 是否是下载曲谱模式 */
+		isDownXml: {
+			type: Boolean,
+			default: false,
+		},		
 	},
 	setup(props, { emit, slots, expose }) {
 		const query: any = getQuery();
@@ -164,9 +169,13 @@ export default defineComponent({
 			if (!state.isSimplePage && state.isCombineRender) {
 				for (let i = 0; i < osmd.Sheet.Instruments.length; i++) {
 					const trackName = state.isEvxml && state.evxmlAddPartName ? osmd.Sheet.Instruments[i].idString || '' : osmd.Sheet.Instruments[i].Name || '';
-					osmd.Sheet.Instruments[i].Visible = state.canSelectTracks.includes(trackName)
+					osmd.Sheet.Instruments[i].Visible = state.canSelectTracks.includes(trackName.trim())
 				  }
 			}
+			// 下载图片改为A4纸尺寸,因为会和曲谱标题合成一张图片,所以尺寸的高度需要缩小,1123-1065
+			// if (props.isDownXml) {
+			// 	osmd.setPageFormat('794x1065')
+			// }
 			osmd.zoom = state.zoom;
 			osmd.render();
 			console.log("🚀 ~ osmd:", osmd)

+ 21 - 2
src/view/plugins/move-music-score/index.tsx

@@ -219,6 +219,12 @@ export const filterMoveData = async () => {
 				};
 				if (n.type === "vf-lineGroup") {
 					item.dx = n.dx;
+					// 需要获取当前渐强渐弱线所对应的小节的宽度,算出相对当前宽度的比例,用于不同设备回显用
+					const measureNum = document.getElementById(n.id)?.getAttribute('data-mnum');
+					const measureWidth = measureNum ? document.querySelector(`g[data-num='${measureNum}']`)?.getBoundingClientRect()?.width : 0;
+					if (measureWidth) {
+						item.dxRate = n.dx / measureWidth;
+					}
 				}
 				if (n.id.includes('text')) {
 					// let copyDom = document.querySelector("#" + n.id)!.cloneNode(true) as SVGSVGElement
@@ -405,6 +411,7 @@ const resetMoveNote = () => {
 		moveData.modelList[i].isMove = false;
 		moveData.modelList[i].isDelete = false;
 		moveData.modelList[i].dx = 0;
+		moveData.modelList[i].dxRate = 0;
 		renderSvgItem(moveData.modelList[i]);
 		if (moveData.modelList[i].type === "vf-lineGroup") {
 			renderLineGroup(moveData.modelList[i]);
@@ -476,10 +483,22 @@ function renderLineGroup(lineGroup: any) {
 				dx2 = dx2[0] && !isNaN(Number(dx2[0])) ? Number(dx2[0]) : 0;
 
 				if (dx1 && dx2) {
+					// 根据dxRate比例转换dx
+					let targetDx = lineGroup.dx;
+					if (lineGroup.dxRate) {
+						// 需要获取当前渐强渐弱线所对应的小节的宽度,算出相对当前宽度的比例,用于不同设备回显用
+						const measureNum = document.getElementById(lineGroup.id)?.getAttribute('data-mnum');
+						const measureWidth = measureNum ? document.querySelector(`g[data-num='${measureNum}']`)?.getBoundingClientRect()?.width : 0;
+						targetDx = measureWidth ? measureWidth * lineGroup.dxRate : lineGroup.dx;
+					}
+					// targetDx = targetDx * state.zoom;
+					if (!state.isCbsView) {
+						targetDx = targetDx * state.zoom;
+					}
 					if (dx1 < dx2) {
-						d = d.replace(dx2, lineGroup.d2 + lineGroup.dx + "");
+						d = d.replace(dx2, lineGroup.d2 + targetDx + "");
 					} else {
-						d = d.replace(dx1, lineGroup.d2 + lineGroup.dx + "");
+						d = d.replace(dx1, lineGroup.d2 + targetDx + "");
 					}
 					path.setAttribute("d", d);
 				}

+ 1 - 1
src/view/transfer-to-img/index.tsx

@@ -127,7 +127,7 @@ export default defineComponent({
 			<div class={styles.detail}>
 				<div id="scrollContainer" class={[styles.container, "hideCursor"]}>
 					{/* 曲谱渲染 */}
-					{!detailData.isLoading && <MusicScore renderTypeKey={productRenderType} showSelection={false} onRendered={handleRendered} />}
+					{!detailData.isLoading && <MusicScore renderTypeKey={productRenderType} showSelection={false} isDownXml={true} onRendered={handleRendered} />}
 				</div>
 			</div>
 		);