diff options
author | Tim E. Real <termtech@rogers.com> | 2011-02-27 09:12:38 +0000 |
---|---|---|
committer | Tim E. Real <termtech@rogers.com> | 2011-02-27 09:12:38 +0000 |
commit | 1a4f5609b180772326e48aaca43b0ac02ff8f268 (patch) | |
tree | dcdd60840c6fff5cb5ccf374645b66603399f079 /muse2/muse/ctrl | |
parent | b12a5b74f811a565a6c8d8922cccfd281e639f2a (diff) |
Fixed piano roll controller graph text drawing (finally!)
Diffstat (limited to 'muse2/muse/ctrl')
-rw-r--r-- | muse2/muse/ctrl/ctrlcanvas.cpp | 75 | ||||
-rw-r--r-- | muse2/muse/ctrl/ctrlcanvas.h | 1 |
2 files changed, 41 insertions, 35 deletions
diff --git a/muse2/muse/ctrl/ctrlcanvas.cpp b/muse2/muse/ctrl/ctrlcanvas.cpp index d8281b1e..6f37d1ee 100644 --- a/muse2/muse/ctrl/ctrlcanvas.cpp +++ b/muse2/muse/ctrl/ctrlcanvas.cpp @@ -12,6 +12,7 @@ #include <QCursor> #include <QMouseEvent> +#include "app.h" #include "globals.h" #include "ctrledit.h" #include "midieditor.h" @@ -108,6 +109,7 @@ CtrlCanvas::CtrlCanvas(MidiEditor* e, QWidget* parent, int xmag, const char* name, CtrlPanel* pnl) : View(parent, xmag, 1, name) { setBg(Qt::white); + setFont(config.fonts[3]); editor = e; drag = DRAG_OFF; tool = PointerTool; @@ -133,6 +135,7 @@ CtrlCanvas::CtrlCanvas(MidiEditor* e, QWidget* parent, int xmag, setCurTrackAndPart(); } connect(song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); + connect(muse, SIGNAL(configChanged()), SLOT(configChanged())); curDrumInstrument = editor->curDrumInstrument(); //printf("CtrlCanvas::CtrlCanvas curDrumInstrument:%d\n", curDrumInstrument); @@ -339,6 +342,15 @@ bool CtrlCanvas::setCurTrackAndPart() } //--------------------------------------------------------- +// configChanged +//--------------------------------------------------------- + +void CtrlCanvas::configChanged() +{ + songChanged(SC_CONFIG); +} + +//--------------------------------------------------------- // songChanged // all marked parts are added to the internal event list //--------------------------------------------------------- @@ -349,6 +361,9 @@ void CtrlCanvas::songChanged(int type) if(type == SC_MIDI_CONTROLLER) return; + if(type & SC_CONFIG) + setFont(config.fonts[3]); + bool changed = false; if(type & (SC_CONFIG | SC_PART_MODIFIED | SC_SELECTION)) changed = setCurTrackAndPart(); @@ -1240,8 +1255,11 @@ void CtrlCanvas::pdrawItems(QPainter& p, const QRect& rect, const MidiPart* part int w = rect.width() + 2; int wh = height(); + noEvents=true; + if(velo) { + noEvents=false; for(iCEvent i = items.begin(); i != items.end(); ++i) { CEvent* e = *i; @@ -1292,9 +1310,10 @@ void CtrlCanvas::pdrawItems(QPainter& p, const QRect& rect, const MidiPart* part } int x1 = rect.x(); int lval = CTRL_VAL_UNKNOWN; - noEvents=false; + ///noEvents=false; for (iCEvent i = items.begin(); i != items.end(); ++i) { + noEvents=false; CEvent* e = *i; // Draw unselected part controller events (lines) on top of selected part events (bars). //if((fg && (e->part() == part)) || (!fg && (e->part() != part))) @@ -1361,7 +1380,7 @@ void CtrlCanvas::pdrawItems(QPainter& p, const QRect& rect, const MidiPart* part { if(!fg) { p.fillRect(x1, 0, (x+w) - x1, wh, Qt::darkGray); - noEvents=true; + ///noEvents=true; } } else @@ -1463,28 +1482,6 @@ void CtrlCanvas::pdraw(QPainter& p, const QRect& rect) } } - /* - //--------------------------------------------------- - // 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 lasso //--------------------------------------------------- @@ -1503,19 +1500,23 @@ void CtrlCanvas::pdraw(QPainter& p, const QRect& rect) void CtrlCanvas::drawOverlay(QPainter& p) { - //QString s(_controller->name()); QString s(_controller ? _controller->name() : QString("")); - p.setFont(config.fonts[3]); + + //p.setFont(config.fonts[3]); // Use widget font instead. + p.setFont(font()); + p.setPen(Qt::black); - QFontMetrics fm(config.fonts[3]); - int y = fm.lineSpacing() + 2; - //printf("CtrlCanvas::drawOverlay fm w:%d h:%d\n", fm.width(_controller ? _controller->name() : QString("")), fm.height()); + + //QFontMetrics fm(config.fonts[3]); // Use widget font metrics instead. + //int y = fm.lineSpacing() + 2; + int y = fontMetrics().lineSpacing() + 2; + p.drawText(2, y, s); if (noEvents) { //p.setFont(config.fonts[3]); //p.setPen(Qt::black); - p.drawText(width()/2-100,height()/2-10, "Use shift + pencil or line tool to draw new events"); - //p.drawText(2 , y * 2, "Use shift + pencil or line tool to draw new events"); + //p.drawText(width()/2-100,height()/2-10, "Use shift + pencil or line tool to draw new events"); + p.drawText(2 , y * 2, "Use shift + pencil or line tool to draw new events"); } } @@ -1526,18 +1527,22 @@ void CtrlCanvas::drawOverlay(QPainter& p) QRect CtrlCanvas::overlayRect() const { - QFontMetrics fm(config.fonts[3]); + //QFontMetrics fm(config.fonts[3]); // Use widget font metrics instead (and set a widget font) !!! + QFontMetrics fm(fontMetrics()); QRect r(fm.boundingRect(_controller ? _controller->name() : QString(""))); - //QRect r(0, 0, fm.width(_controller ? _controller->name() : QString("")), fm.height()); + //r.translate(2, 2); // top/left margin - r.translate(2, fm.lineSpacing() + 2); // + int y = fm.lineSpacing() + 2; + r.translate(2, y); if (noEvents) { QRect r2(fm.boundingRect(QString("Use shift + pencil or line tool to draw new events"))); - r2.translate(width()/2-100, height()/2-10); + //r2.translate(width()/2-100, height()/2-10); + r2.translate(2, y * 2); r |= r2; } + //printf("CtrlCanvas::overlayRect x:%d y:%d w:%d h:%d\n", r.x(), r.y(), r.width(), r.height()); return r; } diff --git a/muse2/muse/ctrl/ctrlcanvas.h b/muse2/muse/ctrl/ctrlcanvas.h index e76bf71c..e06874e2 100644 --- a/muse2/muse/ctrl/ctrlcanvas.h +++ b/muse2/muse/ctrl/ctrlcanvas.h @@ -141,6 +141,7 @@ class CtrlCanvas : public View { private slots: void songChanged(int type); + void configChanged(); void setCurDrumInstrument(int); public slots: |