MUSX Document Model
|
Represents a Finale staff style. More...
#include <Staff.h>
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. | |
bool | containsInstrumentChange () const |
Determines whether this staff style represents or includes an instrument change. | |
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. | |
![]() | |
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< MultiStaffInstrumentGroup > | getMultiStaffInstGroup () const |
Returns the MultiStaffInstrumentGroup for this staff if it is part of one in the data. Otherwise nullptr. | |
MusxInstance< details::StaffGroup > | getMultiStaffInstVisualGroup () 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< details::ShapeNoteBase > | getNoteShapes () const |
Returns the note shape record in effect for this staff instance. | |
MusxInstance< NamePositioning > | getFullNamePosition () const |
Returns the full name positioning in effect for this staff instance. | |
MusxInstance< NamePositioning > | getAbbreviatedNamePosition () 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. | |
Evpu | calcBaselineZeroPosition () const |
Calculates the baseline zero position for this staff, relative to the reference line, before any displacements are applied. | |
template<typename BaselineType , std::enable_if_t< std::is_base_of< details::BaselineNoInci, BaselineType >::value, int > = 0> | |
Evpu | calcBaselinePosition (SystemCmper systemId) const |
Returns the baseline position for the staff at the given system. The staff should be the staff at the beginning of the system. | |
template<typename BaselineType , std::enable_if_t< std::is_base_of< details::Baseline, BaselineType >::value &&!std::is_base_of< details::BaselineNoInci, BaselineType >::value, int > = 0> | |
Evpu | calcBaselinePosition (SystemCmper systemId, Cmper lyricNumber) const |
Returns the baseline position for the staff at the given system. The staff should be the staff at the beginning of the system. | |
std::vector< LyricsLineInfo > | createLyricsLineInfo (SystemCmper systemId) const |
Creates a vector of LyricsLineInfo for the current requested part. | |
int | calcTopLinePosition () const |
Calculates the position of the top staff line, relative to the reference line. | |
int | calcBottomLinePosition () 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< PartDefinition > | getContainingParts (bool includeScore=true) const |
Gets a list of all parts that contain this staff. | |
MusxInstance< PartDefinition > | firstContainingPart () const |
Finds the first part that contains this staff, not including the score. | |
![]() | |
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< Inci > | getInci () 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. | |
![]() | |
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 SharedNodes & | getUnlinkedNodes () 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. | |
virtual bool | requireAllFields () const |
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class. | |
Static Public Member Functions | |
static MusxInstanceList< StaffStyle > | findAllOverlappingStyles (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 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 | copyable {} |
whether the staff style assignments for this style should be copied when copy/pasting music | |
bool | addToMenu {} |
add this staff style to the context menu for staff styles | |
std::shared_ptr< Masks > | masks |
![]() | |
NotationStyle | notationStyle {} |
Standard, percussion, or tablature. | |
std::shared_ptr< FontInfo > | noteFont |
The custom font to use for noteheads. Guaranteed non-null by integrityCheck if useNoteFont is true . | |
bool | useNoteShapes {} |
Indicates that note shapes should be used. It is ignored is no staff- or staffstyle-specific note shapes exist. | |
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< Transposition > | transposition |
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 | fretInstId {} |
Cmper of FretInstrument for TAB strings. (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 | noteShapesId {} |
bool | noteShapesFromStyle {} |
True if noteShapesId is for a staff style. (Determines which note shapes class to retrieve.) | |
Cmper | fullNamePosId {} |
bool | fullNamePosFromStyle {} |
Cmper | abrvNamePosId {} |
bool | abrvNamePosFromStyle {} |
Cmper | multiStaffInstId {} |
std::optional< int > | autoNumberValue |
Calculated autonumbering value. It is computed by calcAllAutoNumberValues. | |
std::optional< Cmper > | percussionMapId |
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 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. | |
![]() | |
OthersBase (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, std::optional< Inci > inci=std::nullopt) | |
Constructs an OthersBase object. | |
OthersBase & | operator= (const OthersBase &other) |
Assignment operator delegates to base, preserving OthersBase state. | |
OthersBase & | operator= (OthersBase &&other) noexcept |
Assignment operator delegates to base, preserving OthersBase state. | |
![]() | |
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 | |
Base & | operator= (const Base &) |
no-op copy assignment operator allows subclasses to copy their values. | |
Base & | operator= (Base &&) noexcept |
no-op move assignment operator allows subclasses to move their values. | |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
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. | |
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".
bool musx::dom::others::StaffStyle::containsInstrumentChange | ( | ) | const |
Determines whether this staff style represents or includes an instrument change.
Beginning with Finale 2012, a dedicated group of staff style masks was reserved exclusively for instrument changes. These masks always appear together and never occur in staff styles used for other purposes. The masks are notationStyle
, defaultClef
, showNoteColors
, and hideKeySigsShowAccis
. If the instUuid is a real instrument (rather than Blank or Unknown), that also indicates an instrument change.
Earlier Finale files may not follow this convention. They could potentially contain staff styles where one or more instrument-change masks are set independently. To handle both modern and legacy cases, this function tests whether any of the instrument-change masks is active in the current staff style.
In addition, there is a set of masks that may be included in an instrument change staff style or also may be included in a regular staff style. These are staffType
, transposition
, fullName
, and abrvName
. This function ignores these optional masks.
true
if one or more instrument-change masks are set in the current his staff style; false
otherwise.
|
inlineprotected |
Separate creator for masks.
ptrToSelf | This allows both external subclass creation (StaffComposite) and shared_from_this |
|
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.
document | The document to search |
partId | The linked part id to search |
staffId | The staff to search |
measId | The MeasCmper of the measure position |
eduPosition | The Edu position within the measure specified by measId . |
|
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.
ptrToThis | This instance in a shared_ptr. (Avoids need for shared_from_this.) |
musx::dom::integrity_error | if there is a problem. |
Reimplemented from musx::dom::others::Staff.
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>
)