00001 #include "pianoscale.h"
00002
00003 #include <qpainter.h>
00004
00005
00006 Menu::PianoScale::PianoScale(QWidget* parent,const char* name,WFlags f)
00007 :QWidget(parent,name,f)
00008 {
00009 QColor black(0,0,0);
00010 QColor white(255,255,255);
00011 QColor mark(255,0,0);
00012 blackBrush=QBrush(black);
00013 whiteBrush=QBrush(white);
00014 markBrush=QBrush(mark);
00015 blackPen=QPen(black);
00016 whitePen=QPen(white);
00017 setBackgroundColor(QColor(0,0,255));
00018 }
00019
00020 Menu::PianoScale::~ PianoScale()
00021 {
00022 }
00023
00024 void Menu::PianoScale::paintEvent(QPaintEvent* pe)
00025 {
00026 QPainter p(this);
00027 QRect mysize=rect();
00028
00029 int pad=10;
00030 int x0=pad;
00031 int y0=pad;
00032 int w0=mysize.width()-2*pad;
00033 int h0=mysize.height()-2*pad;
00034
00035 int keypad=2;
00036 if(mysize.width()>mysize.height())
00037 {
00038 int div=(int)(w0/14.0);
00039 int halftonewidth=(int)(div/3.0);
00040 int halftoneheight=(int)((h0-2*keypad)*0.66);
00041 for(int a=0;a<14;a++)
00042 {
00043 int x=x0+a*div;
00044
00045 p.setPen(blackPen);
00046 p.setBrush(blackBrush);
00047 p.drawRect(x,y0,div,h0);
00048
00049 p.setPen(whitePen);
00050 p.setBrush(whiteBrush);
00051 p.drawRect(x+keypad,y0+keypad,div-2*keypad,h0-2*keypad);
00052
00053 if(a==1 || a==2 || a==4 || a==5 || a==6 || a==8 || a==9 || a==11 || a==12 || a==13)
00054 {
00055 p.setPen(blackPen);
00056 p.setBrush(blackBrush);
00057 p.drawRect(x-halftonewidth,y0+keypad,2*halftonewidth,halftoneheight);
00058 }
00059 }
00060 }
00061 else
00062 {
00063 int div=(int)(w0/7.0);
00064 int halfheight=(int)(h0/2.0);
00065 int halftonewidth=(int)(div/3.0);
00066 int halftoneheight=(int)((halfheight-2*keypad)*0.66);
00067 for(int a=0;a<7;a++)
00068 {
00069 int x=x0+a*div;
00070
00071 p.setPen(blackPen);
00072 p.setBrush(blackBrush);
00073 p.drawRect(x,y0,div,h0);
00074
00075 p.setPen(whitePen);
00076 p.setBrush(whiteBrush);
00077 p.drawRect(x+keypad,y0+keypad,div-2*keypad,halfheight-2*keypad);
00078 p.drawRect(x+keypad,y0+keypad+halfheight,div-2*keypad,halfheight-2*keypad);
00079
00080 if(a==1 || a==2 || a==4 || a==5 || a==6)
00081 {
00082 p.setPen(blackPen);
00083 p.setBrush(blackBrush);
00084 p.drawRect(x-halftonewidth,y0+keypad,2*halftonewidth,halftoneheight);
00085 p.drawRect(x-halftonewidth,y0+keypad+halfheight,2*halftonewidth,halftoneheight);
00086 }
00087 }
00088 }
00089 }
00090
00091 void Menu::PianoScale::mousePressEvent(QMouseEvent* me)
00092 {
00093 }
00094
00095
00096