#include "ui/tracker/tracker.h"
#include "ui/tracker/zoom.h"
#include "ui/tracker/gl.h"
Zoom::Zoom(Tracker *tracker)
: QGLWidget(QGLFormat(QGL::SampleBuffers), 0, tracker), tracker_(tracker) {
setMinimumHeight(4*kPatternSize); setMaximumHeight(8*kPatternSize);
}
void Zoom::SetImage(int image) {
current_image_ = image;
update();
}
void Zoom::select(QVector<int> tracks) {
tracks_ = tracks;
updateGeometry();
update();
}
void Zoom::paintGL() {
glBindWindow(0, 0, width(), height(), true);
if (tracks_.count() == 0) return;
int size = sqrt(width()*height()/tracks_.count());
int columns = width()/size;
for(int rows = height()/size; columns*rows < tracks_.count();) {
size--;
columns = width()/size;
rows = height()/size;
}
for (int i = 0; i < tracks_.count(); i++) {
int y = i/columns, x = i%columns;
tracker_->Render(x*size, y*size, size, size, current_image_, tracks_[i]);
}
}