helpers.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // @ts-ignore
  2. import { OpenSheetMusicDisplay } from '/osmd-extended/src'
  3. import detailState from '/src/pages/detail/state'
  4. import event from '/src/components/music-score/event'
  5. /**
  6. * 音符点击事件
  7. */
  8. export const noteClickEvent = (evt: Event): void => {
  9. event.emit('container-click', evt)
  10. const path = (evt as any).path || (evt.composedPath && evt.composedPath())
  11. for (const el of path) {
  12. if (el.classList && el.classList.contains('vf-stavenote')) {
  13. event.emit('click', evt, el)
  14. }
  15. }
  16. }
  17. export const setEngravingRules = (osmd: OpenSheetMusicDisplay) => {
  18. // osmd.EngravingRules.UseJustifiedBuilder = false
  19. osmd.EngravingRules.CompactMode = true // 页面顶部底部间距
  20. // osmd.EngravingRules.DYSlursStartingAtSameStaffEntryYOffset = 2
  21. osmd.EngravingRules.DYMinNoteWidth = 3
  22. // osmd.EngravingRules.WedgePlacementBelowY = 4
  23. // osmd.EngravingRules.LyricUnderscoreLineWidth = 0.12 // 1------ 线粗细
  24. osmd.EngravingRules.VoiceSpacingMultiplierVexflow = 0.65
  25. osmd.EngravingRules.VoiceSpacingAddendVexflow = 2.0
  26. // tight rendering mode, lower margins and safety distances between systems, staffs etc. may cause overlap.
  27. // these options can afterwards be finetuned by setting osmd.rules.BetweenStaffDistance for example
  28. osmd.EngravingRules.MinSkyBottomDistBetweenStaves = 2.0 // default 1.0. this can cause collisions with slurs and dynamics sometimes
  29. osmd.EngravingRules.MinSkyBottomDistBetweenSystems = 2.0 // default 5.0
  30. // note that osmd.EngravingRules === osmd.rules, since it's passed as a reference
  31. osmd.EngravingRules.MinimumStaffLineDistance = 4.0
  32. osmd.EngravingRules.BetweenStaffDistance = 2.5
  33. osmd.EngravingRules.StaffDistance = 3.5
  34. osmd.EngravingRules.MinimumDistanceBetweenSystems = 1
  35. // osmd.EngravingRules.PageTopMargin = 0.0; // see osmd.EngravingRules.PageTopMarginNarrow used in compact mode
  36. osmd.EngravingRules.PageBottomMargin = 0.0
  37. osmd.EngravingRules.PageLeftMargin = 2.0
  38. osmd.EngravingRules.PageRightMargin = 2.0
  39. osmd.EngravingRules.PageTopMarginNarrow = 3.0
  40. osmd.EngravingRules.WedgeEndDistanceBetweenTimestampsFactor = 1
  41. osmd.EngravingRules.RehearsalMarkXOffset = -18
  42. osmd.EngravingRules.RehearsalMarkYOffset = 10
  43. osmd.EngravingRules.DYWorkId = detailState.activeDetail?.parentCategoriesId || 0
  44. }