14 #include "qui/seqbrowser/SequenceBrowser.hpp"
15 #include "mussa_exceptions.hpp"
19 SequenceBrowser::SequenceBrowser(QWidget *parent)
26 QSize SequenceBrowser::sizeHint() const
28 //return QSize((int)GlSeqBrowser::viewportHeight(), (int)GlSeqBrowser::viewportWidth());
29 return QSize(600, 400);
32 void SequenceBrowser::setViewportCenter(float x)
34 const float epsilon = 1e-10;
35 float center = GlSeqBrowser::viewportCenter();
36 float difference = fabsf(x - center);
37 float abs_x = fabsf(x);
38 center = fabsf(center);
40 // the difference < epsilon * val is one of the recommended tests
41 // for float equality.
42 // of course since we're looking for not equals, we need to toss a
43 // not at the beginning
44 if (not (difference < epsilon * abs_x or difference < epsilon * center))
46 GlSeqBrowser::setViewportCenter(x);
47 emit viewportChanged();
52 void SequenceBrowser::setZoom(int new_zoom)
54 if (new_zoom != GlSeqBrowser::zoom()) {
55 GlSeqBrowser::setZoom(new_zoom);
56 emit viewportChanged();
61 void SequenceBrowser::setClipPlane(int )
64 if (clipZ != (double) newZ){
65 clipZ = (double) newZ;
71 void SequenceBrowser::clear()
73 GlSeqBrowser::clear();
77 void SequenceBrowser::push_sequence(const Sequence &s)
79 GlSeqBrowser::push_sequence(s);
83 void SequenceBrowser::push_sequence(GlSequence &gs)
85 GlSeqBrowser::push_sequence(gs);
91 void SequenceBrowser::initializeGL()
93 GlSeqBrowser::initializeGL();
96 void SequenceBrowser::resizeGL(int width, int height)
98 GlSeqBrowser::resizeGL(width, height);
99 emit viewportChanged();
102 void SequenceBrowser::paintGL()
104 GlSeqBrowser::paintGL();
107 void SequenceBrowser::mousePressEvent( QMouseEvent *e)
111 selectedMode = false;
112 bandOrigin = e->pos();
114 rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
116 rubberBand->setGeometry(QRect(bandOrigin, QSize()));
120 void SequenceBrowser::mouseMoveEvent( QMouseEvent *e)
123 rubberBand->setGeometry(QRect(bandOrigin, e->pos()).normalized());
126 void SequenceBrowser::mouseReleaseEvent( QMouseEvent *e)
130 QRect r = QRect(bandOrigin, e->pos()).normalized();
131 bandOrigin = r.topLeft();
133 selectRegion(r.top(), r.left(), r.bottom(), r.right());