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