summaryrefslogtreecommitdiff
authorwaspe <waspe>2004-01-24 13:44:29 (UTC)
committer waspe <waspe>2004-01-24 13:44:29 (UTC)
commit5f333c6832ff429a00498e6a36be950525541a2a (patch) (side-by-side diff)
tree035616d3cc11622f6d9b14245372362620327a46
parentd542ba6a426f9868d521dbd9eb502184086535fc (diff)
downloadopie-5f333c6832ff429a00498e6a36be950525541a2a.zip
opie-5f333c6832ff429a00498e6a36be950525541a2a.tar.gz
opie-5f333c6832ff429a00498e6a36be950525541a2a.tar.bz2
new color scheme on fretboard, maekes each ocatave appear in different color
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/tonleiter/editinst.cpp6
-rw-r--r--noncore/multimedia/tonleiter/editinst.h1
-rw-r--r--noncore/multimedia/tonleiter/fretboard.cpp43
-rw-r--r--noncore/multimedia/tonleiter/fretboard.h3
-rw-r--r--noncore/multimedia/tonleiter/mainwidget.cpp17
-rw-r--r--noncore/multimedia/tonleiter/mainwidget.h3
-rw-r--r--noncore/multimedia/tonleiter/tonleiterdatahelper.cpp15
-rw-r--r--noncore/multimedia/tonleiter/tonleiterdatahelper.h2
8 files changed, 77 insertions, 13 deletions
diff --git a/noncore/multimedia/tonleiter/editinst.cpp b/noncore/multimedia/tonleiter/editinst.cpp
index 120c3ac..f172ef8 100644
--- a/noncore/multimedia/tonleiter/editinst.cpp
+++ b/noncore/multimedia/tonleiter/editinst.cpp
@@ -35,21 +35,20 @@ Menu::InstEditDialog::InstEditDialog(TonleiterData* data,QWidget* parent,const c
connect(delButton,SIGNAL(pressed()),this,SLOT(deleteInstrument()));
toplayout->addWidget(delButton);
QPushButton* addhighButton=new QPushButton(tr("Add High String"),this,"addhighButton");
masterlayout->addWidget(addhighButton);
- QScrollView* scrollview=new QScrollView(this);
+ scrollview=new QScrollView(this);
scrollview->setVScrollBarMode(QScrollView::AlwaysOn);
scrollview->setHScrollBarMode(QScrollView::AlwaysOff);
stringwidget=new QVBox(scrollview->viewport());
stringwidget->setSizePolicy(QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum));
stringwidget->setSpacing(10);
scrollview->addChild(stringwidget);
scrollview->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::Maximum));
- //scrollview->setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding,QSizePolicy::MinimumExpanding));
masterlayout->addWidget(scrollview);
loadInstrument();
QPushButton* addlowButton=new QPushButton(tr("Add Low String"),this,"addlowButton");
masterlayout->addWidget(addlowButton);
@@ -89,18 +88,21 @@ void Menu::InstEditDialog::addHighString()
void Menu::InstEditDialog::deleteString(int id)
{
}
//****************************************************************************
void Menu::InstEditDialog::saveInstrument()
{
+ //auto delete is set to true so widgets _should_ be deleted
stringlist.clear();
}
//****************************************************************************
void Menu::InstEditDialog::loadInstrument()
{
+ stringlist.clear();
Instrument inst=data->getInstrument(instid);
+ qDebug("load Instrument : %d strings",inst.noOfStrings());
for(uint s=0;s<inst.noOfStrings();s++)
{
stringlist.append(new EditStringWidget(inst.string(s),stringwidget));
}
}
//****************************************************************************
diff --git a/noncore/multimedia/tonleiter/editinst.h b/noncore/multimedia/tonleiter/editinst.h
index 948a2de..a90c9ec 100644
--- a/noncore/multimedia/tonleiter/editinst.h
+++ b/noncore/multimedia/tonleiter/editinst.h
@@ -24,12 +24,13 @@ namespace Menu
TonleiterData* data;
int instid;
QComboBox* boxInst;
QSpinBox* stringBox;
+ QScrollView* scrollview;
QVBox* stringwidget;
//this is a QPtrList !!
typedef QList<EditStringWidget> StringWidgetList;
StringWidgetList stringlist;
public:
diff --git a/noncore/multimedia/tonleiter/fretboard.cpp b/noncore/multimedia/tonleiter/fretboard.cpp
index 7936c83..7e63e01 100644
--- a/noncore/multimedia/tonleiter/fretboard.cpp
+++ b/noncore/multimedia/tonleiter/fretboard.cpp
@@ -50,12 +50,18 @@ void Graph::FretBoard::paintEvent(QPaintEvent* pe)
//****************************************************************************
void Graph::FretBoard::resizeEvent(QResizeEvent* re)
{
Q_UNUSED(re);
}
//****************************************************************************
+void Graph::FretBoard::mouseReleaseEvent(QMouseEvent* me)
+{
+ Q_UNUSED(me);
+ emit pressed();
+}
+//****************************************************************************
void Graph::FretBoard::paintBoard(QPainter* p)
{
//debug
QColor bgc=QColor(142,138,120);
p->setPen(QPen(bgc,5));
p->setBrush(QBrush(bgc));
@@ -118,34 +124,55 @@ void Graph::FretBoard::paintStrings(QPainter* p)
//****************************************************************************
void Graph::FretBoard::paintScale(QPainter* p)
{
int dotsize=10;
int scaleid=data->getCurrentScaleID();
Scale scale=data->getScale(scaleid);
-
- int colorstart=255%inst.noOfOctaves();
- int colorintervall=(255-colorstart)/inst.noOfOctaves();
+ int baseoctave=Note::octaveOfBaseNote(data->getCurrentBaseNote(),inst.lowestNote());
for(int s=0;s<inst.noOfStrings();s++)
{
int y=(int)(stringdist*s)+ymin;
int stingid=inst.noOfStrings()-(s+1);
for(int f=0;f<=inst.noOfFrets();f++)
{
int note=inst.string(stingid)+f;
if(scale.noteInScale(data->getCurrentBaseNote(),note))
{
int x=(int)(fretdist*f)+xmin;
- int octave=Note::octaveOfBaseNote(data->getCurrentBaseNote(),note);
- if(octave>5) octave=5;
+ //no more than six octaves can be visualised (there is a zero octave)
+ int octave=Note::octaveOfBaseNote(data->getCurrentBaseNote(),note)-baseoctave;
+ if(octave<0)
+ qDebug("%d,%d",octave,baseoctave);
+ if(octave>5)
+ {
+ qDebug("octave out of range");
+ octave=5;
+ }
+
p->setPen(QColor(255,0,0));
- int c=colorstart+octave*colorintervall;
- QColor dotcolor(c,c,255);
- p->setBrush(dotcolor);
+ int c= ( (note-12*baseoctave) - (12*octave+data->getCurrentBaseNote()) )*15;
+ if(c<0 || c>255)
+ qDebug("%d = %d - ( %d + %d)",c,note,12*octave,data->getCurrentBaseNote());
+ QColor dotcolor(255,255,255);
+
+ if(octave==0)
+ dotcolor=QColor(c,c,255);
+ else if(octave==1)
+ dotcolor=QColor(c,255,c);
+ else if(octave==2)
+ dotcolor=QColor(255,c,c);
+ else if(octave==3)
+ dotcolor=QColor(255,255,c);
+ else if(octave==4)
+ dotcolor=QColor(255,c,255);
+ else
+ dotcolor=QColor(c,255,255);
+ p->setBrush(dotcolor);
p->drawEllipse(x-dotsize/2,y-dotsize/2,dotsize,dotsize);
if(data->isDrawNames())
{
p->setPen(QColor(255,155,0));
p->drawText(x-dotsize/2,y-dotsize/2,Note::getNameOfNote(note));
diff --git a/noncore/multimedia/tonleiter/fretboard.h b/noncore/multimedia/tonleiter/fretboard.h
index 458c733..bb696fb 100644
--- a/noncore/multimedia/tonleiter/fretboard.h
+++ b/noncore/multimedia/tonleiter/fretboard.h
@@ -38,17 +38,20 @@ namespace Graph
double fretdist;
double stringdist;
public:
FretBoard(TonleiterData* data,QWidget* parent,const char* name="FretBoard",WFlags f=0);
virtual ~FretBoard();
+ signals:
+ void pressed();
private slots:
void dataChange();
private:
void paintEvent(QPaintEvent* pe);
void resizeEvent(QResizeEvent* re);
+ void mouseReleaseEvent(QMouseEvent* me);
void paintBoard(QPainter* p);
void paintFrets(QPainter* p);
void paintStrings(QPainter* p);
void paintScale(QPainter* p);
};
};
diff --git a/noncore/multimedia/tonleiter/mainwidget.cpp b/noncore/multimedia/tonleiter/mainwidget.cpp
index f09207b..b9c3d01 100644
--- a/noncore/multimedia/tonleiter/mainwidget.cpp
+++ b/noncore/multimedia/tonleiter/mainwidget.cpp
@@ -14,15 +14,32 @@ MainWidget::MainWidget(QWidget* parent,const char* name,WFlags f)
QBoxLayout* mainlayout=new QBoxLayout(mainwidget,QBoxLayout::TopToBottom);
menuwidget=new Menu::MenuWidget(data,mainwidget);
mainlayout->addWidget(menuwidget);
fretboard=new Graph::FretBoard(data,mainwidget);
+ connect(fretboard,SIGNAL(pressed()),this,SLOT(fretboardPressed()));
mainlayout->addWidget(fretboard);
+ showmenu=true;
+
}
//****************************************************************************
MainWidget::~MainWidget()
{
}
//****************************************************************************
+void MainWidget::fretboardPressed()
+{
+ if(showmenu)
+ {
+ menuwidget->hide();
+ showmenu=false;
+ }
+ else
+ {
+ menuwidget->show();
+ showmenu=true;
+ }
+}
+//****************************************************************************
//****************************************************************************
diff --git a/noncore/multimedia/tonleiter/mainwidget.h b/noncore/multimedia/tonleiter/mainwidget.h
index 9bb593c..5c0a1f8 100644
--- a/noncore/multimedia/tonleiter/mainwidget.h
+++ b/noncore/multimedia/tonleiter/mainwidget.h
@@ -11,12 +11,15 @@ class MainWidget : public QMainWindow
{
Q_OBJECT
private:
Data::TonleiterData* data;
Menu::MenuWidget* menuwidget;
Graph::FretBoard* fretboard;
+ bool showmenu;
public:
MainWidget(QWidget* parent=0,const char* name="MainWidget",WFlags f=0);
virtual ~MainWidget();
+private slots:
+ void fretboardPressed();
};
#endif //TONLEITER_MAINWIDGET_H
diff --git a/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp b/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
index 156dba5..d904a71 100644
--- a/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
+++ b/noncore/multimedia/tonleiter/tonleiterdatahelper.cpp
@@ -73,15 +73,24 @@ int Instrument::string(int id)
{
return strings[id];
}
//****************************************************************************
int Instrument::noOfOctaves()
{
- int lowest=strings[0];
- int highest=strings[strings.count()-1]+frets;
- return (int) ceil((highest-lowest)/12.0);
+ return (int) ceil((highestNote()-lowestNote())/12.0);
+}
+//****************************************************************************
+int Instrument::lowestNote()
+{
+ return strings[0];
+
+}
+//****************************************************************************
+int Instrument::highestNote()
+{
+ return strings[strings.count()-1]+frets;
}
//****************************************************************************
//****************************************************************************
Scale::Scale()
{
name="UNDEFINED";
diff --git a/noncore/multimedia/tonleiter/tonleiterdatahelper.h b/noncore/multimedia/tonleiter/tonleiterdatahelper.h
index e4153d7..061c781 100644
--- a/noncore/multimedia/tonleiter/tonleiterdatahelper.h
+++ b/noncore/multimedia/tonleiter/tonleiterdatahelper.h
@@ -29,12 +29,14 @@ namespace Data
public:
int noOfStrings();
int noOfFrets();
QString instName();
int string(int id);
int noOfOctaves();
+ int lowestNote();
+ int highestNote();
};
class Scale
{
private:
QValueList<int> halftones;