1 //============================================================================= 2 // MuseScore 3 // Music Composition & Notation 4 // 5 // Copyright (C) 2016 Werner Schweer 6 // 7 // This program is free software; you can redistribute it and/or modify 8 // it under the terms of the GNU General Public License version 2 9 // as published by the Free Software Foundation and appearing in 10 // the file LICENCE.GPL 11 //============================================================================= 12 13 #ifndef __READ206_H__ 14 #define __READ206_H__ 15 16 namespace Ms { 17 18 class MStyle; 19 20 //--------------------------------------------------------- 21 // @@ PageFormat 22 //--------------------------------------------------------- 23 24 class PageFormat { 25 QSizeF _size; 26 qreal _printableWidth; // _width - left margin - right margin 27 qreal _evenLeftMargin; // values in inch 28 qreal _oddLeftMargin; 29 qreal _evenTopMargin; 30 qreal _evenBottomMargin; 31 qreal _oddTopMargin; 32 qreal _oddBottomMargin; 33 bool _twosided; 34 35 public: PageFormat()36 PageFormat() {} 37 size()38 const QSizeF& size() const { return _size; } // size in inch width()39 qreal width() const { return _size.width(); } height()40 qreal height() const { return _size.height(); } setSize(const QSizeF & s)41 void setSize(const QSizeF& s) { _size = s; } 42 43 void read(XmlReader&); evenLeftMargin()44 qreal evenLeftMargin() const { return _evenLeftMargin; } oddLeftMargin()45 qreal oddLeftMargin() const { return _oddLeftMargin; } evenTopMargin()46 qreal evenTopMargin() const { return _evenTopMargin; } evenBottomMargin()47 qreal evenBottomMargin() const { return _evenBottomMargin; } oddTopMargin()48 qreal oddTopMargin() const { return _oddTopMargin; } oddBottomMargin()49 qreal oddBottomMargin() const { return _oddBottomMargin; } printableWidth()50 qreal printableWidth() const { return _printableWidth; } 51 setEvenLeftMargin(qreal val)52 void setEvenLeftMargin(qreal val) { _evenLeftMargin = val; } setOddLeftMargin(qreal val)53 void setOddLeftMargin(qreal val) { _oddLeftMargin = val; } setEvenTopMargin(qreal val)54 void setEvenTopMargin(qreal val) { _evenTopMargin = val; } setEvenBottomMargin(qreal val)55 void setEvenBottomMargin(qreal val) { _evenBottomMargin = val; } setOddTopMargin(qreal val)56 void setOddTopMargin(qreal val) { _oddTopMargin = val; } setOddBottomMargin(qreal val)57 void setOddBottomMargin(qreal val) { _oddBottomMargin = val; } setPrintableWidth(qreal val)58 void setPrintableWidth(qreal val) { _printableWidth = val; } 59 twosided()60 bool twosided() const { return _twosided; } setTwosided(bool val)61 void setTwosided(bool val) { _twosided = val; } 62 63 // convenience functions evenRightMargin()64 qreal evenRightMargin() const { return _size.width() - _printableWidth - _evenLeftMargin; } oddRightMargin()65 qreal oddRightMargin() const { return _size.width() - _printableWidth - _oddLeftMargin; } 66 }; 67 68 extern Element* readArticulation(Element*, XmlReader&); 69 extern void readAccidental206(Accidental*, XmlReader&); 70 extern void setPageFormat(MStyle*, const PageFormat&); 71 extern void initPageFormat(MStyle*, PageFormat*); 72 extern void readTextStyle206(MStyle* style, XmlReader& e, std::map<QString, std::map<Sid, QVariant>>& excessStyles); 73 //extern void readText206(XmlReader& e, TextBase* t, Element* be); 74 // extern void readVolta206(XmlReader& e, Volta* volta); 75 extern void readTextLine206(XmlReader& e, TextLineBase* tlb); 76 extern void readTrill206(XmlReader& e, Trill* t); 77 extern void readHairpin206(XmlReader& e, Hairpin* h); 78 extern void readSlur206(XmlReader& e, Slur* s); 79 extern void readTie206(XmlReader& e, Tie* t); 80 81 extern bool readNoteProperties206(Note* note, XmlReader& e); 82 extern bool readDurationProperties206(XmlReader& e, DurationElement* de); 83 extern bool readTupletProperties206(XmlReader& e, Tuplet* t); 84 extern bool readChordRestProperties206(XmlReader& e, ChordRest* cr); 85 extern bool readChordProperties206(XmlReader& e, Chord* ch); 86 } 87 88 #endif 89 90 91