File: tremolo.h

package info (click to toggle)
musescore 2.0.3%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 202,532 kB
  • ctags: 58,769
  • sloc: cpp: 257,595; xml: 172,226; ansic: 139,931; python: 6,565; sh: 6,383; perl: 423; makefile: 290; awk: 142; pascal: 67; sed: 3
file content (89 lines) | stat: -rw-r--r-- 2,449 bytes parent folder | download | duplicates (3)
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
//=============================================================================
//  MuseScore
//  Music Composition & Notation
//
//  Copyright (C) 2002-2011 Werner Schweer
//
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License version 2
//  as published by the Free Software Foundation and appearing in
//  the file LICENCE.GPL
//=============================================================================

#ifndef __TREMOLO_H__
#define __TREMOLO_H__

#include "symbol.h"

class QPainter;

namespace Ms {

class Chord;

// Tremolo subtypes:
enum class TremoloType : char {
      OLD_R8 = 0,
      OLD_R16,
      OLD_R32,
      OLD_C8,
      OLD_C16,
      OLD_C32,

      R8=6, R16, R32, R64,  // one note tremolo (repeat)
      C8, C16, C32, C64     // two note tremolo (change)
      };

//---------------------------------------------------------
//   @@ Tremolo
//---------------------------------------------------------

class Tremolo : public Element {
      Q_OBJECT

      TremoloType _tremoloType;
      Chord* _chord1;
      Chord* _chord2;
      QPainterPath path;

      int _lines;       // derived from _subtype

   public:
      Tremolo(Score*);
      Tremolo(const Tremolo&);
      Tremolo &operator=(const Tremolo&) = delete;
      virtual Tremolo* clone() const     { return new Tremolo(*this); }
      virtual Element::Type type() const { return Element::Type::TREMOLO; }
      virtual int subtype() const         { return (int) _tremoloType; }
      virtual QString subtypeName() const;

      QString tremoloTypeName() const;
      void setTremoloType(const QString& s);

      void setTremoloType(TremoloType t);
      TremoloType tremoloType() const      { return _tremoloType; }

      virtual qreal mag() const;
      virtual void draw(QPainter*) const;
      virtual void layout();
      virtual void write(Xml& xml) const;
      virtual void read(XmlReader&);

      Chord* chord1() const { return _chord1; }
      Chord* chord2() const { return _chord2; }

      void setChords(Chord* c1, Chord* c2) {
            _chord1 = c1;
            _chord2 = c2;
            }
      Fraction tremoloLen() const;
      bool twoNotes() const { return tremoloType() > TremoloType::R64; } // is it a two note tremolo?
      int lines() const { return _lines; }

      virtual QString accessibleInfo() override;
      };


}     // namespace Ms
#endif