Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-Studio-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2021 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 :
23 : #pragma once
24 :
25 : #include "systemtext.h"
26 :
27 : namespace mu::engraving {
28 : enum class TripletFeelType : unsigned char {
29 : NONE,
30 : TRIPLET_8TH,
31 : TRIPLET_16TH,
32 : DOTTED_8TH,
33 : DOTTED_16TH,
34 : SCOTTISH_8TH,
35 : SCOTTISH_16TH
36 : };
37 :
38 : //---------------------------------------------------------
39 : // TripletFeel
40 : //---------------------------------------------------------
41 :
42 : class TripletFeel final : public SystemText
43 : {
44 0 : OBJECT_ALLOCATOR(engraving, TripletFeel)
45 : DECLARE_CLASSOF(ElementType::TRIPLET_FEEL)
46 :
47 : public:
48 : TripletFeel(DummyParentOr<Segment> parent, TripletFeelType tripletFillType = TripletFeelType::NONE);
49 : void setTripletProperty();
50 :
51 0 : TripletFeel* clone() const override { return new TripletFeel(*this); }
52 : TripletFeelType getTripletFeelType() const { return m_tripletFeelType; }
53 : PropertyValue propertyDefault(Pid propertyId) const override;
54 : Sid getPropertyStyle(Pid id) const override;
55 : TranslatableString subtypeUserName() const override;
56 : String accessibleInfo() const override;
57 :
58 : private:
59 :
60 : constexpr static int eightDivision = 2;
61 : constexpr static int sixteenthDivision = 4;
62 : constexpr static int tripletRatio = 66;
63 : constexpr static int dottedRatio = 75;
64 : constexpr static int scottishRatio = 25;
65 : constexpr static int zeroRatio = 0;
66 :
67 : TripletFeelType m_tripletFeelType = TripletFeelType::NONE;
68 : };
69 : }
|