8 #ifndef __VRV_LAYER_H__
9 #define __VRV_LAYER_H__
11 #include "atts_shared.h"
12 #include "drawinginterface.h"
40 public AttVisibility {
50 void Reset()
override;
51 std::string GetClassName()
const override {
return "layer"; }
121 void SetDrawingStemDir(data_STEMDIRECTION stemDirection) { m_drawingStemDir = stemDirection; }
122 data_STEMDIRECTION GetDrawingStemDir(
const LayerElement *element)
const;
123 data_STEMDIRECTION GetDrawingStemDir(
const ArrayOfBeamElementCoords *coords)
const;
124 data_STEMDIRECTION GetDrawingStemDir()
const {
return m_drawingStemDir; }
132 std::set<int> GetLayersNForTimeSpanOf(
const LayerElement *element)
const;
133 int GetLayerCountForTimeSpanOf(
const LayerElement *element)
const;
141 std::set<int> GetLayersNInTimeSpan(
142 const Fraction &time,
const Fraction &duration,
const Measure *measure,
int staff)
const;
143 int GetLayerCountInTimeSpan(
144 const Fraction &time,
const Fraction &duration,
const Measure *measure,
int staff)
const;
174 KeySig *GetCurrentKeySig();
175 const KeySig *GetCurrentKeySig()
const;
176 Mensur *GetCurrentMensur();
177 const Mensur *GetCurrentMensur()
const;
179 const MeterSig *GetCurrentMeterSig()
const;
181 const Proport *GetCurrentProport()
const;
184 void ResetStaffDefObjects();
191 bool GetDrawingStaffDefValues(
StaffDef *staffDef)
const;
193 bool DrawKeySigCancellation()
const {
return m_drawKeySigCancellation; }
194 void SetDrawKeySigCancellation(
bool drawKeySigCancellation) { m_drawKeySigCancellation = drawKeySigCancellation; }
196 Clef *GetStaffDefClef() {
return m_staffDefClef; }
197 const Clef *GetStaffDefClef()
const {
return m_staffDefClef; }
198 KeySig *GetStaffDefKeySig() {
return m_staffDefKeySig; }
199 const KeySig *GetStaffDefKeySig()
const {
return m_staffDefKeySig; }
200 Mensur *GetStaffDefMensur() {
return m_staffDefMensur; }
201 const Mensur *GetStaffDefMensur()
const {
return m_staffDefMensur; }
202 MeterSig *GetStaffDefMeterSig() {
return m_staffDefMeterSig; }
203 const MeterSig *GetStaffDefMeterSig()
const {
return m_staffDefMeterSig; }
204 MeterSigGrp *GetStaffDefMeterSigGrp() {
return m_staffDefMeterSigGrp; }
205 const MeterSigGrp *GetStaffDefMeterSigGrp()
const {
return m_staffDefMeterSigGrp; }
207 bool HasStaffDef()
const
209 return (m_staffDefClef || m_staffDefKeySig || m_staffDefMensur || m_staffDefMeterSig || m_staffDefMeterSigGrp);
212 bool DrawOssiaStaffDef()
const {
return m_drawOssiaStaffDef; }
213 void SetDrawOssiaStaffDef(
bool drawOssiaStaffDef) { m_drawOssiaStaffDef = drawOssiaStaffDef; }
222 bool DrawCautionKeySigCancel()
const {
return m_drawCautionKeySigCancel; }
223 void SetDrawCautionKeySigCancel(
bool drawCautionKeySig) { m_drawCautionKeySigCancel = drawCautionKeySig; }
225 Clef *GetCautionStaffDefClef() {
return m_cautionStaffDefClef; }
226 const Clef *GetCautionStaffDefClef()
const {
return m_cautionStaffDefClef; }
227 KeySig *GetCautionStaffDefKeySig() {
return m_cautionStaffDefKeySig; }
228 const KeySig *GetCautionStaffDefKeySig()
const {
return m_cautionStaffDefKeySig; }
229 Mensur *GetCautionStaffDefMensur() {
return m_cautionStaffDefMensur; }
230 const Mensur *GetCautionStaffDefMensur()
const {
return m_cautionStaffDefMensur; }
231 MeterSig *GetCautionStaffDefMeterSig() {
return m_cautionStaffDefMeterSig; }
232 const MeterSig *GetCautionStaffDefMeterSig()
const {
return m_cautionStaffDefMeterSig; }
234 bool HasCautionStaffDef()
const
237 m_cautionStaffDefClef || m_cautionStaffDefKeySig || m_cautionStaffDefMensur || m_cautionStaffDefMeterSig);
245 void SetCrossStaffFromAbove(
bool crossStaff) { m_crossStaffFromAbove = crossStaff; }
246 bool HasCrossStaffFromAbove()
const {
return m_crossStaffFromAbove; }
247 void SetCrossStaffFromBelow(
bool crossStaff) { m_crossStaffFromBelow = crossStaff; }
248 bool HasCrossStaffFromBelow()
const {
return m_crossStaffFromBelow; }
255 bool HasCursor()
const {
return (m_cursor); }
256 Cursor *GetCursor()
const {
return m_cursor; }
257 void SetCursor(Cursor *cursor);
271 FunctorCode AcceptEnd(
Functor &functor)
override;
272 FunctorCode AcceptEnd(
ConstFunctor &functor)
const override;
283 data_STEMDIRECTION m_drawingStemDir;
288 bool m_crossStaffFromBelow;
289 bool m_crossStaffFromAbove;
292 Clef *m_staffDefClef;
297 bool m_drawKeySigCancellation;
298 bool m_drawOssiaStaffDef;
301 Clef *m_cautionStaffDefClef;
302 KeySig *m_cautionStaffDefKeySig;
303 Mensur *m_cautionStaffDefMensur;
304 MeterSig *m_cautionStaffDefMeterSig;
305 bool m_drawCautionKeySigCancel;
This class models the MEI <clef> element.
Definition: clef.h:41
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
This class is an interface for elements with duration, such as notes and rests.
Definition: drawinginterface.h:34
Definition: fraction.h:19
This abstract class is the base class for all mutable functors.
Definition: functor.h:101
This class models the MEI <keySig> element.
Definition: keysig.h:51
This class is a base class for the Layer (<layer>) content.
Definition: layerelement.h:51
This class represents a layer in a laid-out score (Doc).
Definition: layer.h:40
int GetCrossStaffClefLocOffset(const LayerElement *element, int locOffset) const
Return the clef offset for the position if there are cross-staff clefs on the same layer.
FunctorCode Accept(Functor &functor) override
Interface for class functor visitation.
Clef * GetClef(const LayerElement *test)
Get the current clef for the test element.
void SetDrawingStaffDefValues(StaffDef *currentStaffDef)
Set drawing clef, keysig, mensur, metersig, metersiggrp if necessary and if available.
void SetDrawingCautionValues(StaffDef *currentStaffDef)
Set drawing caution clef, keysig, mensur, metersig if necessary and if available.
int GetClefLocOffset(const LayerElement *test) const
Return the clef offset for the position x.
bool IsSupportedChild(ClassId classId) override
Base method for checking if a child can be added.
Object * Clone() const override
Method call for copying child classes.
Definition: layer.h:49
ListOfObjects GetLayerElementsForTimeSpanOf(const LayerElement *element, bool excludeCurrent=false)
Get the list of the layer elements for the duration of an element Takes into account cross-staff situ...
void CloneReset() override
Overriding CloneReset() method to be called after copy / assignment calls.
Clef * GetCurrentClef()
Get the current clef, keysig, mensur and meterSig.
Clef * GetClefFacs(const LayerElement *test)
Get the current clef based on facsimile for the test element.
void ResetCachedDrawingY() const override
Reset cursor drawing Y.
int GetLayerIdx() const
Return the index position of the layer in its staff parent.
Definition: layer.h:75
ListOfObjects GetLayerElementsInTimeSpan(const Fraction &time, const Fraction &duration, const Measure *measure, int staff, bool excludeCurrent)
Get the list of the layer elements used within a time span.
This class represents a measure in a page-based score (Doc).
Definition: measure.h:46
This class models the MEI <mensur> element.
Definition: mensur.h:34
This class represents a MEI meterSigGrp.
Definition: metersiggrp.h:32
This class models the MEI <meterSig> element.
Definition: metersig.h:34
This class represents a basic object.
Definition: object.h:66
int GetIdx() const
Return the index position of the object in its parent (-1 if not found)
This class is an pseudo interface for elements maintaining a flat list of children LayerElement for p...
Definition: object.h:925
This class models the MEI <proport> element.
Definition: proport.h:23
This class represents a MEI staffDef.
Definition: staffdef.h:37