~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to include/lenmus_cadences_constrains.h

  • Committer: cecilios
  • Date: 2012-09-11 16:59:18 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:730
Paths: fixed problem with installation folders. Fixed Chinese ISO language code

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//---------------------------------------------------------------------------------------
 
2
//    LenMus Phonascus: The teacher of music
 
3
//    Copyright (c) 2002-2012 LenMus project
 
4
//
 
5
//    This program is free software; you can redistribute it and/or modify it under the
 
6
//    terms of the GNU General Public License as published by the Free Software Foundation,
 
7
//    either version 3 of the License, or (at your option) any later version.
 
8
//
 
9
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY
 
10
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 
11
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
12
//
 
13
//    You should have received a copy of the GNU General Public License along with this
 
14
//    program. If not, see <http://www.gnu.org/licenses/>.
 
15
//
 
16
//    For any comment, suggestion or feature request, please contact the manager of
 
17
//    the project at cecilios@users.sourceforge.net
 
18
//
 
19
//---------------------------------------------------------------------------------------
 
20
 
 
21
#ifndef __LENMUS_CADENCESCONSTRAINS_H__        //to avoid nested includes
 
22
#define __LENMUS_CADENCESCONSTRAINS_H__
 
23
 
 
24
//lenmus
 
25
#include "lenmus_standard_header.h"
 
26
#include "lenmus_generators.h"
 
27
#include "lenmus_constrains.h"
 
28
#include "lenmus_cadence.h"
 
29
 
 
30
//wxWidgets
 
31
#include <wx/wxprec.h>
 
32
#include <wx/wx.h>
 
33
 
 
34
 
 
35
namespace lenmus
 
36
{
 
37
 
 
38
enum ECadenceButtons
 
39
{
 
40
    lm_eCadButtonTerminal = 0,
 
41
    lm_eCadButtonTransient,
 
42
    lm_eCadButtonPerfect,
 
43
        lm_eCadButtonPlagal,
 
44
    lm_eCadButtonImperfect,
 
45
    lm_eCadButtonDeceptive,
 
46
    lm_eCadButtonHalf,
 
47
 
 
48
    lm_eCadMaxButton
 
49
};
 
50
 
 
51
 
 
52
class CadencesConstrains : public ExerciseOptions
 
53
{
 
54
public:
 
55
    CadencesConstrains(wxString sSection, ApplicationScope& appScope);
 
56
    ~CadencesConstrains() {}
 
57
 
 
58
    ECadenceType GetRandomCadence();
 
59
 
 
60
    bool IsCadenceValid(ECadenceType nType) { return m_fValidCadences[nType]; }
 
61
    void SetCadenceValid(ECadenceType nType, bool fValid) { m_fValidCadences[nType] = fValid; }
 
62
    bool* GetValidCadences() { return m_fValidCadences; }
 
63
 
 
64
    bool IsValidButton(ECadenceButtons nB) { return m_fValidButtons[nB]; }
 
65
    void SetValidButton(ECadenceButtons nB, bool fValue) { m_fValidButtons[nB] = fValue; }
 
66
    bool* GetValidButtons() { return m_fValidButtons; }
 
67
 
 
68
    int GetKeyDisplayMode() { return m_nKeyDisplayMode; }
 
69
    void SetKeyDisplayMode(int nKeyDisplayMode) { m_nKeyDisplayMode = nKeyDisplayMode; }
 
70
 
 
71
    void SetSection(wxString sSection) {
 
72
                m_sSection = sSection;
 
73
                load_settings();
 
74
            }
 
75
 
 
76
    void save_settings();
 
77
 
 
78
    KeyConstrains* GetKeyConstrains() { return &m_oValidKeys; }
 
79
 
 
80
 
 
81
private:
 
82
    void load_settings();
 
83
 
 
84
    bool                m_fValidButtons[lm_eCadMaxButton];
 
85
    bool                m_fValidCadences[k_cadence_max];
 
86
    KeyConstrains     m_oValidKeys;           //allowed key signatures
 
87
 
 
88
    //params only for ear training exercises
 
89
    int                 m_nKeyDisplayMode;      // 0-play A4 note
 
90
                                                // 1-play tonic chord
 
91
 
 
92
};
 
93
 
 
94
 
 
95
}   // namespace lenmus
 
96
 
 
97
#endif  // __LENMUS_CADENCESCONSTRAINS_H__