MUSX Document Model
Loading...
Searching...
No Matches
musx::dom::others::StaffStyle Class Reference

Represents a Finale staff style. More...

#include <Staff.h>

+ Inheritance diagram for musx::dom::others::StaffStyle:

Classes

class  Masks
 lists the masks that deterimine if this staff style overrides the staff settings More...
 

Public Member Functions

 StaffStyle (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
 Constructor function.
 
void integrityCheck (const std::shared_ptr< Base > &ptrToThis) override
 Allows a class to determine if it has been properly contructed by the factory and fix issues that it can, such as creating default instances of contained classes.
 
- Public Member Functions inherited from musx::dom::others::Staff
 Staff (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
 Constructor function.
 
std::string getFullName (util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
 Returns the full staff name without Enigma tags. If the full name contains part-specific tags (rare), they are inserted for the score.
 
std::string getAbbreviatedName (util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
 Returns the abbreviated staff name without Enigma tags. If the abbreviated name contains part-specific tags (rare), they are inserted for the score.
 
MusxInstance< MultiStaffInstrumentGroupgetMultiStaffInstGroup () const
 Returns the MultiStaffInstrumentGroup for this staff if it is part of one in the data. Otherwise nullptr.
 
MusxInstance< details::StaffGroupgetMultiStaffInstVisualGroup () const
 Returns the details::StaffGroup for this staff if it is part of a multistaff instrument (as defined in Document::getInstruments).
 
util::EnigmaParsingContext getFullInstrumentNameCtx (Cmper forPartId, bool preferStaffName=false) const
 Returns the parsing context for the full name.
 
util::EnigmaParsingContext getAbbreviatedInstrumentNameCtx (Cmper forPartId, bool preferStaffName=false) const
 Returns the parsing context for the abbreviated name.
 
std::string getFullInstrumentName (util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii, bool preferStaffName=false) const
 Returns the full instrument name for this staff without Enigma tags and with autonumbering (if any)
 
std::string getAbbreviatedInstrumentName (util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii, bool preferStaffName=false) const
 Returns the abbreviated instrument name for this staff without Enigma tags and with autonumbering (if any)
 
MusxInstance< NamePositioninggetFullNamePosition () const
 Returns the full name positioning in effect for this staff instance.
 
MusxInstance< NamePositioninggetAbbreviatedNamePosition () const
 Returns the abbreviated name positioning in effect for this staff instance.
 
bool showNamesForPart (Cmper partId) const
 Returns if names should be shown for the specified part.
 
std::pair< std::string, bool > calcAutoNumberingAffix () const
 Calculate the auto numbering prefix or suffix, if needed.
 
std::string addAutoNumbering (const std::string &plainName) const
 Add auto numbering as a prefix or suffix, if needed.
 
ClefIndex calcClefIndexAt (MeasCmper measureId, Edu position, bool forWrittenPitch=false) const
 Returns the clef in this staff at the specified location.
 
ClefIndex calcFirstClefIndex (bool forWrittenPitch=false) const
 Returns the first clef in this staff.
 
int calcNumberOfStafflines () const
 Calculates the number of staff lines on this staff.
 
int calcMiddleStaffPosition () const
 Calculates the middle staff position. For staves with even numbers of lines, it is the middle space.
 
int calcToplinePosition () const
 Calculates the position of the top staff line, relative to the reference line.
 
bool hasInstrumentAssigned () const
 Return true if this staff has an instrument assigned.
 
std::pair< int, int > calcTranspositionInterval () const
 Calculates the transposition interval for this staff or staff composite.
 
MusxInstanceList< PartDefinitiongetContainingParts (bool includeScore=true) const
 Gets a list of all parts that contain this staff.
 
MusxInstance< PartDefinitionfirstContainingPart () const
 Finds the first part that contains this staff, not including the score.
 
bool requireAllFields () const override
 Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class.
 
- Public Member Functions inherited from musx::dom::OthersBase
 OthersBase (const OthersBase &)=default
 explicit default copy constructor
 
 OthersBase (OthersBase &&) noexcept=default
 explicit default move constructor
 
Cmper getCmper () const
 Gets the cmper key value.
 
std::optional< IncigetInci () const
 Gets the optional array index (inci).
 
Cmper getRequestedPartId () const
 If this instance was retrieved from an object pool, it contains the part ID that was used to retrieve it. If this value is different than getSourcePartId, then this instance is a copy of the pool instance.
 
- Public Member Functions inherited from musx::dom::Base
virtual ~Base () noexcept(false)=default
 Virtual destructor for polymorphic behavior.
 
DocumentPtr getDocument () const
 Gets a reference to the Document.
 
Cmper getSourcePartId () const
 Gets the source partId for this instance. If an instance is fully shared with the score, the source is SCORE_PARTID. If an instance is partially shared or non shared, the source is the ID of the part that sourced it.
 
ShareMode getShareMode () const
 Gets the sharing mode for this instance.
 
const SharedNodesgetUnlinkedNodes () const
 Gets the unlinked nodes for this instance. (Only populated for ShareMode::Partial)
 
void addUnlinkedNode (const std::string &nodeName)
 Adds a shared node for this instance.
 

Static Public Member Functions

static MusxInstanceList< StaffStylefindAllOverlappingStyles (const DocumentPtr &document, Cmper partId, StaffCmper staffId, MeasCmper measId, Edu eduPosition)
 Finds a subset from all StaffStyle instances that overlap with the specified metric position on a given staff in a give linked part or score.
 
static const xml::XmlElementArray< StaffStyle > & xmlMappingArray ()
 Required for musx::factory::FieldPopulator.
 
- Static Public Member Functions inherited from musx::dom::others::Staff
static void calcAllAutoNumberValues (const DocumentPtr &document)
 Get the auto-numbering value for this staff, if applicable.
 
template<typename SubType >
static void calcAllRuntimeValues (const DocumentPtr &document)
 Populate runtime values for all staves or staffstyles, such as percussion map Id if any.
 
static ClefIndex calcFirstClefIndex (const DocumentPtr &document, Cmper partId, StaffCmper staffCmper)
 Returns the first clef in the specified staff in the document.
 
static const xml::XmlElementArray< Staff > & xmlMappingArray ()
 Required for musx::factory::FieldPopulator.
 

Public Attributes

std::string styleName
 name of staff style
 
bool addToMenu
 add this staff style to the context menu for staff styles
 
std::shared_ptr< Masksmasks
 
- Public Attributes inherited from musx::dom::others::Staff
NotationStyle notationStyle {}
 Standard, percussion, or tablature.
 
std::shared_ptr< FontInfonoteFont
 The custom font to use for noteheads. Guaranteed non-null by integrityCheck if useNoteFont is true.
 
bool useNoteFont {}
 Indicates if noteFont should be used.
 
ClefIndex defaultClef {}
 Index of default clef for the staff.
 
ClefIndex transposedClef {}
 Index of transposed clef for the staff. Only used if Transposition::setToClef is true.
 
std::optional< int > staffLines {}
 Number of lines in the staff (if no custom staff)
 
std::optional< std::vector< int > > customStaff
 A list of stafflines from 0..26 where a standard 5-line staff is values 11, 12, 13, 14, 15.
 
Evpu lineSpace {}
 Distance between staff lines.
 
std::string instUuid
 Unique identifier for the type of instrument.
 
int capoPos {}
 "Capo Position" (Tablature Staff Attributes)
 
int lowestFret {}
 "Default Lowest Fret" (Tablature Staff Attributes)
 
bool floatKeys {}
 "Independent Key Signature"
 
bool floatTime {}
 "Independent Time Signature"
 
bool blineBreak {}
 "Break Barlines Between Staves"
 
bool rbarBreak {}
 "Break Repeat Barlines Between Staves"
 
bool hasStyles {}
 Indicates that this staff has staff style assignments.
 
bool showNameInParts {}
 "Display Staff Name in Parts" (xml node is <showNameParts>)
 
bool showNoteColors {}
 "Color Noteheads" (Score Manager)
 
std::shared_ptr< Transpositiontransposition
 Transposition details, if non-null.
 
bool hideNameInScore {}
 Inverse of "Display Staff Name in Score" (xml node is <hideStfNameInScore>)
 
Evpu botBarlineOffset {}
 Offset for the bottom barline.
 
AlternateNotation altNotation {}
 Alternate notation on the staff.
 
LayerIndex altLayer {}
 Alternate notation Apply To Layer index (0..3)
 
bool altHideArtics {}
 Hide Articulations in alternate notation (in Apply-To Layer)
 
bool altHideLyrics {}
 Hide Lyrics in alternate notation (in Apply-To Layer)
 
bool altHideSmartShapes {}
 Hide Smart Shapes (in Apply-To layer: probably only affects entry-attached shapes)
 
bool altRhythmStemsUp {}
 Show stems up in alternate Rhythmic Notation mode.
 
bool altSlashDots {}
 Show dots on beat slashes in compound meter.
 
bool altHideOtherNotes {}
 Hide notes in other layers in alternate notation.
 
bool altHideOtherArtics {}
 Hide articulations in other layers in alternate notation.
 
bool altHideExpressions {}
 Hide Expressions in alternate notation (in Apply-To Layer)
 
bool altHideOtherLyrics {}
 Hide lyrics in other layers in alternate notation.
 
bool altHideOtherSmartShapes {}
 Hide Smart Shapes in other layers in alternate notation.
 
bool altHideOtherExpressions {}
 Hide Expressions in other layers in alternate notation.
 
bool hideRepeatBottomDot {}
 Inverse of "Bottom Repeat Dot" in Staff Setup dialog.
 
bool flatBeams {}
 "Flat Beams"
 
bool hideFretboards {}
 Inverse of "Display Fretboards".
 
bool blankMeasure {}
 Inverse of "Display Rests in Empty Measures".
 
bool hideRepeatTopDot {}
 Inverse of "Top Repeat Dot" in Staff Setup dialog.
 
bool hideLyrics {}
 Inverse of "Display Lyrics".
 
bool noOptimize {}
 Inverse of "Allow Hiding When Empty".
 
Evpu topBarlineOffset {}
 Offset for the top barline.
 
bool hideMeasNums {}
 Inverse of "Display Measure Numbers".
 
bool hideRepeats {}
 Inverse of "Display Endings and Text Repeats".
 
bool hideBarlines {}
 Inverse of "Display Barlines".
 
bool hideRptBars {}
 Inverse of "Display Repeat Bars".
 
bool hideKeySigs {}
 Inverse of "Display Key Signatures".
 
bool hideTimeSigs {}
 Inverse of "Display Time Signatures in Score".
 
bool hideClefs {}
 Inverse of "Display Clefs".
 
bool hideStaffLines {}
 Inverse of "Display Staff Lines".
 
bool hideChords {}
 Inverse of "Display Chords".
 
bool noKey {}
 "Ignore Key Signatures"
 
Evpu dwRestOffset {}
 Offset for downstem rests.
 
Evpu wRestOffset {}
 Offset for whole rests.
 
Evpu hRestOffset {}
 Offset for half rests.
 
Evpu otherRestOffset {}
 Offset for other rests.
 
bool hideRests {}
 Inverse of "Display Rests".
 
bool hideTies {}
 Inverse of "Display Ties".
 
bool hideDots {}
 Inverse of "Display Augmentation Dots".
 
int stemReversal {}
 Stem reversal value.
 
Cmper fullNameTextId {}
 Full name TextBlock ID. (xml node is <fullName>)
 
Cmper abbrvNameTextId {}
 Abbreviated name TextBlock ID. (xml node is <abbrvName>)
 
Evpu botRepeatDotOff {}
 Offset for bottom repeat dots.
 
Evpu topRepeatDotOff {}
 Offset for top repeat dots.
 
Efix vertTabNumOff {}
 Vertical offset for tab number. (Tablature Staff Attributes)
 
bool showTabClefAllSys {}
 Inverse of "Show Clef Only On First Measure" (Tablature Staff Attributes)
 
bool useTabLetters {}
 "Use Letters" (Tablature Staff Attributes)
 
bool breakTabLinesAtNotes {}
 "Break Tablature Lines At Numbers" (Tablature Staff Attributes)
 
bool hideTuplets {}
 Inverse of "Show Tuplets" (Tablature Staff Attributes)
 
Cmper fretInstrumentId {}
 Cmper of fret instrument. (Tablature Staff Attributes)
 
bool hideStems {}
 Inverse of "Display Stems".
 
StemDirection stemDirection {}
 stem direction for staff (xml node is <stemDir>)
 
bool hideBeams {}
 Inverse of "Show Beams".
 
bool stemStartFromStaff {}
 
bool stemsFixedEnd {}
 "Use Vertical Offset For Beam End Of Stems (Offset From Staff)"
 
bool stemsFixedStart {}
 "Use Vertical Offset For Notehead End Of Stems"
 
Efix horzStemOffUp {}
 Horizontal Stem Offsets: Up Stem.
 
Efix horzStemOffDown {}
 Horizontal Stem Offsets: Down Stem.
 
Efix vertStemStartOffUp {}
 Vertical Stem Offsets For Notehead End: Up Stem.
 
Efix vertStemStartOffDown {}
 Vertical Stem Offsets For Notehead End: Down Stem.
 
Efix vertStemEndOffUp {}
 Vertical Stem Offsets For Stem End: Up Stem.
 
Efix vertStemEndOffDown {}
 Vertical Stem Offsets For Stem End: Down Stem.
 
HideMode hideMode {}
 "Force Hide Staff" option
 
bool redisplayLayerAccis {}
 "Redisplay Accidentals in Other Layers Within Measures"
 
bool hideTimeSigsInParts {}
 Inverse of "Display Time Signatures in Parts".
 
AutoNumberingStyle autoNumbering {}
 Autonumbering style if useAutoNumbering is true. (xml node is <autoNum>)
 
bool useAutoNumbering {}
 Whether names should be auto-numbered. (xml node is <useAutoNum>)
 
bool hideKeySigsShowAccis {}
 "Hide Key Signature and Show Accidentals" transposition option.
 
Cmper fullNamePosId {}
 
bool fullNamePosFromStyle {}
 
Cmper abrvNamePosId {}
 
bool abrvNamePosFromStyle {}
 
Cmper multiStaffInstId {}
 
std::optional< int > autoNumberValue
 Calculated autonumbering value. It is computed by calcAllAutoNumberValues.
 
std::optional< CmperpercussionMapId
 Calculated percussion map Id for a percussion staff. (Populated by in calcAllRuntimeValues.)
 

Static Public Attributes

static constexpr std::string_view XmlNodeName = "staffStyle"
 The XML node name for this type.
 
- Static Public Attributes inherited from musx::dom::others::Staff
static constexpr std::string_view XmlNodeName = "staffSpec"
 The XML node name for this type.
 

Protected Member Functions

 StaffStyle (const MusxInstance< Staff > &staff)
 protected constructor for StaffComposite. This constructor must be followed by a call to createMasks.
 
void createMasks (const MusxInstance< Base > &ptrToSelf)
 Separate creator for masks.
 
- Protected Member Functions inherited from musx::dom::OthersBase
 OthersBase (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, std::optional< Inci > inci=std::nullopt)
 Constructs an OthersBase object.
 
OthersBaseoperator= (const OthersBase &other)
 Assignment operator delegates to base, preserving OthersBase state.
 
OthersBaseoperator= (OthersBase &&other) noexcept
 Assignment operator delegates to base, preserving OthersBase state.
 
- Protected Member Functions inherited from musx::dom::Base
 Base (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode)
 Constructs the base class.
 
 Base (const Base &)=default
 explicit default copy constructor
 
 Base (Base &&) noexcept=default
 explicit default move constructor
 
Baseoperator= (const Base &)
 no-op copy assignment operator allows subclasses to copy their values.
 
Baseoperator= (Base &&) noexcept
 no-op move assignment operator allows subclasses to move their values.
 

Additional Inherited Members

- Public Types inherited from musx::dom::others::Staff
enum class  AutoNumberingStyle {
  ArabicSuffix , RomanSuffix , OrdinalPrefix , AlphaSuffix ,
  ArabicPrefix
}
 Enum for auto-numbering style. Auto-numbering is based on instUuid. More...
 
enum class  StemDirection { Default , AlwaysUp , AlwaysDown }
 Enum for staff-level stem direction override. More...
 
enum class  NotationStyle { Standard , Percussion , Tablature }
 Enum for notation style.
 
enum class  HideMode { None , Cutaway , ScoreParts , Score }
 Enum for hide mode. More...
 
enum class  AlternateNotation {
  Normal , SlashBeats , Rhythmic , Blank ,
  OneBarRepeat , TwoBarRepeat , BlankWithRests
}
 Enum for alternate notation styles. More...
 
- Public Types inherited from musx::dom::Base
enum class  ShareMode { All , Partial , None }
 Describes how this instance is shared between part and score. More...
 
using SharedNodes = std::set< std::string >
 The container type for shared nodes.
 

Detailed Description

Represents a Finale staff style.

The cmper is a 1-based staff style ID (not necessarily sequential). This class is identified by the XML node name "staffStyle".

Member Function Documentation

◆ createMasks()

void musx::dom::others::StaffStyle::createMasks ( const MusxInstance< Base > &  ptrToSelf)
inlineprotected

Separate creator for masks.

Parameters
ptrToSelfThis allows both external subclass creation (StaffComposite) and shared_from_this

◆ findAllOverlappingStyles()

MusxInstanceList< others::StaffStyle > musx::dom::others::StaffStyle::findAllOverlappingStyles ( const DocumentPtr document,
Cmper  partId,
StaffCmper  staffId,
MeasCmper  measId,
Edu  eduPosition 
)
static

Finds a subset from all StaffStyle instances that overlap with the specified metric position on a given staff in a give linked part or score.

Parameters
documentThe document to search
partIdThe linked part id to search
staffIdThe staff to search
measIdThe MeasCmper of the measure position
eduPositionThe Edu position within the measure specified by measId.

◆ integrityCheck()

void musx::dom::others::StaffStyle::integrityCheck ( const std::shared_ptr< Base > &  ptrToThis)
inlineoverridevirtual

Allows a class to determine if it has been properly contructed by the factory and fix issues that it can, such as creating default instances of contained classes.

The default implementation should always be called inside an overridden implementation.

Parameters
ptrToThisThis instance in a shared_ptr. (Avoids need for shared_from_this.)
Exceptions
musx::dom::integrity_errorif there is a problem.

Reimplemented from musx::dom::others::Staff.

Member Data Documentation

◆ masks

std::shared_ptr<Masks> musx::dom::others::StaffStyle::masks

override masks: guaranteed to exist by integrityCheck, which is called by the factory (xml node is <mask>)