summaryrefslogtreecommitdiff
path: root/tikzit/src/gui/tikzview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tikzit/src/gui/tikzview.cpp')
-rw-r--r--tikzit/src/gui/tikzview.cpp65
1 files changed, 64 insertions, 1 deletions
diff --git a/tikzit/src/gui/tikzview.cpp b/tikzit/src/gui/tikzview.cpp
index d2a769c..a83c9ec 100644
--- a/tikzit/src/gui/tikzview.cpp
+++ b/tikzit/src/gui/tikzview.cpp
@@ -1,20 +1,83 @@
#include "tikzview.h"
+#include "tikzit.h"
#include <QDebug>
TikzView::TikzView(QWidget *parent) : QGraphicsView(parent)
{
setRenderHint(QPainter::Antialiasing);
- qDebug() << "TikzView()";
+ 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::drawBackground(QPainter *painter, const QRectF &rect)
+{
+ // draw the grid
+ int step = GLOBAL_SCALE / 8;
+
+ QPen pen1;
+ pen1.setWidth(1);
+ pen1.setCosmetic(true);
+ pen1.setColor(QColor(230,230,230));
+
+ QPen pen2 = pen1;
+ pen2.setColor(QColor(200,200,200));
+
+ QPen pen3 = pen1;
+ pen3.setColor(QColor(160,160,160));
+
+ painter->setPen(pen1);
+
+ if (_scale > 0.2f) {
+ for (int x = -step; x > rect.left(); x -= step) {
+ if (x % (step * 8) != 0) painter->drawLine(x, rect.top(), x, rect.bottom());
+ }
+
+ for (int x = step; x < rect.right(); x += step) {
+ if (x % (step * 8) != 0) painter->drawLine(x, rect.top(), x, rect.bottom());
+ }
+
+ for (int y = -step; y > rect.top(); y -= step) {
+ if (y % (step * 8) != 0) painter->drawLine(rect.left(), y, rect.right(), y);
+ }
+
+ for (int y = step; y < rect.bottom(); y += step) {
+ if (y % (step * 8) != 0) painter->drawLine(rect.left(), y, rect.right(), y);
+ }
+ }
+
+ painter->setPen(pen2);
+
+ for (int x = -step*8; x > rect.left(); x -= step*8) {
+ painter->drawLine(x, rect.top(), x, rect.bottom());
+ }
+
+ for (int x = step*8; x < rect.right(); x += step*8) {
+ painter->drawLine(x, rect.top(), x, rect.bottom());
+ }
+
+ for (int y = -step*8; y > rect.top(); y -= step*8) {
+ painter->drawLine(rect.left(), y, rect.right(), y);
+ }
+
+ for (int y = step*8; y < rect.bottom(); y += step*8) {
+ painter->drawLine(rect.left(), y, rect.right(), y);
+ }
+
+ painter->setPen(pen3);
+ painter->drawLine(rect.left(), 0, rect.right(), 0);
+ painter->drawLine(0, rect.top(), 0, rect.bottom());
+}
+