#pragma once #include "core/Phone.h" #include "animationRules.h" #include "time/BoundedTimeline.h" #include "time/ContinuousTimeline.h" #include "time/TimeRange.h" struct ShapeRule { ShapeSet shapeSet; boost::optional<Phone> phone; TimeRange phoneTiming; ShapeRule(ShapeSet shapeSet, boost::optional<Phone> phone, TimeRange phoneTiming); static ShapeRule getInvalid(); bool operator==(const ShapeRule&) const; bool operator!=(const ShapeRule&) const; bool operator<(const ShapeRule&) const; }; // Returns shape rules for an entire timeline of phones. ContinuousTimeline<ShapeRule> getShapeRules(const BoundedTimeline<Phone>& phones);