1 /* 2 MusicXML Library 3 Copyright (C) Grame 2006-2013 4 5 This Source Code Form is subject to the terms of the Mozilla Public 6 License, v. 2.0. If a copy of the MPL was not distributed with this 7 file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 9 Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France 10 research@grame.fr 11 */ 12 13 #ifndef ___lpsrBookBlockElements___ 14 #define ___lpsrBookBlockElements___ 15 16 /* 17 #include <sstream> 18 #include <vector> 19 #include <string> 20 #include <list> 21 22 23 #include "exports.h" 24 #include "typedefs.h" 25 26 #include "msrBasicTypes.h" 27 28 29 #include "lpsrVarValAssocs.h" 30 31 #include "lpsrScheme.h" 32 */ 33 34 #include "lpsrComments.h" 35 36 #include "lpsrScheme.h" 37 38 #include "lpsrHeaders.h" 39 #include "lpsrPapers.h" 40 #include "lpsrLayouts.h" 41 42 #include "lpsrParallelMusic.h" 43 #include "lpsrVarValAssocs.h" 44 45 //#include "msrBlocks.h" 46 47 #include "msrMidi.h" 48 49 50 namespace MusicXML2 51 { 52 53 //______________________________________________________________________________ 54 class lpsrBookBlockElement : public lpsrElement 55 { 56 public: 57 58 // creation from MusicXML 59 // ------------------------------------------------------ 60 61 static SMARTP<lpsrBookBlockElement> create ( 62 int inputLineNumber); 63 64 protected: 65 66 // constructors/destructor 67 // ------------------------------------------------------ 68 69 lpsrBookBlockElement ( 70 int inputLineNumber); 71 72 virtual ~lpsrBookBlockElement (); 73 74 public: 75 76 // set and get 77 // ------------------------------------------------------ 78 getBookBlockElementHeader()79 S_lpsrHeader getBookBlockElementHeader () const 80 { return fBookBlockElementHeader; } 81 82 S_lpsrParallelMusicBLock getBlockElementParallelMusicBLock()83 getBlockElementParallelMusicBLock () const 84 { 85 return 86 fBookBlockElementParallelMusicBlock; 87 } 88 89 // services 90 // ------------------------------------------------------ 91 92 void appendPartGroupBlockToBlockElement ( 93 S_lpsrPartGroupBlock partGroupBlock); 94 95 public: 96 97 // visitors 98 // ------------------------------------------------------ 99 100 virtual void acceptIn (basevisitor* v); 101 virtual void acceptOut (basevisitor* v); 102 103 virtual void browseData (basevisitor* v); 104 105 public: 106 107 // print 108 // ------------------------------------------------------ 109 110 virtual void print (ostream& os) const; 111 112 protected: 113 114 // fields 115 // ------------------------------------------------------ 116 117 S_lpsrHeader fBookBlockElementHeader; 118 119 S_lpsrParallelMusicBLock 120 fBookBlockElementParallelMusicBlock; 121 }; 122 typedef SMARTP<lpsrBookBlockElement> S_lpsrBookBlockElement; 123 EXP ostream& operator<< (ostream& os, const S_lpsrBookBlockElement& elt); 124 125 //______________________________________________________________________________ 126 class lpsrScoreBlock : public lpsrBookBlockElement 127 { 128 public: 129 130 // creation from MusicXML 131 // ------------------------------------------------------ 132 133 static SMARTP<lpsrScoreBlock> create ( 134 int inputLineNumber); 135 136 protected: 137 138 // constructors/destructor 139 // ------------------------------------------------------ 140 141 lpsrScoreBlock ( 142 int inputLineNumber); 143 144 virtual ~lpsrScoreBlock (); 145 146 public: 147 148 // set and get 149 // ------------------------------------------------------ 150 getScoreBlockLayout()151 S_lpsrLayout getScoreBlockLayout () const 152 { return fScoreBlockLayout; } 153 getScoreBlockMidiTempo()154 S_msrMidiTempo getScoreBlockMidiTempo () const 155 { return fScoreBlockMidiTempo; } 156 157 // services 158 // ------------------------------------------------------ 159 160 void appendPartGroupBlockToScoreBlock ( 161 S_lpsrPartGroupBlock partGroupBlock); 162 163 public: 164 165 // visitors 166 // ------------------------------------------------------ 167 168 virtual void acceptIn (basevisitor* v); 169 virtual void acceptOut (basevisitor* v); 170 171 virtual void browseData (basevisitor* v); 172 173 public: 174 175 // print 176 // ------------------------------------------------------ 177 178 virtual void print (ostream& os) const; 179 180 private: 181 182 // fields 183 // ------------------------------------------------------ 184 185 S_lpsrLayout fScoreBlockLayout; 186 187 S_msrMidiTempo fScoreBlockMidiTempo; 188 }; 189 typedef SMARTP<lpsrScoreBlock> S_lpsrScoreBlock; 190 EXP ostream& operator<< (ostream& os, const S_lpsrScoreBlock& elt); 191 192 //______________________________________________________________________________ 193 class lpsrBookPartBlock : public lpsrBookBlockElement 194 { 195 public: 196 197 // creation from MusicXML 198 // ------------------------------------------------------ 199 200 static SMARTP<lpsrBookPartBlock> create ( 201 int inputLineNumber); 202 203 protected: 204 205 // constructors/destructor 206 // ------------------------------------------------------ 207 208 lpsrBookPartBlock ( 209 int inputLineNumber); 210 211 virtual ~lpsrBookPartBlock (); 212 213 public: 214 215 // set and get 216 // ------------------------------------------------------ 217 218 // services 219 // ------------------------------------------------------ 220 221 void appendPartGroupBlockToBookPartBlock ( 222 S_lpsrPartGroupBlock partGroupBlock); 223 224 public: 225 226 // visitors 227 // ------------------------------------------------------ 228 229 virtual void acceptIn (basevisitor* v); 230 virtual void acceptOut (basevisitor* v); 231 232 virtual void browseData (basevisitor* v); 233 234 public: 235 236 // print 237 // ------------------------------------------------------ 238 239 virtual void print (ostream& os) const; 240 241 private: 242 243 // fields 244 // ------------------------------------------------------ 245 }; 246 typedef SMARTP<lpsrBookPartBlock> S_lpsrBookPartBlock; 247 EXP ostream& operator<< (ostream& os, const S_lpsrBookPartBlock& elt); 248 249 //______________________________________________________________________________ 250 class lpsrBookBlock : public lpsrElement 251 { 252 public: 253 254 // creation from MusicXML 255 // ------------------------------------------------------ 256 257 static SMARTP<lpsrBookBlock> create ( 258 int inputLineNumber); 259 260 protected: 261 262 // constructors/destructor 263 // ------------------------------------------------------ 264 265 lpsrBookBlock ( 266 int inputLineNumber); 267 268 virtual ~lpsrBookBlock (); 269 270 public: 271 272 // set and get 273 // ------------------------------------------------------ 274 setBookBlockHeader(S_lpsrHeader bookBlockHeader)275 void setBookBlockHeader ( 276 S_lpsrHeader bookBlockHeader) 277 { fBookBlockHeader = bookBlockHeader; } 278 getBookBlockHeader()279 S_lpsrHeader getBookBlockHeader () const 280 { return fBookBlockHeader; } 281 setBookBlockPaper(S_lpsrPaper bookBlockPaper)282 void setBookBlockPaper ( 283 S_lpsrPaper bookBlockPaper) 284 { fBookBlockPaper = bookBlockPaper; } 285 getBookBlockPaper()286 S_lpsrPaper getBookBlockPaper () const 287 { return fBookBlockPaper; } 288 289 const list<S_lpsrBookBlockElement>& getBookBlockElementsList()290 getBookBlockElementsList () const 291 { return fBookBlockElementsList; } 292 293 public: 294 295 // public services 296 // ------------------------------------------------------ 297 298 void appendLpsrScoreBlockToBookBlockElementsList ( 299 S_lpsrScoreBlock scoreBlock); 300 301 void appendLpsrBookPartBlockToBookBlockElementsList ( 302 S_lpsrBookPartBlock bookPartBlock); 303 304 protected: 305 306 // protected services 307 // ------------------------------------------------------ 308 309 void appendBookBlockElementToBookBlockElementsList ( 310 S_lpsrBookBlockElement bookBlockElement); 311 312 public: 313 314 // visitors 315 // ------------------------------------------------------ 316 317 virtual void acceptIn (basevisitor* v); 318 virtual void acceptOut (basevisitor* v); 319 320 virtual void browseData (basevisitor* v); 321 322 public: 323 324 // print 325 // ------------------------------------------------------ 326 327 virtual void print (ostream& os) const; 328 329 private: 330 331 // fields 332 // ------------------------------------------------------ 333 334 S_lpsrHeader fBookBlockHeader; 335 336 S_lpsrPaper fBookBlockPaper; 337 338 list<S_lpsrBookBlockElement> 339 fBookBlockElementsList; 340 }; 341 typedef SMARTP<lpsrBookBlock> S_lpsrBookBlock; 342 EXP ostream& operator<< (ostream& os, const S_lpsrBookBlock& elt); 343 344 345 } 346 347 348 #endif 349