Mercurial > hg > tony
comparison src/MainWindow.cpp @ 356:0b08d860081b
changed the way the cursor works
author | matthiasm |
---|---|
date | Wed, 18 Jun 2014 10:13:12 +0100 |
parents | c66ec7f40acb |
children | d511868c1ffe |
comparison
equal
deleted
inserted
replaced
354:11ba706b1e7a | 356:0b08d860081b |
---|---|
3283 settings.setValue(tag, false); | 3283 settings.setValue(tag, false); |
3284 } | 3284 } |
3285 settings.endGroup(); | 3285 settings.endGroup(); |
3286 } | 3286 } |
3287 | 3287 |
3288 | 3288 void |
3289 | 3289 MainWindow::ffwd() |
3290 { | |
3291 if (!getMainModel()) return; | |
3292 | |
3293 int frame = m_viewManager->getPlaybackFrame(); | |
3294 ++frame; | |
3295 | |
3296 size_t sr = getMainModel()->getSampleRate(); | |
3297 | |
3298 // The step is supposed to scale and be as wide as a step of | |
3299 // m_defaultFfwdRwdStep seconds at zoom level 512 and sr = 44100 | |
3300 size_t framesPerPixel = m_viewManager->getGlobalZoom(); | |
3301 size_t defaultZoom = (512 * 44100) / sr; | |
3302 | |
3303 float scaler = (framesPerPixel * 1.0f) / defaultZoom; | |
3304 | |
3305 | |
3306 frame = RealTime::realTime2Frame | |
3307 (RealTime::frame2RealTime(frame, sr) + m_defaultFfwdRwdStep * scaler, sr); | |
3308 if (frame > int(getMainModel()->getEndFrame())) { | |
3309 frame = getMainModel()->getEndFrame(); | |
3310 } | |
3311 | |
3312 if (frame < 0) frame = 0; | |
3313 | |
3314 if (m_viewManager->getPlaySelectionMode()) { | |
3315 frame = m_viewManager->constrainFrameToSelection(size_t(frame)); | |
3316 } | |
3317 | |
3318 m_viewManager->setPlaybackFrame(frame); | |
3319 | |
3320 if (frame == (int)getMainModel()->getEndFrame() && | |
3321 m_playSource && | |
3322 m_playSource->isPlaying() && | |
3323 !m_viewManager->getPlayLoopMode()) { | |
3324 stop(); | |
3325 } | |
3326 } | |
3327 | |
3328 void | |
3329 MainWindow::rewind() | |
3330 { | |
3331 if (!getMainModel()) return; | |
3332 | |
3333 int frame = m_viewManager->getPlaybackFrame(); | |
3334 if (frame > 0) --frame; | |
3335 | |
3336 size_t sr = getMainModel()->getSampleRate(); | |
3337 | |
3338 // The step is supposed to scale and be as wide as a step of | |
3339 // m_defaultFfwdRwdStep seconds at zoom level 512 and sr = 44100 | |
3340 size_t framesPerPixel = m_viewManager->getGlobalZoom(); | |
3341 size_t defaultZoom = (512 * 44100) / sr; | |
3342 | |
3343 float scaler = (framesPerPixel * 1.0f) / defaultZoom; | |
3344 frame = RealTime::realTime2Frame | |
3345 (RealTime::frame2RealTime(frame, sr) - m_defaultFfwdRwdStep * scaler, sr); | |
3346 if (frame < int(getMainModel()->getStartFrame())) { | |
3347 frame = getMainModel()->getStartFrame(); | |
3348 } | |
3349 | |
3350 if (frame < 0) frame = 0; | |
3351 | |
3352 if (m_viewManager->getPlaySelectionMode()) { | |
3353 frame = m_viewManager->constrainFrameToSelection(size_t(frame)); | |
3354 } | |
3355 | |
3356 m_viewManager->setPlaybackFrame(frame); | |
3357 } |