summaryrefslogtreecommitdiff
path: root/attic/muse2-oom/muse2/muse/master/master.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse2-oom/muse2/muse/master/master.cpp')
-rw-r--r--attic/muse2-oom/muse2/muse/master/master.cpp338
1 files changed, 0 insertions, 338 deletions
diff --git a/attic/muse2-oom/muse2/muse/master/master.cpp b/attic/muse2-oom/muse2/muse/master/master.cpp
deleted file mode 100644
index 4a33a8c4..00000000
--- a/attic/muse2-oom/muse2/muse/master/master.cpp
+++ /dev/null
@@ -1,338 +0,0 @@
-//=========================================================
-// MusE
-// Linux Music Editor
-// $Id: master.cpp,v 1.3 2004/04/11 13:03:32 wschweer Exp $
-// (C) Copyright 2000 Werner Schweer (ws@seh.de)
-//=========================================================
-
-#include <stdio.h>
-#include <values.h>
-
-#include <QCursor>
-#include <QEvent>
-#include <QMouseEvent>
-#include <QPainter>
-
-#include "globals.h"
-#include "master.h"
-#include "song.h"
-#include "scrollscale.h"
-#include "midi.h"
-#include "midieditor.h"
-#include "icons.h"
-#include "audio.h"
-
-extern void drawTickRaster(QPainter& p, int x, int y,
- int w, int h, int quant);
-
-//---------------------------------------------------------
-// Master
-//---------------------------------------------------------
-
-Master::Master(MidiEditor* e, QWidget* parent, int xmag, int ymag)
- : View(parent, xmag, ymag)
- {
- editor = e;
- setBg(Qt::white);
- vscroll = 0;
- pos[0] = 0;
- pos[1] = 0;
- pos[2] = 0;
- setFocusPolicy(Qt::StrongFocus); // Tim.
- setMouseTracking(true);
- connect(song, SIGNAL(posChanged(int, unsigned, bool)), this, SLOT(setPos(int, unsigned, bool)));
- connect(song, SIGNAL(songChanged(int)), this, SLOT(redraw()));
- }
-
-//---------------------------------------------------------
-// setPos
-//---------------------------------------------------------
-
-void Master::setPos(int idx, unsigned val, bool adjustScrollbar)
- {
- if (pos[idx] == val)
- return;
-
- int opos = mapx(pos[idx]);
- int npos = mapx(val);
-
- if (adjustScrollbar && idx == 0) {
- switch (song->follow()) {
- case Song::NO:
- break;
- case Song::JUMP:
- if (npos >= width()) {
- int ppos = val - rmapxDev(width()/8);
- if (ppos < 0)
- ppos = 0;
- emit followEvent(ppos);
- opos = mapx(pos[idx]);
- npos = mapx(val);
- }
- else if (npos < 0) {
- int ppos = val - rmapxDev(width()*3/4);
- if (ppos < 0)
- ppos = 0;
- emit followEvent(ppos);
- opos = mapx(pos[idx]);
- npos = mapx(val);
- }
- break;
- case Song::CONTINUOUS:
- if (npos > (width()/2)) {
- int ppos = pos[idx] - rmapxDev(width()/2);
- if (ppos < 0)
- ppos = 0;
- emit followEvent(ppos);
- opos = mapx(pos[idx]);
- npos = mapx(val);
- }
- else if (npos < (width()/2)) {
- int ppos = pos[idx] - rmapxDev(width()/2);
- if (ppos < 0)
- ppos = 0;
- emit followEvent(ppos);
- opos = mapx(pos[idx]);
- npos = mapx(val);
- }
- break;
- }
- }
-
- int x;
- int w = 1;
- if (opos > npos) {
- w += opos - npos;
- x = npos;
- }
- else {
- w += npos - opos;
- x = opos;
- }
- pos[idx] = val;
- redraw(QRect(x-1, 0, w+2, height()));
- }
-
-//---------------------------------------------------------
-// leaveEvent
-//---------------------------------------------------------
-
-void Master::leaveEvent(QEvent*)
- {
- emit tempoChanged(-1);
- emit timeChanged(MAXINT);
- }
-
-//---------------------------------------------------------
-// pdraw
-//---------------------------------------------------------
-
-void Master::pdraw(QPainter& p, const QRect& rect)
- {
- View::pdraw(p, rect); // calls draw()
- p.resetTransform();
-
- int x = rect.x();
- int y = rect.y();
- int w = rect.width() + 2;
- int h = rect.height();
-
- int wh = height();
- //---------------------------------------------------
- // draw Canvas Items
- //---------------------------------------------------
-
- const TempoList* tl = &tempomap;
- for (ciTEvent i = tl->begin(); i != tl->end(); ++i) {
- TEvent* e = i->second;
- int etick = mapx(i->first);
- int stick = mapx(i->second->tick);
- int tempo = mapy(280000 - int(60000000000.0/(e->tempo)));
-
- if (tempo < 0)
- tempo = 0;
- if (tempo < wh) {
- p.fillRect(stick, tempo, etick-stick, wh, Qt::blue);
- }
- }
-
- //---------------------------------------------------
- // draw marker
- //---------------------------------------------------
-
- int xp = mapx(pos[0]);
- if (xp >= x && xp < x+w) {
- p.setPen(Qt::red);
- p.drawLine(xp, y, xp, y+h);
- }
- xp = mapx(pos[1]);
- if (xp >= x && xp < x+w) {
- p.setPen(Qt::blue);
- p.drawLine(xp, y, xp, y+h);
- }
- xp = mapx(pos[2]);
- if (xp >= x && xp < x+w) {
- p.setPen(Qt::blue);
- p.drawLine(xp, y, xp, y+h);
- }
- }
-
-//---------------------------------------------------------
-// draw
-//---------------------------------------------------------
-
-void Master::draw(QPainter& p, const QRect& rect)
- {
- drawTickRaster(p, rect.x(), rect.y(),
- rect.width(), rect.height(), 0);
- }
-
-//---------------------------------------------------------
-// viewMousePressEvent
-//---------------------------------------------------------
-
-void Master::viewMousePressEvent(QMouseEvent* event)
- {
- start = event->pos();
- Tool activeTool = tool;
-// bool shift = event->state() & ShiftButton;
-
- switch (activeTool) {
- case PointerTool:
- drag = DRAG_LASSO_START;
- break;
-
- case PencilTool:
- drag = DRAG_NEW;
- song->startUndo();
- newVal(start.x(), start.x(), start.y());
- break;
-
- case RubberTool:
- drag = DRAG_DELETE;
- song->startUndo();
- deleteVal(start.x(), start.x());
- break;
-
- default:
- break;
- }
- }
-
-//---------------------------------------------------------
-// viewMouseMoveEvent
-//---------------------------------------------------------
-
-void Master::viewMouseMoveEvent(QMouseEvent* event)
- {
- QPoint pos = event->pos();
-// QPoint dist = pos - start;
-// bool moving = dist.y() >= 3 || dist.y() <= 3 || dist.x() >= 3 || dist.x() <= 3;
-
- switch (drag) {
- case DRAG_NEW:
- newVal(start.x(), pos.x(), pos.y());
- start = pos;
- break;
-
- case DRAG_DELETE:
- deleteVal(start.x(), pos.x());
- start = pos;
- break;
-
- default:
- break;
- }
- emit tempoChanged(280000 - event->y());
- int x = pos.x();
- if (x < 0)
- x = 0;
- emit timeChanged(editor->rasterVal(x));
- }
-
-//---------------------------------------------------------
-// viewMouseReleaseEvent
-//---------------------------------------------------------
-
-void Master::viewMouseReleaseEvent(QMouseEvent*)
- {
- switch (drag) {
- case DRAG_RESIZE:
- case DRAG_NEW:
- case DRAG_DELETE:
- song->endUndo(SC_TEMPO);
- break;
- default:
- break;
- }
- drag = DRAG_OFF;
- }
-
-//---------------------------------------------------------
-// deleteVal
-//---------------------------------------------------------
-
-bool Master::deleteVal1(unsigned int x1, unsigned int x2)
- {
- bool songChanged = false;
-
- TempoList* tl = &tempomap;
- for (iTEvent i = tl->begin(); i != tl->end(); ++i) {
- if (i->first < x1)
- continue;
- if (i->first >= x2)
- break;
- iTEvent ii = i;
- ++ii;
- if (ii != tl->end()) {
- int tempo = ii->second->tempo;
- audio->msgDeleteTempo(i->first, tempo, false);
- songChanged = true;
- }
- }
- return songChanged;
- }
-
-void Master::deleteVal(int x1, int x2)
- {
- if (deleteVal1(editor->rasterVal1(x1), x2))
- redraw();
- }
-
-//---------------------------------------------------------
-// setTool
-//---------------------------------------------------------
-
-void Master::setTool(int t)
- {
- if (tool == Tool(t))
- return;
- tool = Tool(t);
- switch(tool) {
- case PencilTool:
- setCursor(QCursor(*pencilIcon, 4, 15));
- break;
- default:
- setCursor(QCursor(Qt::ArrowCursor));
- break;
- }
- }
-
-//---------------------------------------------------------
-// newVal
-//---------------------------------------------------------
-
-void Master::newVal(int x1, int x2, int y)
- {
- int xx1 = editor->rasterVal1(x1);
- int xx2 = editor->rasterVal2(x2);
-
- if (xx1 > xx2) {
- int tmp = xx2;
- xx2 = xx1;
- xx1 = tmp;
- }
- deleteVal1(xx1, xx2);
- audio->msgAddTempo(xx1, int(60000000000.0/(280000 - y)), false);
- redraw();
- }