summaryrefslogtreecommitdiff
path: root/muse2/muse
diff options
context:
space:
mode:
authorRobert Jonsson <spamatica@gmail.com>2011-03-06 19:08:32 +0000
committerRobert Jonsson <spamatica@gmail.com>2011-03-06 19:08:32 +0000
commit1bd4f2e8d9745cabb667b043171cad22c8577768 (patch)
treebab523dd54a65542d9f3c8b56adc87d7e1ff6558 /muse2/muse
parent03b22522651de83a45494a2745f05b7a19ecb3d7 (diff)
draw parts while recording
Diffstat (limited to 'muse2/muse')
-rw-r--r--muse2/muse/arranger/pcanvas.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp
index 0317d99e..69412542 100644
--- a/muse2/muse/arranger/pcanvas.cpp
+++ b/muse2/muse/arranger/pcanvas.cpp
@@ -2936,6 +2936,43 @@ void PartCanvas::drawTopItem(QPainter& p, const QRect& rect)
}
yy += track->height();
}
+
+ QRect rr = p.worldMatrix().mapRect(rect);
+
+ p.save();
+ p.resetTransform();
+
+ // primitive write recording while it happens
+ // should be enhanced/exchanged with solution that draws events and waveform
+ ypos=0;
+ if (song->record() && audio->isPlaying()) {
+ for (iTrack it = tl->begin(); it != tl->end(); ++it) {
+ Track* track = *it;
+ if (track->recordFlag()) {
+ int startPos = audio->getStartRecordPos().tick();
+ if (song->punchin())
+ startPos=song->lpos();
+ if (song->punchout() && song->cpos() > song->rpos()) {
+ continue; // no drawing if we are beyond punch out.
+ }
+
+
+ if (song->cpos() > startPos) {
+ int startx = mapx(startPos);
+ int width = mapx(song->cpos()) - mapx(startPos);
+
+ p.fillRect(startx,ypos, width, track->height(), config.partColors[0]);
+ p.setPen(Qt::black);
+ p.drawLine(startx,ypos,startx+width, ypos);
+ p.drawLine(startx,ypos+1,startx+width, ypos+1);
+ p.drawLine(startx,ypos+track->height(),startx+width, ypos+track->height());
+ p.drawLine(startx,ypos+track->height()-1,startx+width, ypos+track->height()-1);
+ }
+ }
+ ypos+=track->height();
+ }
+ }
+ p.restore();
}
//---------------------------------------------------------