Skip to content
GitLab Next
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Menu
    Projects Groups Snippets
  • Get a free trial
  • Sign up
  • Login
  • Sign in / Register
  • LilyPond LilyPond
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 1,012
    • Issues 1,012
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 18
    • Merge requests 18
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • LilyPond
  • LilyPondLilyPond
  • Merge requests
  • !1030

Make user tweaks to line spanner Y positions relative to relevant group

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Jean Abou Samra requested to merge jeanas/lilypond:line-spanners into master Nov 26, 2021
  • Overview 14
  • Commits 1
  • Pipelines 6
  • Changes 6

For example, the value of an adjustment to VoiceFollower.bound-details.left.Y is relative to the start note's staff, not to the end note's one.

This requires some work. The basic problem is that for this to work we need the line spanner to compute its own coordinate relative to the chosen refpoint. This does not work for line spanners that are side-positioned, such as DynamicTextSpanner: their coordinate depends on their very stencil (side positioning is skyline-based). That's logical: if the Y positions are already fixed relative to the staff, it does not make sense to side-position afterwards. In general, there are a number of differences in handling between horizontal line spanners, such as TextSpanner, DynamicTextSpanner, etc., and non-horizontal line spanners, like Glissando, FingerGlideSpanner and VoiceFollower. This takes the stance of being explicit and introduces a horizontal-line-spanner-interface, which is a subset of the line-spanner-interface. Horizontal line spanners now use callbacks from this interface to compute bound info. These callbacks don't try to calculate Y values. This also obviates having to set Y to 0 in bound-details for horizontal line spanners. The repartition of the feature set is that while horizontal line spanners can be side-positioned, the non-horizontal ones can have their Y positions computed automatically.

In the future, the horizontal-line-spanner-interface may prove useful for smarter cross-staff handling.

Closes #5229 (closed)

Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: line-spanners