68 lines
2.1 KiB
C++
68 lines
2.1 KiB
C++
//=============================================================================
|
|
// MuseScore
|
|
// Music Composition & Notation
|
|
//
|
|
// Copyright (C) 2010-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 __STAFFSTATE_H__
|
|
#define __STAFFSTATE_H__
|
|
|
|
#include "element.h"
|
|
#include "elementlayout.h"
|
|
#include "instrument.h"
|
|
|
|
namespace Ms {
|
|
|
|
enum class StaffStateType : char {
|
|
INSTRUMENT,
|
|
TYPE,
|
|
VISIBLE,
|
|
INVISIBLE
|
|
};
|
|
|
|
//---------------------------------------------------------
|
|
// @@ StaffState
|
|
//---------------------------------------------------------
|
|
|
|
class StaffState final : public Element {
|
|
StaffStateType _staffStateType;
|
|
qreal lw;
|
|
QPainterPath path;
|
|
|
|
Instrument* _instrument;
|
|
|
|
virtual void draw(QPainter*) const;
|
|
virtual void layout();
|
|
|
|
public:
|
|
StaffState(Score*);
|
|
StaffState(const StaffState&);
|
|
~StaffState();
|
|
|
|
virtual StaffState* clone() const { return new StaffState(*this); }
|
|
virtual ElementType type() const { return ElementType::STAFF_STATE; }
|
|
|
|
void setStaffStateType(const QString&);
|
|
void setStaffStateType(StaffStateType st) { _staffStateType = st; }
|
|
StaffStateType staffStateType() const { return _staffStateType; }
|
|
QString staffStateTypeName() const;
|
|
|
|
virtual bool acceptDrop(EditData&) const override;
|
|
virtual Element* drop(EditData&);
|
|
virtual void write(XmlWriter&) const;
|
|
virtual void read(XmlReader&);
|
|
Instrument* instrument() const { return _instrument; }
|
|
void setInstrument(const Instrument* i) { *_instrument = *i; }
|
|
void setInstrument(const Instrument&& i) { *_instrument = i; }
|
|
Segment* segment() { return (Segment*)parent(); }
|
|
};
|
|
|
|
|
|
} // namespace Ms
|
|
#endif
|