Skip to content
Snippets Groups Projects
bsaccumulatorview.cpp 2.23 KiB
Newer Older
even's avatar
even committed
#include <QtGui>
#include <iostream>
#include "bsaccumulatorview.h"

using namespace std;


const int BSAccumulatorView::CELL_SIZE = 12;


BSAccumulatorView::BSAccumulatorView (BSDetector *sd)
{
  int w = LineSpaceFilter::DEFAULT_NB_ANG_CELLS * CELL_SIZE;
  int h = LineSpaceFilter::DEFAULT_NB_DIST_CELLS * CELL_SIZE;
  setBackgroundBrush (QBrush (Qt::yellow));
  setScene (new QGraphicsScene (0, 0, w, h));
  grid = new BSAccumulatorItem (sd, w, h);
  scene()->addItem (grid);
  setWindowTitle (grid->isPrefilterDisplayed () ?
                  "Pre-filter accumulator" : "Final filter accumulator");
}


BSAccumulatorView::~BSAccumulatorView ()
{
  scene()->removeItem (grid);
  delete grid;
}


void BSAccumulatorView::paint (QPainter *painter,
                               const QStyleOptionGraphicsItem *option,
                               QWidget *widget)
{
  Q_UNUSED (painter);
  Q_UNUSED (option);
  Q_UNUSED (widget);
}


bool BSAccumulatorView::processKeyEvent (QKeyEvent *event)
{
  bool processed = false;
  switch (event->key ())
  {
    case Qt::Key_I :
      grid->switchAccumulator ();
      setWindowTitle (grid->isPrefilterDisplayed () ?
                      "Pre-filter accumulator" : "Final filter accumulator");
      processed = true;
      break;

    case Qt::Key_V :
      grid->switchInfoDisplay ();
      processed = true;
      break;

    case Qt::Key_S :
      processed = grid->resizeAccumulator (
                          (event->modifiers () & Qt::ShiftModifier) == 0);
      break;

    case Qt::Key_R :
      processed = grid->zoomAccumulator (
                          (event->modifiers () & Qt::ShiftModifier) == 0);
      break;

even's avatar
even committed
    case Qt::Key_W :
even's avatar
even committed
      processed = grid->subpixellise (
                          (event->modifiers () & Qt::ShiftModifier) != 0);
      break;

    case Qt::Key_F :
      processed = grid->setFilterSelectivity (
                          (event->modifiers () & Qt::ShiftModifier) == 0);
      break;
even's avatar
even committed

    case Qt::Key_P : // Capture
Kerautret's avatar
Kerautret committed
      // viewport()->grab (
      //   QRect (QPoint (0, 0),
      //          QSize (grid->getWidth(), grid->getHeight()))
      //   ).toImage().save ("accu.png");
      // cout << "Accumulator shot in capture.png" << endl;
even's avatar
even committed
      break;
even's avatar
even committed
  }
  return processed;
}