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 }