8 #ifndef __VRV_CURSOR_H__
9 #define __VRV_CURSOR_H__
15 #include "elementpart.h"
38 std::string GetClassName()
const override {
return "cursor"; }
46 bool IsCursor()
const override {
return true; }
48 int GetDrawingX()
const override;
50 void SetCursorAlignment(
Alignment *alignment);
51 void ResetCursorAlignment();
53 void SetPosition(
LayerElement *position) { m_position = position; }
54 LayerElement *GetPosition()
const {
return m_position; }
55 bool HasPosition()
const {
return (m_position); }
57 Object *GetInsertTargetObject()
const;
59 void PushContainer(LayerElement *container) { m_containers.push_back(container); }
60 void PopContainer() { m_containers.pop_back(); }
61 LayerElement *GetContainer()
const {
return m_containers.back(); }
62 bool HasContainer()
const {
return (!m_containers.empty()); }
63 bool HasContainer(ClassId classId)
const;
64 void ClearContainers() { m_containers.clear(); }
66 bool HasAccid()
const {
return m_accid.HasAccid(); }
67 data_ACCIDENTAL_WRITTEN GetAccid()
const {
return m_accid.GetAccid(); }
68 void SetAccid(data_ACCIDENTAL_WRITTEN accid);
69 bool IsAccidImplicit()
const {
return m_isAccidImplicit; }
70 void SetAccidImplicit(
bool isAccidImplicit);
71 void SetAccidValue(
const Accid *accid);
72 std::pair<data_ACCIDENTAL_WRITTEN, data_ACCIDENTAL_GESTURAL> GetAccidValue();
74 Accid *GetAccidElement() {
return &m_accid; }
76 bool IsRestMode()
const {
return m_restMode; }
77 void SetRestMode(
bool restMode);
79 enum ChordMode : int8_t { CHORD_NONE = 0, NEW, EDIT_NEW, EDIT_EXISTING };
81 ChordMode GetChordMode()
const {
return m_chordMode; }
82 void SetChordMode(ChordMode chordMode);
83 bool IsChordMode()
const {
return (m_chordMode != ChordMode::CHORD_NONE); }
84 bool IsChordEditMode()
const
86 return (m_chordMode == ChordMode::EDIT_NEW) || (m_chordMode == ChordMode::EDIT_EXISTING);
89 enum TieMode : int8_t { TIE_NONE = 0, TIE, COPY };
91 TieMode GetTieMode()
const {
return m_tieMode; }
92 void SetTieMode(TieMode tieMode);
93 bool IsTieMode()
const {
return (m_tieMode != TieMode::TIE_NONE); }
95 enum InputMode : int8_t { PITCH_FIRST = 0, DURATION_FIRST };
97 InputMode GetInputMode()
const {
return m_inputMode; }
98 void SetInputMode(InputMode inputMode);
100 bool IsAutoBeam()
const {
return m_autoBeam; }
101 void SetAutoBeam(
bool autoBeam) { m_autoBeam = autoBeam; }
103 int GetYRelPitchC()
const {
return m_yRelPitchC; }
104 void SetYRelPitchC(
int yRelPitchC) { m_yRelPitchC = yRelPitchC; }
106 bool Veto(
const std::string &attribute)
const;
107 void OnSet(
const std::string &attribute);
119 FunctorCode AcceptEnd(
Functor &functor)
override;
120 FunctorCode AcceptEnd(
ConstFunctor &functor)
const override;
133 bool m_isAccidImplicit;
137 ChordMode m_chordMode;
139 InputMode m_inputMode;
145 std::vector<LayerElement *> m_containers;
This class models the MEI <accid> element.
Definition: accid.h:41
This class stores an alignment position elements will point to.
Definition: horizontalaligner.h:77
This abstract class is the base class for all const functors.
Definition: functor.h:126
This class implements a curor for the editor.
Definition: cursor.h:27
bool IsCursor() const override
Flag indicator if or Cursor instance.
Definition: cursor.h:46
void Reset() override
Virtual reset method.
FunctorCode Accept(Functor &functor) override
Interface for class functor visitation.
void CloneReset() override
Overriding CloneReset() method to be called after copy / assignment calls.
Object * Clone() const override
Method call for copying child classes.
Definition: cursor.h:36
This abstract class is the base class for all mutable functors.
Definition: functor.h:101
This class is a base class for the Layer (<layer>) content.
Definition: layerelement.h:51
This class models the MEI <note> element.
Definition: note.h:69
This class represents a basic object.
Definition: object.h:66