39 using std::unique_ptr;
46 cloneChain (
const unique_ptr<LocatingPin>& chain)
51 return chain->clone();
59 : next_(cloneChain (other.next_))
73 LocatingPin::clone ()
const 84 REQUIRE (!newLp->
next_,
"can insert only single LocatingPins");
87 return next_->addChain (newLp);
90 unique_ptr<LocatingPin> tmp_next (newLp);
91 tmp_next->next_.swap(
next_);
108 const LocatingPin::SolutionData
113 return SolutionData (solution.
getTime(), solution.getPipe());
117 LocatingPin::isOverdetermined ()
const 121 return solution.is_impossible();
129 if (!solution.still_to_solve())
131 this->intersect (solution);
132 if (
next_ && solution.still_to_solve())
133 next_->resolve(solution);
140 REQUIRE (solution.still_to_solve());
158 LocatingPin::LocatingSolution::getPipe()
160 TODO (
"implement Placement LocatingSolution");
166 LocatingPin::LocatingSolution::is_definite()
168 return (minTime == maxTime && minTrack == maxTrack);
172 LocatingPin::LocatingSolution::is_impossible()
174 if (minTime > maxTime) impo =
true;
180 LocatingPin::LocatingSolution::still_to_solve ()
182 return not (is_definite() or is_impossible());
195 LocatingPin::operator() (
Time start,
Fork track)
203 LocatingPin::operator() (
PlaRef& refObj,
Offset const& offset)
Core abstraction: placement of a media object into session context.
const SolutionData resolve() const
implementing the core Placement functionality.
std::unique_ptr< LocatingPin > next_
next additional Pin, if any
Core abstraction of the Session model: a media object.
Positioning specification, possibly chained to further specifications.
Steam-Layer implementation namespace root.
Implementing the Placement mechanics.
Namespace of Session and user visible high-level objects.
Lumiera's internal time value datatype.
The most common case of positioning a MObject in the Session: directly specifying a constant position...
static PPipe query(string const &properties)
convenience shortcut for retrieving default configured pipes
Specialised LocatingPin for use in Placement, especially for globally fixed positions The FixedLocati...
LocatingPin & addChain(LocatingPin *)
Offset measures a distance in time.
virtual int getPrioLevel() const
order to consider when resolving.
Time getTime()
get some time value which could stand in for this solution.