13 #include "qui/seqbrowser/SequenceBrowser.hpp"
14 #include "mussa_exceptions.hpp"
18 SequenceBrowser::SequenceBrowser(QWidget *parent)
25 QSize SequenceBrowser::sizeHint() const
27 //return QSize((int)GlSeqBrowser::viewportHeight(), (int)GlSeqBrowser::viewportWidth());
28 return QSize(600, 400);
31 void SequenceBrowser::setViewportCenter(float x)
33 const float epsilon = 1e-10;
34 float center = GlSeqBrowser::viewportCenter();
35 float difference = fabsf(x - center);
36 float abs_x = fabsf(x);
37 center = fabsf(center);
39 // the difference < epsilon * val is one of the recommended tests
40 // for float equality.
41 // of course since we're looking for not equals, we need to toss a
42 // not at the beginning
43 if (not (difference < epsilon * abs_x or difference < epsilon * center))
45 GlSeqBrowser::setViewportCenter(x);
46 emit viewportChanged();
51 void SequenceBrowser::setZoom(int new_zoom)
53 if (new_zoom != GlSeqBrowser::zoom()) {
54 GlSeqBrowser::setZoom(new_zoom);
55 emit viewportChanged();
60 void SequenceBrowser::setClipPlane(int )
63 if (clipZ != (double) newZ){
64 clipZ = (double) newZ;
70 void SequenceBrowser::clear()
72 GlSeqBrowser::clear();
76 void SequenceBrowser::push_sequence(const Sequence &s)
78 GlSeqBrowser::push_sequence(s);
82 void SequenceBrowser::push_sequence(GlSequence &gs)
84 GlSeqBrowser::push_sequence(gs);
90 void SequenceBrowser::initializeGL()
92 GlSeqBrowser::initializeGL();
95 void SequenceBrowser::resizeGL(int width, int height)
97 GlSeqBrowser::resizeGL(width, height);
98 emit viewportChanged();
101 void SequenceBrowser::paintGL()
103 GlSeqBrowser::paintGL();
106 void SequenceBrowser::mousePressEvent( QMouseEvent *e)
110 selectedMode = false;
111 bandOrigin = e->pos();
113 rubberBand = new QRubberBand(QRubberBand::Rectangle, this);
115 rubberBand->setGeometry(QRect(bandOrigin, QSize()));
119 void SequenceBrowser::mouseMoveEvent( QMouseEvent *e)
122 rubberBand->setGeometry(QRect(bandOrigin, e->pos()).normalized());
125 void SequenceBrowser::mouseReleaseEvent( QMouseEvent *e)
128 if (rubberBand != 0) {
130 QRect r = QRect(bandOrigin, e->pos()).normalized();
131 bandOrigin = r.topLeft();
133 selectRegion(r.top(), r.left(), r.bottom(), r.right());