LCOV - code coverage report
Current view: top level - src/importexport/guitarpro/internal/gtp - gpmasterbar.h Coverage Total Hit
Test: filtered_coverage.info Lines: 96.0 % 25 24
Test Date: 2026-11-05 04:07:02

            Line data    Source code
       1              : #ifndef MU_IMPORTEXPORT_GPMASTERBAR_H
       2              : #define MU_IMPORTEXPORT_GPMASTERBAR_H
       3              : 
       4              : #include "gpbar.h"
       5              : 
       6              : namespace mu::iex::guitarpro {
       7              : class GPMasterBar
       8              : {
       9              : public:
      10              :     struct Repeat {
      11              :         enum class Type {
      12              :             None, Start, End, StartEnd
      13              :         };
      14              :         Type type{ Type::None };
      15              :         int count{ 1 };
      16              :     };
      17              :     struct KeySig {
      18              :         enum class Accidentals {
      19              :             C_B = -7,
      20              :             G_B, D_B, A_B, E_B, B_B, F, C,
      21              :             G, D, A, E, B, F_S, C_S,
      22              :         };
      23              :         enum class Mode {
      24              :             Major,
      25              :             Minor
      26              :         };
      27              :         Accidentals accidentalCount{ Accidentals::C };
      28              :         Mode mode{ Mode::Major };
      29              :     };
      30              :     enum class TripletFeelType {
      31              :         Triplet8th,
      32              :         Triplet16th,
      33              :         Dotted8th,
      34              :         Dotted16th,
      35              :         Scottish8th,
      36              :         Scottish16th,
      37              :         None
      38              :     };
      39              : 
      40              :     enum class BarlineType {
      41              :         NORMAL,
      42              :         DOUBLE
      43              :     };
      44              : 
      45              :     struct TimeSig {
      46              :         int numerator{ 0 };
      47              :         int denominator{ 0 };
      48              :     };
      49              : 
      50              :     struct Fermata {
      51              :         enum class Type {
      52              :             Short, Medium, Long
      53              :         };
      54              :         Type type{ Type::Medium };
      55              :         float length{ 0 };
      56              :         int offsetNum; //numerator of offset field in GP
      57              :         int offsetDenom; //denominator of offset field in GP
      58              :     };
      59              : 
      60              :     struct Direction {
      61              :         enum class Type {
      62              :             Repeat, Jump, Marker
      63              :         };
      64              : 
      65              :         Type type = Type::Repeat;
      66              :         muse::String name;
      67              :     };
      68              : 
      69          695 :     ~GPMasterBar() = default;
      70              : 
      71          778 :     void addGPBar(std::unique_ptr<GPBar>&& b) { _bars.push_back(std::move(b)); }
      72          695 :     void setTimeSig(const GPMasterBar::TimeSig& sig) { _timeSig = sig; }
      73         2085 :     TimeSig timeSig() const { return _timeSig; }
      74          302 :     bool useFlats() const { return _useFlats; }
      75              : 
      76          695 :     void setKeySig(GPMasterBar::KeySig sig, bool useFlats = false) { _keySig = sig; _useFlats = useFlats; }
      77         1442 :     KeySig keySig() const { return _keySig; }
      78              : 
      79            6 :     void setFermatas(std::vector<Fermata>&& f) { _fermatas.swap(f); }
      80          695 :     const std::vector<Fermata>& fermatas() const { return _fermatas; }
      81              : 
      82            8 :     void setRepeat(Repeat r) { _repeat = r; }
      83          727 :     Repeat repeat() const { return _repeat; }
      84              : 
      85            0 :     void setTripletFeel(TripletFeelType t) { _tripletFeel = t; }
      86          695 :     TripletFeelType tripletFeel() const { return _tripletFeel; }
      87              : 
      88            3 :     void setBarlineType(BarlineType t) { _barlineType = t; }
      89          954 :     BarlineType barlineType() const { return _barlineType; }
      90              : 
      91            8 :     void setFreeTime(bool freeTime) { _freeTime = freeTime; }
      92          940 :     bool freeTime() const { return _freeTime; }
      93              : 
      94            4 :     void setAlternativeEnding(std::vector<int>&& r) { _alternateEndings.swap(r); }
      95          701 :     const std::vector<int>& alternateEnding() const { return _alternateEndings; }
      96              : 
      97            3 :     void setSection(std::pair<muse::String, muse::String>&& s) { _section.swap(s); }
      98         1399 :     const std::pair<muse::String, muse::String>& section() const { return _section; }
      99              : 
     100           36 :     void setDirections(std::vector<Direction>&& d) { _directions.swap(d); }
     101          695 :     const std::vector<Direction>& directions() const { return _directions; }
     102              : 
     103          695 :     void setId(int id) { _id = id; }
     104              :     int id() const { return _id; } //debug helper
     105              : 
     106          695 :     const std::vector<std::unique_ptr<GPBar> >& bars() const { return _bars; }
     107              : 
     108              : private:
     109              : 
     110              :     int _id{ -1 };
     111              :     std::vector<std::unique_ptr<GPBar> > _bars;
     112              :     std::vector<Fermata> _fermatas;
     113              :     std::vector<Direction> _directions;
     114              :     TimeSig _timeSig;
     115              :     KeySig _keySig;
     116              :     bool _useFlats = false;
     117              :     Repeat _repeat;
     118              :     std::vector<int> _alternateEndings;
     119              :     TripletFeelType _tripletFeel = TripletFeelType::None;
     120              :     BarlineType _barlineType = BarlineType::NORMAL;
     121              :     bool _freeTime = false;
     122              :     std::pair<muse::String, muse::String> _section;
     123              :     Direction _direction;
     124              : };
     125              : } // namespace mu::iex::guitarpro
     126              : 
     127              : #endif // MU_IMPORTEXPORT_GPMASTERBAR_H
        

Generated by: LCOV version 2.0-1