X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=blobdiff_plain;f=qui%2Fseqbrowser%2FSequenceBrowser.cpp;h=3fe84d58eb28620c419425e10509d595216bb9b1;hp=3e96ab9470160ff59fae82def121a0fe5ae9b62a;hb=58fe385bd7703c81343e08b13f2492380a5089c2;hpb=709adb67d249056f6864402c17f421a9b31f6119 diff --git a/qui/seqbrowser/SequenceBrowser.cpp b/qui/seqbrowser/SequenceBrowser.cpp index 3e96ab9..3fe84d5 100644 --- a/qui/seqbrowser/SequenceBrowser.cpp +++ b/qui/seqbrowser/SequenceBrowser.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -275,6 +276,79 @@ void SequenceBrowser::stopSelecting(QMouseEvent *e) } } +void SequenceBrowser::wheelEvent(QWheelEvent *e) +{ + e->accept(); + double cur_zoom = GlSeqBrowser::zoom(); + + // Normalize so one 15 degree turn of the mouse wheel + // is equal to 1 step. + int num_degrees = e->delta() / 8; + int num_steps = num_degrees / 15; + + // Positive + if (num_steps >= 0) + { + // Invert number of steps because code was written + // thinking that adding a positve num_steps was zooming + // in, but because it's bp/pixel, it's actually zooming out. + // To get mouse wheel to zoom in, when pushing the wheel + // forward, I can use the existing code, by making num_steps + // negative here. + num_steps = num_steps * (-1); + + if (cur_zoom + num_steps >= 1.0) + { + emit mouseWheelZoom(cur_zoom + num_steps); + } + else if (cur_zoom > 1.0 && cur_zoom + num_steps < 1.0) + { + emit mouseWheelZoom(1.0); + } + else if (cur_zoom <= 0.1) + { + emit mouseWheelZoom(cur_zoom + ((double)num_steps*0.01)); + } + else if (cur_zoom <= 1.0 && cur_zoom + ((double)num_steps*0.1) >= 0.1) + { + emit mouseWheelZoom(cur_zoom + ((double)num_steps*0.1)); + } + else if (cur_zoom <= 1.0 && cur_zoom + ((double)num_steps*0.1) < 0.1) + { + emit mouseWheelZoom(0.1); + } + + } + // Negative + else + { + + // Invert number of steps because code was written + // thinking that adding a positve num_steps was zooming + // in, but because it's bp/pixel, it's actually zooming out. + // To get mouse wheel to zoom out, when pulling the wheel + // backwards, I can use the existing code, by making num_steps + // positive here. + num_steps = num_steps * (-1); + + if (cur_zoom >= 1.0) + { + emit mouseWheelZoom(cur_zoom+num_steps); + } + else if (cur_zoom < 1.0 && cur_zoom >= 0.1) + { + emit mouseWheelZoom(cur_zoom + ((double)num_steps*0.1)); + } + else if (cur_zoom < 0.1) + { + emit mouseWheelZoom(cur_zoom + ((double)num_steps*0.01)); + } + + } + + //cout << "Mouse wheel delta: " << num_degrees << "; " << num_steps << "\n"; +} + void SequenceBrowser::clearSelection() { GlSeqBrowser::clearSelection();