summaryrefslogtreecommitdiff
path: root/noncore/multimedia/tonleiter/pianoscale.cpp
blob: 3d5add2bf476d9dc2d58def869646e5faf0106a0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "pianoscale.h"

#include <qpainter.h>


Menu::PianoScale::PianoScale(QWidget* parent,const char* name,WFlags f)
:QWidget(parent,name,f)
{
    QColor black(0,0,0);
    QColor white(255,255,255);
    QColor mark(255,0,0);
    blackBrush=QBrush(black);
    whiteBrush=QBrush(white);
    markBrush=QBrush(mark);
    blackPen=QPen(black);
    whitePen=QPen(white);
    setBackgroundColor(QColor(0,0,255));
}
//****************************************************************************
Menu::PianoScale::~ PianoScale()
{
}
//****************************************************************************
void Menu::PianoScale::paintEvent(QPaintEvent* pe)
{
    QPainter p(this);
    QRect mysize=rect();

    int pad=10;
    int x0=pad;
    int y0=pad;
    int w0=mysize.width()-2*pad;
    int h0=mysize.height()-2*pad;

    int keypad=2;
    if(mysize.width()>mysize.height())
    {
        int div=(int)(w0/14.0);
        int halftonewidth=(int)(div/3.0);
        int halftoneheight=(int)((h0-2*keypad)*0.66);
        for(int a=0;a<14;a++)
        {
            int x=x0+a*div;

            p.setPen(blackPen);
            p.setBrush(blackBrush);
            p.drawRect(x,y0,div,h0);

            p.setPen(whitePen);
            p.setBrush(whiteBrush);
            p.drawRect(x+keypad,y0+keypad,div-2*keypad,h0-2*keypad);

            if(a==1 || a==2 || a==4 || a==5 || a==6 || a==8 || a==9 || a==11 || a==12 || a==13)
            {
                p.setPen(blackPen);
                p.setBrush(blackBrush);
                p.drawRect(x-halftonewidth,y0+keypad,2*halftonewidth,halftoneheight);
            }
        }
    }
    else
    {
        int div=(int)(w0/7.0);
        int halfheight=(int)(h0/2.0);
        int halftonewidth=(int)(div/3.0);
        int halftoneheight=(int)((halfheight-2*keypad)*0.66);
        for(int a=0;a<7;a++)
        {
            int x=x0+a*div;

            p.setPen(blackPen);
            p.setBrush(blackBrush);
            p.drawRect(x,y0,div,h0);

            p.setPen(whitePen);
            p.setBrush(whiteBrush);
            p.drawRect(x+keypad,y0+keypad,div-2*keypad,halfheight-2*keypad);
            p.drawRect(x+keypad,y0+keypad+halfheight,div-2*keypad,halfheight-2*keypad);

            if(a==1 || a==2 || a==4 || a==5 || a==6)
            {
                p.setPen(blackPen);
                p.setBrush(blackBrush);
                p.drawRect(x-halftonewidth,y0+keypad,2*halftonewidth,halftoneheight);
                p.drawRect(x-halftonewidth,y0+keypad+halfheight,2*halftonewidth,halftoneheight);
            }
        }
    }
}
//****************************************************************************
void Menu::PianoScale::mousePressEvent(QMouseEvent* me)
{
}
//****************************************************************************
//****************************************************************************