30 using std::unique_ptr;
37 cloneChain (
const unique_ptr<LocatingPin>& chain)
42 return chain->clone();
50 : next_(cloneChain (other.next_))
64 LocatingPin::clone ()
const 75 REQUIRE (!newLp->
next_,
"can insert only single LocatingPins");
78 return next_->addChain (newLp);
81 unique_ptr<LocatingPin> tmp_next (newLp);
82 tmp_next->next_.swap(
next_);
99 const LocatingPin::SolutionData
104 return SolutionData (solution.
getTime(), solution.getPipe());
108 LocatingPin::isOverdetermined ()
const 112 return solution.is_impossible();
120 if (!solution.still_to_solve())
122 this->intersect (solution);
123 if (
next_ && solution.still_to_solve())
124 next_->resolve(solution);
131 REQUIRE (solution.still_to_solve());
149 LocatingPin::LocatingSolution::getPipe()
151 TODO (
"implement Placement LocatingSolution");
157 LocatingPin::LocatingSolution::is_definite()
159 return (minTime == maxTime && minTrack == maxTrack);
163 LocatingPin::LocatingSolution::is_impossible()
165 if (minTime > maxTime) impo =
true;
171 LocatingPin::LocatingSolution::still_to_solve ()
173 return not (is_definite() or is_impossible());
186 LocatingPin::operator() (
Time start,
Fork track)
194 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.