/vp_plugins/tEditor/view.cpp
http://cupsfilter.googlecode.com/ · C++ · 135 lines · 95 code · 31 blank · 9 comment · 0 complexity · e145bf149b598149b467ab2c08720201 MD5 · raw file
- #define _USE_MATH_DEFINES
- #include "view.h"
- #include <QtGui>
- #include <qmath.h>
- #include <QUndoStack>
- View::View( QWidget *parent)
- : QFrame(parent)
- , tabNumber(-1)
- {
- setFrameStyle(Sunken | StyledPanel);
- graphicsView = new myGraphicsView;
- graphicsView->setRenderHint(QPainter::Antialiasing, false);
- graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
- graphicsView->setOptimizationFlags(QGraphicsView::DontSavePainterState);
- graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
- curAngle = 0;
- int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
- QSize iconSize(size, size);
- QToolButton *zoomInIcon = new QToolButton;
- zoomInIcon->setAutoRepeat(true);
- zoomInIcon->setAutoRepeatInterval(33);
- zoomInIcon->setAutoRepeatDelay(0);
- zoomInIcon->setIcon(QPixmap(":/zoomin.png"));
- zoomInIcon->setIconSize(iconSize);
- QToolButton *zoomOutIcon = new QToolButton;
- zoomOutIcon->setAutoRepeat(true);
- zoomOutIcon->setAutoRepeatInterval(33);
- zoomOutIcon->setAutoRepeatDelay(0);
- zoomOutIcon->setIcon(QPixmap(":/zoomout.png"));
- zoomOutIcon->setIconSize(iconSize);
- zoomSlider = new QSlider;
- zoomSlider->setMinimum(0);
- zoomSlider->setMaximum(500);
- zoomSlider->setValue(250);
- zoomSlider->setTickPosition(QSlider::TicksRight);
- // Zoom slider layout
- QVBoxLayout *zoomSliderLayout = new QVBoxLayout;
- zoomSliderLayout->addWidget(zoomInIcon);
- zoomSliderLayout->addWidget(zoomSlider);
- zoomSliderLayout->addWidget(zoomOutIcon);
- QGridLayout *topLayout = new QGridLayout;
- topLayout->addWidget(graphicsView, 1, 0);
- topLayout->addLayout(zoomSliderLayout, 1, 1);
- setLayout(topLayout);
- connect(zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
- connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
- connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
- connect(zoomInIcon, SIGNAL(clicked()), this, SLOT(zoomIn()));
- connect(zoomOutIcon, SIGNAL(clicked()), this, SLOT(zoomOut()));
- setupMatrix();
- }
- void View::setAngle(qreal angle)
- {
- curAngle = angle;
- setupMatrix();
- }
- QGraphicsView *View::gr_view() const
- {
- return graphicsView;
- }
- void View::resetView()
- {
- zoomSlider->setValue(250);
- setupMatrix();
- graphicsView->ensureVisible(QRectF(0, 0, 0, 0));
- //resetButton->setEnabled(false);
- }
- void View::setResetButtonEnabled()
- {
- //resetButton->setEnabled(true);
- }
- void View::setupMatrix()
- {
- qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50));
- QMatrix matrix;
- //matrix = graphicsView->matrix();
- //matrix.scale(1., 1.);
- matrix.scale(scale, scale);
- matrix.rotate(curAngle);
- graphicsView->setMatrix(matrix);
- }
- void View::setGridSize(int g_size)
- {
- graphicsView->setInterval(g_size);
- }
- void View::setShowGrid(bool grid_show)
- {
- graphicsView->setShowGrid(grid_show);
- }
- void View::toggleAntialiasing()
- {
- /*
- graphicsView->setRenderHint(QPainter::Antialiasing,
- antialiasButton->isChecked());
- */
- }
- void View::zoomIn()
- {
- zoomSlider->setValue(zoomSlider->value() + 1);
- }
- void View::zoomOut()
- {
- zoomSlider->setValue(zoomSlider->value() - 1);
- }