76 throw error::Logic (
"mutating the start point of a pure Duration doesn't make sense"
77 , LUMIERA_ERROR_INVALID_MUTATION);
133 throw error::Logic (
"mutating the duration of a (quantised) time point doesn't make sense"
134 , LUMIERA_ERROR_INVALID_MUTATION);
216 return Offset(grid->timeOf(0), grid->timeOf(steps));
245 imposeChange (target,
steps_);
252 imposeChange (target,
steps_);
260 imposeChange (target,
steps_);
287 return EncapsulatedMutation::build<SetNewStartTimeMutation> (newStartTime);
298 return EncapsulatedMutation::build<SetNewDuration> (changedDur);
309 return EncapsulatedMutation::build<ImposeOffsetMutation> (
change);
321 return EncapsulatedMutation::build<MaterialiseIntoTarget> (gridAlignedTime);
338 return EncapsulatedMutation::build<NaturalNudgeMutation> (adjustment);
364 return EncapsulatedMutation::build<NudgeMutation> (adjustment, grid);
Template to build polymorphic value objects.
A variation for limited copy support.
Duration is the internal Lumiera time metric.
concrete time value mutation: adjust the given time entity by an offset amount.
virtual void change(Duration &target) const
ImposeOffsetMutation(Offset adj)
virtual void change(QuTime &target) const
virtual void change(TimeSpan &target) const
concrete time value mutation: make the grid aligned time value explicit, and impose the resulting val...
MaterialiseIntoTarget(QuTime const &quant)
static EncapsulatedMutation changeDuration(Duration)
Convenience factory: simple Mutation to adjust the duration or length of a timespan.
virtual void change(Duration &) const =0
static EncapsulatedMutation materialise(QuTime const &)
Convenience factory: materialise the given quantised time into an explicit fixed internal time value,...
static EncapsulatedMutation nudge(int adjustment)
build a time mutation to nudge the target time value by an offset, defined as number of steps on an i...
static EncapsulatedMutation adjust(Offset)
Convenience factory: simple Mutation to adjust the duration or length of a timespan.
static EncapsulatedMutation changeTime(Time)
Convenience factory to yield a simple Mutation changing the absolute start time.
concrete time value mutation: nudge based on a implicit grid, which is either a quantised target valu...
virtual void change(Duration &target) const
virtual void change(QuTime &target) const
NaturalNudgeMutation(int relativeSteps)
virtual void change(TimeSpan &target) const
concrete time value mutation: nudge target value by the given number of 'steps', relative to the give...
NudgeMutation(int relativeSteps, PQuant const &grid)
static Offset materialiseGridPoint(PQuant const &grid, int steps)
Offset measures a distance in time.
grid aligned time specification, referring to a specific scale.
concrete time value mutation: set a new overall duration for an extended timespan.
virtual void change(Duration &target) const
virtual void change(QuTime &) const
virtual void change(TimeSpan &target) const
SetNewDuration(Duration dur)
Duration changedDuration_
concrete time value mutation: impose fixed new start time.
virtual void change(QuTime &target) const
SetNewStartTimeMutation(TimeValue t)
virtual void change(Duration &) const
virtual void change(TimeSpan &target) const
A time interval anchored at a specific point in time.
basic constant internal time value.
Lumiera's internal time value datatype.
#define LUMIERA_ERROR_DEFINE(err, msg)
Definition and initialisation of an error constant.
Lumiera error handling (C++ interface).
Modifying time and timecode values.
lib::PolymorphicValue< Mutation, MUTATION_IMPL_SIZE, ClonableMutation > EncapsulatedMutation
std::shared_ptr< const Quantiser > PQuant
Implementation namespace for support and library code.
LumieraError< LERR_(LOGIC)> Logic
Timecode handling library This header defines the foundation interface TCode to represent a grid alig...
Support library to represent grid-aligned time specifications This is part of Lumiera's time and time...
a family of time value like entities and their relationships.
Utilities for quantisation (grid alignment) and comparisons.