diff options
Diffstat (limited to 'src/gui/tikzview.cpp')
-rw-r--r-- | src/gui/tikzview.cpp | 256 |
1 files changed, 128 insertions, 128 deletions
diff --git a/src/gui/tikzview.cpp b/src/gui/tikzview.cpp index f0084fb..6cdb17c 100644 --- a/src/gui/tikzview.cpp +++ b/src/gui/tikzview.cpp @@ -1,128 +1,128 @@ -/*
- TikZiT - a GUI diagram editor for TikZ
- Copyright (C) 2018 Aleks Kissinger
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.
-*/
-
-#include "tikzview.h"
-#include "tikzit.h"
-
-#include <QDebug>
-#include <QScrollBar>
-
-TikzView::TikzView(QWidget *parent) : QGraphicsView(parent)
-{
- setRenderHint(QPainter::Antialiasing);
- //setDragMode(QGraphicsView::RubberBandDrag);
-
- _scale = 1.0f;
-}
-
-void TikzView::zoomIn()
-{
- _scale *= 1.6f;
- scale(1.6,1.6);
-}
-
-void TikzView::zoomOut()
-{
- _scale *= 0.625f;
- scale(0.625,0.625);
-}
-
-void TikzView::setScene(QGraphicsScene *scene)
-{
- QGraphicsView::setScene(scene);
- centerOn(QPointF(0.0f,-230.0f));
-}
-
-void TikzView::drawBackground(QPainter *painter, const QRectF &rect)
-{
- // draw a gray background if disabled
- TikzScene *sc = static_cast<TikzScene*>(scene());
- if (!sc->enabled()) painter->fillRect(rect, QBrush(QColor(240,240,240)));
-
- // draw the grid
-
- QPen pen1;
- //pen1.setWidthF(0.5);
- pen1.setCosmetic(true);
- pen1.setColor(QColor(250,250,255));
-
- QPen pen2 = pen1;
- pen2.setColor(QColor(240,240,250));
-
- QPen pen3 = pen1;
- pen3.setColor(QColor(220,220,240));
-
- painter->setPen(pen1);
-
- if (_scale > 0.2f) {
- for (int x = -GRID_SEP; x > rect.left(); x -= GRID_SEP) {
- if (x % (GRID_SEP * GRID_N) != 0) {
- qreal xf = (qreal)x;
- painter->drawLine(xf, rect.top(), xf, rect.bottom());
- }
- }
-
- for (int x = GRID_SEP; x < rect.right(); x += GRID_SEP) {
- if (x % (GRID_SEP * GRID_N) != 0) {
- qreal xf = (qreal)x;
- painter->drawLine(xf, rect.top(), xf, rect.bottom());
- }
- }
-
- for (int y = -GRID_SEP; y > rect.top(); y -= GRID_SEP) {
- if (y % (GRID_SEP * GRID_N) != 0) {
- qreal yf = (qreal)y;
- painter->drawLine(rect.left(), yf, rect.right(), yf);
- }
- }
-
- for (int y = GRID_SEP; y < rect.bottom(); y += GRID_SEP) {
- if (y % (GRID_SEP * GRID_N) != 0) {
- qreal yf = (qreal)y;
- painter->drawLine(rect.left(), yf, rect.right(), yf);
- }
- }
- }
-
- painter->setPen(pen2);
-
- for (int x = -GRID_SEP*GRID_N; x > rect.left(); x -= GRID_SEP*GRID_N) {
- qreal xf = (qreal)x;
- painter->drawLine(xf, rect.top(), xf, rect.bottom());
- }
-
- for (int x = GRID_SEP*GRID_N; x < rect.right(); x += GRID_SEP*GRID_N) {
- qreal xf = (qreal)x;
- painter->drawLine(xf, rect.top(), xf, rect.bottom());
- }
-
- for (int y = -GRID_SEP*GRID_N; y > rect.top(); y -= GRID_SEP*GRID_N) {
- qreal yf = (qreal)y;
- painter->drawLine(rect.left(), yf, rect.right(), yf);
- }
-
- for (int y = GRID_SEP*GRID_N; y < rect.bottom(); y += GRID_SEP*GRID_N) {
- qreal yf = (qreal)y;
- painter->drawLine(rect.left(), yf, rect.right(), yf);
- }
-
- painter->setPen(pen3);
- painter->drawLine(rect.left(), 0, rect.right(), 0);
- painter->drawLine(0, rect.top(), 0, rect.bottom());
-}
-
+/* + TikZiT - a GUI diagram editor for TikZ + Copyright (C) 2018 Aleks Kissinger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. +*/ + +#include "tikzview.h" +#include "tikzit.h" + +#include <QDebug> +#include <QScrollBar> + +TikzView::TikzView(QWidget *parent) : QGraphicsView(parent) +{ + setRenderHint(QPainter::Antialiasing); + //setDragMode(QGraphicsView::RubberBandDrag); + + _scale = 1.0f; +} + +void TikzView::zoomIn() +{ + _scale *= 1.6f; + scale(1.6,1.6); +} + +void TikzView::zoomOut() +{ + _scale *= 0.625f; + scale(0.625,0.625); +} + +void TikzView::setScene(QGraphicsScene *scene) +{ + QGraphicsView::setScene(scene); + centerOn(QPointF(0.0f,-230.0f)); +} + +void TikzView::drawBackground(QPainter *painter, const QRectF &rect) +{ + // draw a gray background if disabled + TikzScene *sc = static_cast<TikzScene*>(scene()); + if (!sc->enabled()) painter->fillRect(rect, QBrush(QColor(240,240,240))); + + // draw the grid + + QPen pen1; + //pen1.setWidthF(0.5); + pen1.setCosmetic(true); + pen1.setColor(QColor(250,250,255)); + + QPen pen2 = pen1; + pen2.setColor(QColor(240,240,250)); + + QPen pen3 = pen1; + pen3.setColor(QColor(220,220,240)); + + painter->setPen(pen1); + + if (_scale > 0.2f) { + for (int x = -GRID_SEP; x > rect.left(); x -= GRID_SEP) { + if (x % (GRID_SEP * GRID_N) != 0) { + qreal xf = (qreal)x; + painter->drawLine(xf, rect.top(), xf, rect.bottom()); + } + } + + for (int x = GRID_SEP; x < rect.right(); x += GRID_SEP) { + if (x % (GRID_SEP * GRID_N) != 0) { + qreal xf = (qreal)x; + painter->drawLine(xf, rect.top(), xf, rect.bottom()); + } + } + + for (int y = -GRID_SEP; y > rect.top(); y -= GRID_SEP) { + if (y % (GRID_SEP * GRID_N) != 0) { + qreal yf = (qreal)y; + painter->drawLine(rect.left(), yf, rect.right(), yf); + } + } + + for (int y = GRID_SEP; y < rect.bottom(); y += GRID_SEP) { + if (y % (GRID_SEP * GRID_N) != 0) { + qreal yf = (qreal)y; + painter->drawLine(rect.left(), yf, rect.right(), yf); + } + } + } + + painter->setPen(pen2); + + for (int x = -GRID_SEP*GRID_N; x > rect.left(); x -= GRID_SEP*GRID_N) { + qreal xf = (qreal)x; + painter->drawLine(xf, rect.top(), xf, rect.bottom()); + } + + for (int x = GRID_SEP*GRID_N; x < rect.right(); x += GRID_SEP*GRID_N) { + qreal xf = (qreal)x; + painter->drawLine(xf, rect.top(), xf, rect.bottom()); + } + + for (int y = -GRID_SEP*GRID_N; y > rect.top(); y -= GRID_SEP*GRID_N) { + qreal yf = (qreal)y; + painter->drawLine(rect.left(), yf, rect.right(), yf); + } + + for (int y = GRID_SEP*GRID_N; y < rect.bottom(); y += GRID_SEP*GRID_N) { + qreal yf = (qreal)y; + painter->drawLine(rect.left(), yf, rect.right(), yf); + } + + painter->setPen(pen3); + painter->drawLine(rect.left(), 0, rect.right(), 0); + painter->drawLine(0, rect.top(), 0, rect.bottom()); +} + |