Files
oak-editor/app/widget/timelinewidget/timelinescaledobject.h
T
itsmattkc 17c1493aa7 all time-based panels are now derived from a common base class
Cuts down on a lot of duplicate code between
TimelineWidget/ViewerWidget/CurveWidget/NodeParamView
and TimelinePanel/ViewerPanel/CurvePanel/ParamPanel since they all use similar
time functions.
2020-02-01 19:39:43 +11:00

45 lines
918 B
C++

#ifndef TIMELINESCALEDOBJECT_H
#define TIMELINESCALEDOBJECT_H
#include "common/rational.h"
class TimelineScaledObject
{
public:
TimelineScaledObject();
virtual ~TimelineScaledObject() = default;
void SetTimebase(const rational &timebase);
const rational& timebase() const;
const double& timebase_dbl() const;
static rational SceneToTime(const double &x, const double& x_scale, const rational& timebase, bool round = false);
const double& GetScale() const;
void SetScale(const double& scale);
protected:
double TimeToScene(const rational& time);
rational SceneToTime(const double &x, bool round = false);
virtual void TimebaseChangedEvent(const rational&){}
virtual void ScaleChangedEvent(const double&){}
void SetMaximumScale(const double& max);
private:
rational timebase_;
double timebase_dbl_;
double scale_;
double max_scale_;
};
#endif // TIMELINESCALEDOBJECT_H