//============================================================================= // 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 __VOLTA_H__ #define __VOLTA_H__ #include "textlinebase.h" namespace Ms { class Score; class XmlWriter; class Volta; class Measure; extern void vdebug(int n); extern LineSegment* voltaDebug; //--------------------------------------------------------- // @@ VoltaSegment //--------------------------------------------------------- class VoltaSegment : public TextLineBaseSegment { Q_GADGET public: VoltaSegment(Score* s) : TextLineBaseSegment(s) {} virtual ElementType type() const override { return ElementType::VOLTA_SEGMENT; } virtual VoltaSegment* clone() const override { return new VoltaSegment(*this); } Volta* volta() const { return (Volta*)spanner(); } virtual void layout() override; virtual QVariant getProperty(P_ID propertyId) const override; virtual bool setProperty(P_ID propertyId, const QVariant&) override; virtual QVariant propertyDefault(P_ID) const override; virtual PropertyFlags propertyFlags(P_ID) const override; virtual StyleIdx getPropertyStyle(P_ID) const override; virtual void resetProperty(P_ID id) override; virtual void styleChanged() override; }; //--------------------------------------------------------- // @@ Volta // @P voltaType enum (Volta.CLOSE, Volta.OPEN) //--------------------------------------------------------- class Volta : public TextLineBase { Q_GADGET QList _endings; public: enum class Type : char { OPEN, CLOSED }; Volta(Score* s); virtual Volta* clone() const override { return new Volta(*this); } virtual ElementType type() const override { return ElementType::VOLTA; } virtual LineSegment* createLineSegment() override; virtual void write(XmlWriter&) const override; virtual void read(XmlReader& e) override; QList endings() const { return _endings; } QList& endings() { return _endings; } void setEndings(const QList& l) { _endings = l; } void setText(const QString& s); QString text() const; bool hasEnding(int repeat) const; void setVoltaType(Volta::Type); // deprecated Type voltaType() const; // deprecated virtual QVariant getProperty(P_ID propertyId) const override; virtual bool setProperty(P_ID propertyId, const QVariant&) override; virtual QVariant propertyDefault(P_ID) const override; virtual StyleIdx getPropertyStyle(P_ID) const override; virtual bool systemFlag() const override { return true; } virtual QString accessibleInfo() const override; }; } // namespace Ms Q_DECLARE_METATYPE(Ms::Volta::Type); #endif