/vp_plugins/tEditor/view.cpp

http://cupsfilter.googlecode.com/ · C++ · 135 lines · 95 code · 31 blank · 9 comment · 0 complexity · e145bf149b598149b467ab2c08720201 MD5 · raw file

  1. #define _USE_MATH_DEFINES
  2. #include "view.h"
  3. #include <QtGui>
  4. #include <qmath.h>
  5. #include <QUndoStack>
  6. View::View( QWidget *parent)
  7. : QFrame(parent)
  8. , tabNumber(-1)
  9. {
  10. setFrameStyle(Sunken | StyledPanel);
  11. graphicsView = new myGraphicsView;
  12. graphicsView->setRenderHint(QPainter::Antialiasing, false);
  13. graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
  14. graphicsView->setOptimizationFlags(QGraphicsView::DontSavePainterState);
  15. graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
  16. curAngle = 0;
  17. int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
  18. QSize iconSize(size, size);
  19. QToolButton *zoomInIcon = new QToolButton;
  20. zoomInIcon->setAutoRepeat(true);
  21. zoomInIcon->setAutoRepeatInterval(33);
  22. zoomInIcon->setAutoRepeatDelay(0);
  23. zoomInIcon->setIcon(QPixmap(":/zoomin.png"));
  24. zoomInIcon->setIconSize(iconSize);
  25. QToolButton *zoomOutIcon = new QToolButton;
  26. zoomOutIcon->setAutoRepeat(true);
  27. zoomOutIcon->setAutoRepeatInterval(33);
  28. zoomOutIcon->setAutoRepeatDelay(0);
  29. zoomOutIcon->setIcon(QPixmap(":/zoomout.png"));
  30. zoomOutIcon->setIconSize(iconSize);
  31. zoomSlider = new QSlider;
  32. zoomSlider->setMinimum(0);
  33. zoomSlider->setMaximum(500);
  34. zoomSlider->setValue(250);
  35. zoomSlider->setTickPosition(QSlider::TicksRight);
  36. // Zoom slider layout
  37. QVBoxLayout *zoomSliderLayout = new QVBoxLayout;
  38. zoomSliderLayout->addWidget(zoomInIcon);
  39. zoomSliderLayout->addWidget(zoomSlider);
  40. zoomSliderLayout->addWidget(zoomOutIcon);
  41. QGridLayout *topLayout = new QGridLayout;
  42. topLayout->addWidget(graphicsView, 1, 0);
  43. topLayout->addLayout(zoomSliderLayout, 1, 1);
  44. setLayout(topLayout);
  45. connect(zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
  46. connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
  47. connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
  48. connect(zoomInIcon, SIGNAL(clicked()), this, SLOT(zoomIn()));
  49. connect(zoomOutIcon, SIGNAL(clicked()), this, SLOT(zoomOut()));
  50. setupMatrix();
  51. }
  52. void View::setAngle(qreal angle)
  53. {
  54. curAngle = angle;
  55. setupMatrix();
  56. }
  57. QGraphicsView *View::gr_view() const
  58. {
  59. return graphicsView;
  60. }
  61. void View::resetView()
  62. {
  63. zoomSlider->setValue(250);
  64. setupMatrix();
  65. graphicsView->ensureVisible(QRectF(0, 0, 0, 0));
  66. //resetButton->setEnabled(false);
  67. }
  68. void View::setResetButtonEnabled()
  69. {
  70. //resetButton->setEnabled(true);
  71. }
  72. void View::setupMatrix()
  73. {
  74. qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50));
  75. QMatrix matrix;
  76. //matrix = graphicsView->matrix();
  77. //matrix.scale(1., 1.);
  78. matrix.scale(scale, scale);
  79. matrix.rotate(curAngle);
  80. graphicsView->setMatrix(matrix);
  81. }
  82. void View::setGridSize(int g_size)
  83. {
  84. graphicsView->setInterval(g_size);
  85. }
  86. void View::setShowGrid(bool grid_show)
  87. {
  88. graphicsView->setShowGrid(grid_show);
  89. }
  90. void View::toggleAntialiasing()
  91. {
  92. /*
  93. graphicsView->setRenderHint(QPainter::Antialiasing,
  94. antialiasButton->isChecked());
  95. */
  96. }
  97. void View::zoomIn()
  98. {
  99. zoomSlider->setValue(zoomSlider->value() + 1);
  100. }
  101. void View::zoomOut()
  102. {
  103. zoomSlider->setValue(zoomSlider->value() - 1);
  104. }