/vp_plugins/global/mygraphicsview.cpp

http://cupsfilter.googlecode.com/ · C++ · 55 lines · 45 code · 9 blank · 1 comment · 3 complexity · a9e4868724021d6cb72b8689e4ea72f3 MD5 · raw file

  1. #include "mygraphicsview.h"
  2. #include "mytypes.h"
  3. #include <QVarLengthArray>
  4. myGraphicsView::myGraphicsView( QWidget * parent)
  5. :QGraphicsView(parent)
  6. ,gridInterval(int (MM_TO_POINT(5)))
  7. ,gridShow(true)
  8. {
  9. }
  10. myGraphicsView::myGraphicsView(QGraphicsScene * scene, QWidget * parent)
  11. :QGraphicsView(scene,parent)
  12. ,gridInterval(int (MM_TO_POINT(5)))
  13. ,gridShow(true)
  14. {
  15. }
  16. void myGraphicsView::setShowGrid(bool g_show)
  17. {
  18. gridShow = g_show;
  19. this->repaint();
  20. }
  21. void myGraphicsView::setInterval(int i)
  22. {
  23. gridInterval = int(MM_TO_POINT(i) >MM_TO_POINT(5) ? MM_TO_POINT(i) :MM_TO_POINT(5));
  24. gridShow = true;
  25. this->repaint();
  26. }
  27. void myGraphicsView::drawForeground ( QPainter * painter, const QRectF & rect )
  28. {
  29. painter->setWorldMatrixEnabled(true);
  30. if ( gridShow ){
  31. //interval to draw grid lines at
  32. painter->setPen(QPen(Qt::green, 1, Qt::SolidLine));
  33. }else{
  34. painter->setPen(QPen(Qt::white, 1, Qt::SolidLine));
  35. }
  36. qreal left = int(rect.left()) - (int(rect.left()) % gridInterval );
  37. qreal top = int(rect.top()) - (int(rect.top()) % gridInterval );
  38. QVarLengthArray<QLineF> linesX;
  39. for (qreal x = left; x < rect.right(); x += gridInterval )
  40. linesX.append(QLineF(x, rect.top(), x, rect.bottom()));
  41. QVarLengthArray<QLineF> linesY;
  42. for (qreal y = top; y < rect.bottom(); y += gridInterval )
  43. linesY.append(QLineF(rect.left(), y, rect.right(), y));
  44. painter->drawLines(linesX.data(), linesX.size());
  45. painter->drawLines(linesY.data(), linesY.size());
  46. }