summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2011-07-29 16:38:51 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2011-07-29 16:38:51 +0200
commitaab627accb4b57166259f0128cc16b88b4c1dc25 (patch)
tree9bd87e855d1961e37d6c7d856d74ac22df94d64f
parent805ee744e5482dbcb3b37b54c2442f89af29cc42 (diff)
Ported threshold to canvastool.
-rw-r--r--dgedit/Makefile.am2
-rw-r--r--dgedit/canvas.cc52
-rw-r--r--dgedit/canvas.h7
-rw-r--r--dgedit/canvastoolthreshold.cc108
-rw-r--r--dgedit/canvastoolthreshold.h56
5 files changed, 168 insertions, 57 deletions
diff --git a/dgedit/Makefile.am b/dgedit/Makefile.am
index a29a9b8..01187f1 100644
--- a/dgedit/Makefile.am
+++ b/dgedit/Makefile.am
@@ -11,6 +11,7 @@ dgedit_SOURCES = $(shell ../tools/MocList cc ) \
canvas.cc \
canvastool.cc \
canvastoolselections.cc \
+ canvastoolthreshold.cc \
filelist.cc \
itemeditor.cc \
mainwindow.cc \
@@ -24,6 +25,7 @@ EXTRA_DIST = \
canvas.h \
canvastool.h \
canvastoolselections.h \
+ canvastoolthreshold.h \
filelist.h \
itemeditor.h \
mainwindow.h \
diff --git a/dgedit/canvas.cc b/dgedit/canvas.cc
index 70ac219..8249dd2 100644
--- a/dgedit/canvas.cc
+++ b/dgedit/canvas.cc
@@ -35,6 +35,7 @@
#include <math.h>
#include "canvastoolselections.h"
+#include "canvastoolthreshold.h"
#define DEFYSCALE 200
@@ -55,22 +56,18 @@ Canvas::Canvas(QWidget *parent)
xoffset = 0.0;
yoffset = 0.5;
- threshold = 0.5;
- threshold_is_moving = false;
-
colBg = QColor(180, 200, 180);
colSec = QColor(160, 180, 160);
colWavMax = QColor(100, 100, 100);
colWavAvg = QColor(0, 0, 0);
colMax = QColor(127, 127, 255);
colHalf = QColor(180, 180, 255);
- colThreshold = QColor(255, 127, 127);
- colThresholdMoving = QColor(180, 0, 0);
setCursor(Qt::ArrowCursor);
wav = QImage(width(), height(), QImage::Format_RGB32);
+ tools.push_back(new CanvasToolThreshold(this));
tools.push_back(new CanvasToolSelections(this));
}
@@ -146,24 +143,6 @@ float Canvas::unmapY(float y)
void Canvas::mouseMoveEvent(QMouseEvent *event)
{
- if(threshold_is_moving) {
- float val = unmapY(event->y());
- if(fabs(val) > 1.0) val = 1.0;
- threshold = fabs(val);
- update();
- return;
- }
-
- if(event->button() != Qt::LeftButton) {
- if(abs(event->y() - mapY(threshold)) < 2 ||
- abs(event->y() - mapY(-threshold)) < 2 ) {
- setCursor(Qt::SplitVCursor);
- return;
- } else {
- setCursor(Qt::ArrowCursor);
- }
- }
-
for(int i = 0; i < tools.size(); i++) {
if(tools[i]->mouseMoveEvent(event)) return;
}
@@ -171,17 +150,6 @@ void Canvas::mouseMoveEvent(QMouseEvent *event)
void Canvas::mousePressEvent(QMouseEvent *event)
{
- if(event->button() == Qt::LeftButton) {
-
- // Check if threshold is being dragged.
- if(abs(event->y() - mapY(threshold)) < 2 ||
- abs(event->y() - mapY(-threshold)) < 2 ) {
- threshold_is_moving = true;
- update();
- return;
- }
- }
-
for(int i = 0; i < tools.size(); i++) {
if(tools[i]->mousePressEvent(event)) return;
}
@@ -189,15 +157,6 @@ void Canvas::mousePressEvent(QMouseEvent *event)
void Canvas::mouseReleaseEvent(QMouseEvent *event)
{
- if(event->button() == Qt::LeftButton) {
- if(threshold_is_moving) {
- threshold_is_moving = false;
- setCursor(Qt::ArrowCursor);
- update();
- return;
- }
- }
-
for(int i = 0; i < tools.size(); i++) {
if(tools[i]->mouseReleaseEvent(event)) return;
}
@@ -282,13 +241,6 @@ void Canvas::paintEvent(QPaintEvent *event)
painter.drawImage(event->rect(),wav,event->rect());
- if(threshold_is_moving) painter.setPen(colThresholdMoving);
- else painter.setPen(colThreshold);
- painter.drawLine(event->rect().x(), mapY(threshold),
- event->rect().x() + event->rect().width(), mapY(threshold));
- painter.drawLine(event->rect().x(), mapY(-threshold),
- event->rect().x() + event->rect().width(), mapY(-threshold));
-
for(int i = 0; i < tools.size(); i++) {
tools[i]->paintEvent(event, painter);
}
diff --git a/dgedit/canvas.h b/dgedit/canvas.h
index b0ff552..3c268ed 100644
--- a/dgedit/canvas.h
+++ b/dgedit/canvas.h
@@ -81,19 +81,12 @@ private:
float xoffset;
float yoffset;
- float threshold;
- bool threshold_is_moving;
-
QColor colBg;
QColor colSec;
QColor colMax;
QColor colHalf;
QColor colWavMax;
QColor colWavAvg;
- QColor colThreshold;
- QColor colThresholdMoving;
-
-
QVector<CanvasTool*> tools;
};
diff --git a/dgedit/canvastoolthreshold.cc b/dgedit/canvastoolthreshold.cc
new file mode 100644
index 0000000..6fa1b2e
--- /dev/null
+++ b/dgedit/canvastoolthreshold.cc
@@ -0,0 +1,108 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * canvastoolthreshold.cc
+ *
+ * Fri Jul 29 16:27:00 CEST 2011
+ * Copyright 2011 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "canvastoolthreshold.h"
+
+#include <math.h>
+
+#define mapX(x) canvas->mapX(x)
+#define mapY(x) canvas->mapY(x)
+#define unmapX(x) canvas->unmapX(x)
+#define unmapY(x) canvas->unmapY(x)
+
+CanvasToolThreshold::CanvasToolThreshold(Canvas *c)
+{
+ canvas = c;
+ threshold = 0.5;
+ threshold_is_moving = false;
+
+ colThreshold = QColor(255, 127, 127);
+ colThresholdMoving = QColor(180, 0, 0);
+}
+
+bool CanvasToolThreshold::mouseMoveEvent(QMouseEvent *event)
+{
+ if(event->button() != Qt::LeftButton) {
+ if(abs(event->y() - mapY(threshold)) < 2 ||
+ abs(event->y() - mapY(-threshold)) < 2 ) {
+ canvas->setCursor(Qt::SplitVCursor);
+ return true;
+ } else {
+ canvas->setCursor(Qt::ArrowCursor);
+ }
+ }
+
+ if(threshold_is_moving) {
+ float val = unmapY(event->y());
+ if(fabs(val) > 1.0) val = 1.0;
+ threshold = fabs(val);
+ canvas->update();
+ return true;
+ }
+
+ return false;
+}
+
+bool CanvasToolThreshold::mousePressEvent(QMouseEvent *event)
+{
+ if(event->button() == Qt::LeftButton) {
+
+ // Check if threshold is being dragged.
+ if(abs(event->y() - mapY(threshold)) < 2 ||
+ abs(event->y() - mapY(-threshold)) < 2 ) {
+ threshold_is_moving = true;
+ canvas->update();
+ return true;
+ }
+ }
+
+ return false;
+}
+
+bool CanvasToolThreshold::mouseReleaseEvent(QMouseEvent *event)
+{
+ if(event->button() == Qt::LeftButton) {
+ if(threshold_is_moving) {
+ threshold_is_moving = false;
+ canvas->setCursor(Qt::ArrowCursor);
+ canvas->update();
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void CanvasToolThreshold::paintEvent(QPaintEvent *event, QPainter &painter)
+{
+ if(threshold_is_moving) painter.setPen(colThresholdMoving);
+ else painter.setPen(colThreshold);
+ painter.drawLine(event->rect().x(), mapY(threshold),
+ event->rect().x() + event->rect().width(), mapY(threshold));
+ painter.drawLine(event->rect().x(), mapY(-threshold),
+ event->rect().x() + event->rect().width(), mapY(-threshold));
+}
+
diff --git a/dgedit/canvastoolthreshold.h b/dgedit/canvastoolthreshold.h
new file mode 100644
index 0000000..b19bf01
--- /dev/null
+++ b/dgedit/canvastoolthreshold.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * canvastoolthreshold.h
+ *
+ * Fri Jul 29 16:27:00 CEST 2011
+ * Copyright 2011 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo 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 DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#ifndef __DRUMGIZMO_CANVASTOOLTHRESHOLD_H__
+#define __DRUMGIZMO_CANVASTOOLTHRESHOLD_H__
+
+#include "canvastool.h"
+
+#include <QColor>
+
+#include "canvas.h"
+
+class CanvasToolThreshold : public CanvasTool {
+Q_OBJECT
+public:
+ CanvasToolThreshold(Canvas *canvas);
+
+ bool mouseMoveEvent(QMouseEvent *event);
+ bool mousePressEvent(QMouseEvent *event);
+ bool mouseReleaseEvent(QMouseEvent *event);
+ void paintEvent(QPaintEvent *event, QPainter &painter);
+
+private:
+ float threshold;
+ bool threshold_is_moving;
+
+ Canvas *canvas;
+
+ QColor colThreshold;
+ QColor colThresholdMoving;
+};
+
+#endif/*__DRUMGIZMO_CANVASTOOLTHRESHOLD_H__*/