|
@@ -236,6 +236,38 @@ export const moveGracePosition = (needTrans?: boolean) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 处理一行谱高度太高的问题
|
|
|
+export const limitSingleSvgPageHeight = () => {
|
|
|
+ if (state.isSingleLine && !state.isCombineRender) {
|
|
|
+ // 获取生成的 SVG 元素
|
|
|
+ const osmdSvgPage = document.getElementById('osmdSvgPage1');
|
|
|
+ if (osmdSvgPage) {
|
|
|
+ // 获取当前的 viewBox 值
|
|
|
+ const viewBox = osmdSvgPage.getAttribute('viewBox');
|
|
|
+ if (viewBox) {
|
|
|
+ // 分割 viewBox 的值,viewBox 形式为 "min-x min-y width height"
|
|
|
+ const viewBoxValues = viewBox.split(' ');
|
|
|
+ // 修改 viewBox 高度
|
|
|
+ const newHeight = 300;
|
|
|
+ const staffHeight = osmdSvgPage.querySelector('.staffline')?.getBoundingClientRect()?.height;
|
|
|
+ if (viewBoxValues[3] > 300 && staffHeight && staffHeight < 240) {
|
|
|
+ const originY = state.isSimplePage ? 0 : 0.25;
|
|
|
+ let transY = (240 - staffHeight * state.zoom) / staffHeight;
|
|
|
+ transY = state.isSimplePage ? transY / 2 : transY;
|
|
|
+ const realY = (originY + transY) * 100 + '%';
|
|
|
+ viewBoxValues[3] = newHeight; // 这是第四个值,代表高度
|
|
|
+ // 设置新的 viewBox 值
|
|
|
+ osmdSvgPage.setAttribute('viewBox', viewBoxValues.join(' '));
|
|
|
+ osmdSvgPage.setAttribute('height','240');
|
|
|
+ // @ts-ignore
|
|
|
+ osmdSvgPage.querySelector('.staffline').style.transform = `translateY(-${realY})`
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
// 谱面优化
|
|
|
export const resetFormate = () => {
|
|
|
container.value = document.getElementById('scrollContainer')
|
|
@@ -594,7 +626,7 @@ const transSinglePage = () => {
|
|
|
if (state.isSingleLine && !state.isSimplePage) {
|
|
|
const svgPage = document?.getElementById('osmdSvgPage1')?.getBoundingClientRect();
|
|
|
const staffLine = document?.querySelector('.staffline')?.getBoundingClientRect();
|
|
|
- if (svgPage && staffLine && svgPage.height > 200 && state.platform !== 'PC') {
|
|
|
+ if (svgPage && staffLine && svgPage.height > 200) {
|
|
|
// 需要上移的距离
|
|
|
// console.log('need',svgPage.height,staffLine.height)
|
|
|
const rate = svgPage.height > 400 ? 1.2 : 2;
|