summaryrefslogtreecommitdiff
path: root/muse2/muse
diff options
context:
space:
mode:
authorTim E. Real <termtech@rogers.com>2010-12-20 05:00:55 +0000
committerTim E. Real <termtech@rogers.com>2010-12-20 05:00:55 +0000
commite5a7a6f186c458e3c7087dbc5604959b519bdba9 (patch)
treeb1060f1168ae7837a071ed9443c7f1b3829b9517 /muse2/muse
parent673172e3ffb8e345b2bbfb6596ac3d79a1e17f14 (diff)
Fixed arranger grid h-line drawing, track, and part drawing alignment, border issues.
Diffstat (limited to 'muse2/muse')
-rw-r--r--muse2/muse/arranger/arranger.cpp3
-rw-r--r--muse2/muse/arranger/pcanvas.cpp103
-rw-r--r--muse2/muse/gconfig.cpp2
-rw-r--r--muse2/muse/widgets/musewidgetsplug.cpp2
4 files changed, 77 insertions, 33 deletions
diff --git a/muse2/muse/arranger/arranger.cpp b/muse2/muse/arranger/arranger.cpp
index c9e9a8db..5272ee75 100644
--- a/muse2/muse/arranger/arranger.cpp
+++ b/muse2/muse/arranger/arranger.cpp
@@ -330,7 +330,8 @@ Arranger::Arranger(QMainWindow* parent, const char* name)
//vscroll = new QScrollBar(1, 20*20, 1, 5, 0, Vertical, editor);
//vscroll = new QScrollBar(1, 20*20, 5, 25, 0, Qt::Vertical, editor);
vscroll = new QScrollBar(editor);
- vscroll->setMinimum(1);
+ ///vscroll->setMinimum(1);
+ vscroll->setMinimum(0); // Tim.
vscroll->setMaximum(20*20);
vscroll->setSingleStep(5);
vscroll->setPageStep(25);
diff --git a/muse2/muse/arranger/pcanvas.cpp b/muse2/muse/arranger/pcanvas.cpp
index ddc7dfff..d9c3880e 100644
--- a/muse2/muse/arranger/pcanvas.cpp
+++ b/muse2/muse/arranger/pcanvas.cpp
@@ -106,7 +106,15 @@ NPart::NPart(Part* e) : CItem(Event(), e)
{
int th = track()->height();
int y = track()->y();
- setPos(QPoint(e->tick(), y + 1));
+ //printf("NPart::NPart track name:%s, y:%d h:%d\n", track()->name().toLatin1().constData(), y, th); // REMOVE Tim.
+
+ ///setPos(QPoint(e->tick(), y + 1));
+ setPos(QPoint(e->tick(), y));
+
+ ///setBBox(QRect(e->tick(), y + 1, e->lenTick(), th));
+ // NOTE: For adjustable border size: If using a two-pixel border width while drawing, use second line.
+ // If one-pixel width, use first line. Tim.
+ //setBBox(QRect(e->tick(), y, e->lenTick(), th));
setBBox(QRect(e->tick(), y + 1, e->lenTick(), th));
}
@@ -186,14 +194,12 @@ void PartCanvas::returnPressed()
lineEditor->hide();
Part* oldPart = editPart->part();
Part* newPart = oldPart->clone();
- // Added by Tim. p3.3.6
//printf("PartCanvas::returnPressed before msgChangePart oldPart refs:%d Arefs:%d newPart refs:%d Arefs:%d\n", oldPart->events()->refCount(), oldPart->events()->arefCount(), newPart->events()->refCount(), newPart->events()->arefCount());
newPart->setName(lineEditor->text());
// Indicate do undo, and do port controller values but not clone parts.
//audio->msgChangePart(oldPart, newPart);
audio->msgChangePart(oldPart, newPart, true, true, false);
- // Added by Tim. p3.3.6
//printf("PartCanvas::returnPressed after msgChangePart oldPart refs:%d Arefs:%d newPart refs:%d Arefs:%d\n", oldPart->events()->refCount(), oldPart->events()->arefCount(), newPart->events()->refCount(), newPart->events()->arefCount());
editMode = false;
@@ -483,7 +489,6 @@ bool PartCanvas::moveItem(CItem* item, const QPoint& newpos, DragType t)
dpart->setTick(dtick);
- // Added by Tim. p3.3.6
//printf("PartCanvas::moveItem before add/changePart clone:%d spart:%p events:%p refs:%d Arefs:%d sn:%d dpart:%p events:%p refs:%d Arefs:%d sn:%d\n", clone, spart, spart->events(), spart->events()->refCount(), spart->events()->arefCount(), spart->sn(), dpart, dpart->events(), dpart->events()->refCount(), dpart->events()->arefCount(), dpart->sn());
if(t == MOVE_MOVE)
@@ -522,7 +527,6 @@ bool PartCanvas::moveItem(CItem* item, const QPoint& newpos, DragType t)
spart->setSelected(false);
}
- // Added by Tim. p3.3.6
//printf("PartCanvas::moveItem after add/changePart spart:%p events:%p refs:%d Arefs:%d dpart:%p events:%p refs:%d Arefs:%d\n", spart, spart->events(), spart->events()->refCount(), spart->events()->arefCount(), dpart, dpart->events(), dpart->events()->refCount(), dpart->events()->arefCount());
if (song->len() < (dpart->lenTick() + dpart->tick()))
@@ -874,7 +878,6 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt)
Part* spart = npart->part();
Track* track = npart->track();
Part* dpart = track->newPart(spart, false);
- // Added by Tim. p3.3.6
//printf("PartCanvas::itemPopup: #1 spart %s %p next:%s %p prev:%s %p\n", spart->name().toLatin1().constData(), spart, spart->nextClone()->name().toLatin1().constData(), spart->nextClone(), spart->prevClone()->name().toLatin1().constData(), spart->prevClone());
//printf("PartCanvas::itemPopup: #1 dpart %s %p next:%s %p prev:%s %p\n", dpart->name().toLatin1().constData(), dpart, dpart->nextClone()->name().toLatin1().constData(), dpart->nextClone(), dpart->prevClone()->name().toLatin1().constData(), dpart->prevClone());
@@ -889,7 +892,6 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt)
// Indicate no undo, and do port controller values but not clone parts.
//audio->msgChangePart(spart, dpart, false);
audio->msgChangePart(spart, dpart, false, true, false);
- // Added by Tim. p3.3.6
//printf("PartCanvas::itemPopup: #2 spart %s %p next:%s %p prev:%s %p\n", spart->name().toLatin1().constData(), spart, spart->nextClone()->name().toLatin1().constData(), spart->nextClone(), spart->prevClone()->name().toLatin1().constData(), spart->prevClone());
//printf("PartCanvas::itemPopup: #2 dpart %s %p next:%s %p prev:%s %p\n", dpart->name().toLatin1().constData(), dpart, dpart->nextClone()->name().toLatin1().constData(), dpart->nextClone(), dpart->prevClone()->name().toLatin1().constData(), dpart->prevClone());
@@ -946,7 +948,6 @@ void PartCanvas::itemPopup(CItem* item, int n, const QPoint& pt)
{
for(int i = 0; i < j; ++i)
{
- // Added by Tim. p3.3.6
//printf("PartCanvas::itemPopup i:%d %s %p events %p refs:%d arefs:%d\n", i, p->name().toLatin1().constData(), p, part->cevents(), part->cevents()->refCount(), j);
p->setSelected(true);
@@ -1422,9 +1423,9 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect)
//printf("part start tick %d part start pixel %d\n", part->tick(), r.x());
- // Added by Tim. p3.3.6
//printf("PartCanvas::drawItem %s evRefs:%d pTick:%d pLen:%d bb.x:%d bb.w:%d rect.x:%d rect.w:%d r.x:%d r.w:%d\n", part->name().toLatin1().constData(), part->events()->arefCount(), pTick, part->lenTick(), item->bbox().x(), item->bbox().width(), rect.x(), rect.width(), r.x(), r.width());
+ // THIS WAS IN MUSE-1:
// Must be reasonable about very low negative x values! With long songs > 15min
// and with high horizontal magnification, 'ghost' drawings appeared,
// apparently the result of truncation later (xp = -65006 caused ghosting
@@ -1438,45 +1439,56 @@ void PartCanvas::drawItem(QPainter& p, const CItem* item, const QRect& rect)
p.setPen(Qt::black);
if (part->mute()) {
- p.setBrush(Qt::gray);
- p.drawRect(r);
+ QColor c(Qt::white);
+ c.setAlpha(config.globalAlphaBlend);
+ p.setBrush(c);
+
+ // NOTE: For one-pixel border use first line For two-pixel border use second.
+ p.drawRect(QRect(r.x(), r.y()-1, r.width(), r.height()));
+ //p.drawRect(r);
+
return;
}
if (item->isMoving()) {
- p.setBrush(Qt::gray);
- p.drawRect(r);
+ QColor c(Qt::gray);
+ c.setAlpha(config.globalAlphaBlend);
+ p.setBrush(c);
+
+ // NOTE: For one-pixel border use first line. For two-pixel border use second.
+ p.drawRect(QRect(r.x(), r.y()-1, r.width(), r.height()));
+ //p.drawRect(r);
+
}
//else if (part->mute())
// return;
else if (part->selected()) {
bool clone = part->events()->arefCount() > 1;
- //p.setPen(config.partColors[i]);
- //p.setPen(QPen(config.partColors[i], 2, clone ? Qt::DashLine : Qt::SolidLine));
+
+ // NOTE: For one-pixel border use first line and don't bother with setCosmetic.
+ // For a two-pixel border use second line and MUST use setCosmetic! Tim.
+ //p.setPen(QPen(config.partColors[i], 0, clone ? Qt::DashLine : Qt::SolidLine));
QPen pen(config.partColors[i], 2, clone ? Qt::DashLine : Qt::SolidLine);
pen.setCosmetic(true);
+
p.setPen(pen);
- //p.setBrush(Qt::black);
- QColor c(Qt::black);
// Hm, put some kind of lower limit? If so do that globally to the adjustment.
- c.setAlpha(config.globalAlphaBlend);
+ QColor c(Qt::black);
+ c.setAlpha(config.globalAlphaBlend);
p.setBrush(c);
p.drawRect(r);
}
else {
bool clone = part->events()->arefCount() > 1;
+
+ // NOTE: Pixel width: See above note.
//p.setPen(QPen(Qt::black, 0, clone ? Qt::DashLine : Qt::SolidLine));
QPen pen(Qt::black, 2, clone ? Qt::DashLine : Qt::SolidLine);
pen.setCosmetic(true);
- p.setPen(pen);
- //p.setBrush(config.partColors[i]);
+ p.setPen(pen);
QColor c(config.partColors[i]);
c.setAlpha(config.globalAlphaBlend);
p.setBrush(c);
- //p.setBrush(QColor(config.partColors[i].red(),
- // config.partColors[i].green(),
- // config.partColors[i].blue(),
- // 127));
p.drawRect(r);
}
@@ -1589,8 +1601,20 @@ void PartCanvas::drawMoving(QPainter& p, const CItem* item, const QRect&)
//if(!item->isMoving())
// return;
p.setPen( Qt::black);
- p.setBrush( Qt::NoBrush);
- p.drawRect(item->mp().x(), item->mp().y()+1, item->width(), item->height());
+
+ //p.setBrush( Qt::NoBrush);
+ //QColor c(Qt::gray);
+ Part* part = ((NPart*)item)->part();
+ QColor c(config.partColors[part->colorIndex()]);
+
+ ///c.setAlpha(config.globalAlphaBlend);
+ c.setAlpha(128); // Fix this regardless of global setting. Should be OK.
+
+ p.setBrush(c);
+
+ // NOTE: For one-pixel border use second line. For two-pixel border use first.
+ //p.drawRect(item->mp().x(), item->mp().y()+1, item->width(), item->height());
+ p.drawRect(item->mp().x(), item->mp().y(), item->width(), item->height());
}
//---------------------------------------------------------
@@ -2765,13 +2789,19 @@ void PartCanvas::drawCanvas(QPainter& p, const QRect& rect)
TrackList* tl = song->tracks();
int yy = 0;
+ int th;
for (iTrack it = tl->begin(); it != tl->end(); ++it) {
if (yy > y + h)
break;
Track* track = *it;
- if (/*config.canvasShowGrid ||*/ !track->isMidiTrack()) {
+ th = track->height();
+ ///if (/*config.canvasShowGrid ||*/ !track->isMidiTrack()) {
+ if (config.canvasShowGrid && (track->isMidiTrack() || track->type() == Track::WAVE)) // Tim.
+ {
+ //printf("PartCanvas::drawCanvas track name:%s, y:%d h:%d\n", track->name().toLatin1().constData(), yy, th); // REMOVE Tim.
p.setPen(baseColor.dark(130));
- p.drawLine(x, yy, x + w, yy);
+ ///p.drawLine(x, yy, x + w, yy);
+ p.drawLine(x, yy + th, x + w, yy + th); // Tim.
p.setPen(baseColor);
}
if (!track->isMidiTrack() && (track->type() != Track::WAVE)) {
@@ -2795,8 +2825,21 @@ void PartCanvas::drawCanvas(QPainter& p, const QRect& rect)
void PartCanvas::drawAudioTrack(QPainter& p, const QRect& r, AudioTrack* /* t */)
{
- p.setPen(QPen(Qt::black, 2, Qt::SolidLine));
- p.setBrush(Qt::gray);
+ // NOTE: For one-pixel border use first line and don't bother with setCosmetic.
+ // For a two-pixel border use second line and MUST use setCosmetic! Tim.
+ QPen pen(Qt::black, 0, Qt::SolidLine);
+ //p.setPen(QPen(Qt::black, 2, Qt::SolidLine));
+ //pen.setCosmetic(true);
+ p.setPen(pen);
+ //p.setBrush(Qt::gray);
+ QColor c(Qt::gray);
+ c.setAlpha(config.globalAlphaBlend);
+ p.setBrush(c);
+
+ // Factor in pen stroking size:
+ //QRect rr(r);
+ //rr.setHeight(rr.height() -1);
+
p.drawRect(r);
}
diff --git a/muse2/muse/gconfig.cpp b/muse2/muse/gconfig.cpp
index 79807cd8..ec44ec3f 100644
--- a/muse2/muse/gconfig.cpp
+++ b/muse2/muse/gconfig.cpp
@@ -9,7 +9,7 @@
#include "gconfig.h"
GlobalConfigValues config = {
- 150, // globalAlphaBlend
+ 190, // globalAlphaBlend
{
QColor(0xff, 0xff, 0xff), // palette
QColor(0xff, 0xff, 0xff),
diff --git a/muse2/muse/widgets/musewidgetsplug.cpp b/muse2/muse/widgets/musewidgetsplug.cpp
index cd4cb18a..e5858bd4 100644
--- a/muse2/muse/widgets/musewidgetsplug.cpp
+++ b/muse2/muse/widgets/musewidgetsplug.cpp
@@ -39,7 +39,7 @@ static const char* valu[] = {
};
GlobalConfigValues config = {
- 150, // globalAlphaBlend
+ 190, // globalAlphaBlend
{
QColor(0xff, 0xff, 0xff), // palette
QColor(0xff, 0xff, 0xff),