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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
| class score_part
{
public:
// **********************************************************
// * structs *
// **********************************************************
struct struct_transpose
{
int diatonic;
int chromatic;
};
struct struct_time_signature
{
int beats;
int beat_type;
};
struct struct_key_signature
{
int sharp;
int flat;
int natural_on_sharp;
int natural_on_flat;
};
struct struct_metronome
{
const pugi::char_t* beat_unit;
int per_minute;
};
struct struct_symbol_location
{
int measure;
int default_x;
int default_y;
};
score_part::score_part(const pugi::char_t* _score_part_id, const pugi::char_t*_part_name, const pugi::char_t* _part_name_display_text,
const pugi::char_t* _part_abbreviation, const pugi::char_t* _part_abbreviation_display_text, const pugi::char_t* _score_instrument_id,
const pugi::char_t* _instrument_name, part_group* part_group_pointer);
~score_part(void);
const pugi::char_t* score_part_id;
static const pugi::char_t* clef_symbol_bak;
static struct_time_signature time_signature_symbol_bak;
static struct_key_signature key_signature_symbol_bak;
static struct_metronome metronome_symbol_bak;
void extract_attribute(pugi::xml_node_iterator iterator);
private:
// classes
class clef
{
public:
clef(const pugi::char_t* _symbol, int _measure, const pugi::char_t* _color);
~clef(void);
private:
const pugi::char_t* symbol;
const pugi::char_t* color;
int measure;
unsigned long int x;
};
class time_signature
{
public:
time_signature(struct_time_signature _symbol, int _measure, const pugi::char_t* _color);
~time_signature(void);
private:
struct_time_signature symbol;
const pugi::char_t* color;
int measure;
};
class key_signature
{
public:
key_signature(struct_key_signature _symbol, int _measure, const pugi::char_t* _color);
~key_signature(void);
private:
struct_key_signature symbol;
const pugi::char_t* color;
int measure;
};
class metronome
{
public:
metronome(struct struct_metronome _symbol, int _measure, int _default_y, const pugi::char_t* _color, const pugi::char_t* _font_family,
const pugi::char_t* _font_style, float _font_size, const pugi::char_t* _font_weight);
~metronome(void);
struct_metronome symbol;
const pugi::char_t* color;
int default_y;
const pugi::char_t* font_family;
const pugi::char_t* font_style;
float font_size;
const pugi::char_t* font_weight;
int measure;
};
class word
{
public:
word(int _measure, int _default_x, int _default_y, int _relative_x, int _relative_y, const pugi::char_t* _justify,
const pugi::char_t* _valign, const pugi::char_t* _font_family, const pugi::char_t* _font_style,
float _font_size, const pugi::char_t* _font_weight, const pugi::char_t* text);
~word(void);
private:
int measure;
int default_x;
int default_y;
int relative_x;
int relative_y;
const pugi::char_t* justify;
const pugi::char_t* valign;
const pugi::char_t* font_family;
const pugi::char_t* font_style;
float font_size;
const pugi::char_t* font_weight;
const pugi::char_t* text;
};
class dynamics
{
public:
dynamics(int _measure, int _default_x, int _default_y, const pugi::char_t* _color, const pugi::char_t* _font_family,
const pugi::char_t* _font_style, float _font_size, const pugi::char_t* _font_weight, const pugi::char_t* symbol);
~dynamics(void);
private:
int measure;
int default_x;
int default_y;
const pugi::char_t* color;
const pugi::char_t* font_family;
const pugi::char_t* font_style;
float font_size;
const pugi::char_t* font_weight;
const pugi::char_t* symbol;
};
class symbol
{
public:
symbol(struct_symbol_location _symbol_begin, struct_symbol_location _symbol_end,const pugi::char_t* _color, const pugi::char_t* _symbol_name);
~symbol(void);
struct_symbol_location symbol_end;
private:
const pugi::char_t* color;
struct_symbol_location symbol_begin;
const pugi::char_t* symbol_name;
};
void extract_transpose(pugi::xml_node_iterator iterator);
void extract_clef(pugi::xml_node_iterator iterator);
void extract_time_signature(pugi::xml_node_iterator iterator);
void extract_staff(pugi::xml_node_iterator iterator);
void extract_key_signature(pugi::xml_node_iterator iterator);
void extract_direction(pugi::xml_node_iterator iterator);
void extract_metronome(int measure,pugi::xml_node* metronome_node);
void extract_word(int measure,pugi::xml_node* word_node);
void extract_dynamics(int measure,pugi::xml_node* dynamics_node);
void extract_wedge(int measure,pugi::xml_node* wedge_node);
void extract_pedal(int measure,pugi::xml_node* pedal_node);
const pugi::char_t* part_name;
const pugi::char_t* part_name_display_text;
const pugi::char_t* part_abbreviation;
const pugi::char_t* part_abbreviation_display_text;
const pugi::char_t* score_instrument_id;
const pugi::char_t* instrument_name;
struct_transpose transpose;
// pointers to classes
part_group* part_group_pointer;
std::vector<clef*> clef_pointer;
std::vector<time_signature*> time_signature_pointer;
std::vector<key_signature*> key_signature_pointer;
std::vector<metronome*> metronome_pointer;
std::vector<word*> word_pointer;
std::vector<dynamics*> dynamics_pointer;
std::vector<symbol*> symbol_pointer;
// counts
int clef_count;
int time_signature_count;
int staff_count;
int key_signature_count;
int metronome_count;
int word_count;
int dynamics_count;
int symbol_count;
}; |
Partager