52#ifndef LIB_TIME_MUTATION_H
53#define LIB_TIME_MUTATION_H
108#ifdef LIB_TIME_TIMEQUANT_H
125#ifdef LIB_TIME_TIMEQUANT_H
140 return target = valueToSet;
159#ifdef LIB_TIME_TIMEQUANT_H
170 PQuant const& grid (target);
171 FrameCnt originalGridPoint = grid->gridPoint(target);
172 FrameCnt adjustedGridPoint = originalGridPoint + steps;
173 return imposeChange (target, grid->timeOf (adjustedGridPoint));
Template to build polymorphic value objects.
Token or Atom with distinct identity.
A variation for limited copy support.
Duration is the internal Lumiera time metric.
void accept(Mutation const &)
Interface: an opaque change imposed onto some time value.
virtual void change(TimeSpan &) const =0
virtual void change(QuTime &) const =0
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 TimeValue & imposeChange(TimeValue &, TimeValue const &)
static EncapsulatedMutation adjust(Offset)
Convenience factory: simple Mutation to adjust the duration or length of a timespan.
static TimeValue & imposeChange(QuTime &, int)
static EncapsulatedMutation changeTime(Time)
Convenience factory to yield a simple Mutation changing the absolute start time.
Offset measures a distance in time.
grid aligned time specification, referring to a specific scale.
void accept(Mutation const &)
receive change message, which might cause re-quantisation
A time interval anchored at a specific point in time.
void accept(Mutation const &)
may change start / duration
basic constant internal time value.
a mutable time value, behaving like a plain number, allowing copy and re-accessing
Lumiera's internal time value datatype.
#define LUMIERA_ERROR_DECLARE(err)
Forward declare an error constant.
Lumiera error handling (C++ interface).
int64_t FrameCnt
relative framecount or frame number.
lib::polyvalue::CloneValueSupport< Mutation > ClonableMutation
lib::PolymorphicValue< Mutation, MUTATION_IMPL_SIZE, ClonableMutation > EncapsulatedMutation
std::shared_ptr< const Quantiser > PQuant
boost::rational< int64_t > FSecs
rational representation of fractional seconds
Implementation namespace for support and library code.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
A mechanism to allow for opaque polymorphic value objects.
Marker types to indicate a literal string and a Symbol.
a family of time value like entities and their relationships.