Created and Applied TimelineWidget::ZoomSmoothing

This commit is contained in:
Michael R. Fisher 2011-10-23 04:45:10 -05:00
parent 6c17d06e66
commit 0aa3ca76d1
5 changed files with 10 additions and 17 deletions

View file

@ -334,19 +334,9 @@ TimelinePanel::update_tool_buttons()
void void
TimelinePanel::update_zoom_buttons() TimelinePanel::update_zoom_buttons()
{ {
REQUIRE(timelineWidget); /* This function is no longer needed
* TODO: Let the ZoomScaleWidget perform
int64_t current_scale = * the update on its own */
timelineWidget->get_state()->get_view_window().get_time_scale();
double linear_scale =
(double) current_scale / (double) TimelineWidget::MaxScale;
/* We have to Revese the Smoothing */
double new_relative_scale =
pow(linear_scale,(1.0/9.0));
timelineWidget->zoom_view (new_relative_scale);
} }
void void

View file

@ -41,7 +41,8 @@ namespace widgets {
const int TimelineWidget::TrackPadding = 1; const int TimelineWidget::TrackPadding = 1;
const int TimelineWidget::HeaderWidth = 150; const int TimelineWidget::HeaderWidth = 150;
const int TimelineWidget::HeaderIndentWidth = 10; const int TimelineWidget::HeaderIndentWidth = 10;
const double TimelineWidget::ZoomIncrement = 1.25; const double TimelineWidget::ZoomIncrement = 1.25; // Not currently used
const double TimelineWidget::ZoomSmoothing = 9.0;
const int64_t TimelineWidget::MaxScale = 30000000; // 30 Million const int64_t TimelineWidget::MaxScale = 30000000; // 30 Million
TimelineWidget::TimelineWidget(shared_ptr<timeline::TimelineState> source_state) TimelineWidget::TimelineWidget(shared_ptr<timeline::TimelineState> source_state)

View file

@ -285,6 +285,7 @@ public:
* to 30000000 lumiera::Time increments. * to 30000000 lumiera::Time increments.
*/ */
static const int64_t MaxScale; static const int64_t MaxScale;
static const double ZoomSmoothing;
protected: protected:
static const int TrackPadding; static const int TrackPadding;

View file

@ -88,9 +88,10 @@ TimelineViewWindow::set_time_scale(double ratio)
void void
TimelineViewWindow::zoom_view(int point, double time_scale_ratio) TimelineViewWindow::zoom_view(int point, double time_scale_ratio)
{ {
TODO("Find a Central place for a Zoom Smoothing Factor Variable. Right now it is hard coded at 9.0"); // Apply the smoothing factor
int64_t new_time_scale = int64_t new_time_scale =
(int64_t)( pow(time_scale_ratio, 9.0) * (double)TimelineWidget::MaxScale); (int64_t)( pow(time_scale_ratio, TimelineWidget::ZoomSmoothing) *
(double)TimelineWidget::MaxScale);
/* Prevent Zooming in To Close and Far */ /* Prevent Zooming in To Close and Far */
if(new_time_scale < 1) if(new_time_scale < 1)

View file

@ -113,7 +113,7 @@ TimelineZoomScale::on_timeline_state_changed (shared_ptr<TimelineState> newState
/* We have to Revese the Smoothing */ /* We have to Revese the Smoothing */
double new_relative_scale = double new_relative_scale =
pow(linear_scale,(1.0/9.0)); pow(linear_scale,(1.0 / TimelineWidget::ZoomSmoothing));
adjustment.set_value(new_relative_scale); adjustment.set_value(new_relative_scale);
} }