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
|
//=============================================================================
// 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 __STEM_H__
#define __STEM_H__
#include "element.h"
class QPainter;
namespace Ms {
class Chord;
//---------------------------------------------------------
// @@ Stem
/// Graphic representation of a note stem.
//---------------------------------------------------------
class Stem : public Element {
Q_OBJECT
QLineF line; // p1 is attached to note head
qreal _userLen;
qreal _len; // allways positive
virtual void startEdit(MuseScoreView*, const QPointF&);
public:
Stem(Score* = 0);
Stem &operator=(const Stem&) = delete;
virtual Stem* clone() const { return new Stem(*this); }
virtual Element::Type type() const { return Element::Type::STEM; }
virtual void draw(QPainter*) const;
virtual bool isEditable() const { return true; }
virtual void layout();
virtual void spatiumChanged(qreal /*oldValue*/, qreal /*newValue*/);
virtual void editDrag(const EditData&);
virtual void updateGrips(Grip*, QVector<QRectF>&) const;
virtual int grips() const override { return 1; }
virtual void write(Xml& xml) const;
virtual void read(XmlReader& e);
virtual void reset();
virtual bool acceptDrop(const DropData&) const override;
virtual Element* drop(const DropData&);
virtual QVariant getProperty(P_ID propertyId) const;
virtual bool setProperty(P_ID propertyId, const QVariant&);
Chord* chord() const { return (Chord*)parent(); }
bool up() const;
qreal userLen() const { return _userLen; }
void setUserLen(qreal l) { _userLen = l; }
qreal lineWidth() const;
QPointF hookPos() const;
void setLen(qreal l);
qreal len() const { return _len; }
qreal stemLen() const;
QPointF p2() const { return line.p2(); }
};
} // namespace Ms
#endif
|