- class neoscore.core.spanner.Spanner
Mixin for a
PositionedObjectwith starting and ending anchors.
If the spanner is in a
Flowable, the endpoint must be in the same one. Likewise, if the spanner is not in one, the endpoint must not be in one either.
This mixin only provides a common interface for ending anchors. The starting position of this spanner should be the main object’s
PositionedObject.pos, and the starting anchor should be its
PositionedObject.parent. It is up to the implementing class to decide how to use this information.
Spanners are horizontal relative to their starting anchor. Arbitrary end-y positions can be set with
Implementations should be careful to declare
Spanneras a superclass before
PositionedObjector any inheritors of it. This is necessary in order to get the correct method resolution order for custom
PositionedObjectbehavior provided by this class - namely
- __init__(end_x: Unit, end_parent: PositionedObject)
end_x – The X position of the endpoint.
end_parent – The parent of the endpoint.
end_xwill be relative to this object. This can be the spanner itself to make it relative to the starting point.
The y position of the endpoint.
This value is automatically computed such that the spanner is horizontal.
The x-axis length of the spanner.
- property breakable_length: Unit
Spanners are breakable over their
Note that in order for this implementation to take effect on concrete spanners,
Spannermust be declared as a superclass before
PositionedObjector any other class that implements
- point_along_spanner(ratio: float) Point
Find the point on the spanner at a given 0-1 ratio along it.
For example, a ratio of
0.5will give the point half-way along the spanner.
The returned point will be relative to the starting point.
ratio – A value representing progress along the spanner, where 0 is at the start and 1 is at the end. Values outside these bounds will give a point as if the spanner extended to infinity.