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

Represents a Finale staff style. More...

#include <Others.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.
 
bool requireAllFields () const override
 Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class.
 
void integrityCheck () 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.
 
std::string getAbbreviatedName (util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
 Returns the abbreviated staff name without Enigma tags.
 
std::shared_ptr< MultiStaffInstrumentGroupgetMultiStaffInstGroup () const
 Returns the MultiStaffInstrumentGroup for this staff if it is part of one. Otherwise nullptr.
 
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)
 
bool showNamesForPart (Cmper partId) const
 Returns if names should be shown for the specified part.
 
std::string addAutoNumbering (const std::string &plainName) const
 Add auto numbering as a prefix or suffix, if needed.
 
ClefIndex calcClefIndexAt (MeasCmper measureId, Edu position) const
 Returns the clef in this staff at the specified location.
 
ClefIndex calcFirstClefIndex () const
 Returns the first clef in this staff.
 
int calcMiddleStaffPosition () const
 Returns the middle staff position. For staves with even numbers of lines, it is the middle space.
 
- Public Member Functions inherited from musx::dom::OthersBase
Cmper getCmper () const
 Gets the cmper key value.
 
std::optional< IncigetInci () const
 Gets the optional array index (inci).
 
- 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 getPartId () const
 Gets the partId for this instance (or 0 for score)
 
std::shared_ptr< others::PartDefinitiongetPartDefinition () const
 Gets the others::PartDefinition corresponding to getPartId.
 
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 std::vector< std::shared_ptr< StaffStyle > > findAllOverlappingStyles (const DocumentPtr &document, Cmper partId, InstCmper 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 calcAutoNumberValues (const DocumentPtr &document)
 Get the auto-numbering value for this staff, if applicable.
 
static ClefIndex calcFirstClefIndex (const DocumentPtr &document, Cmper partId, InstCmper 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
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.
 
bool floatKeys {}
 "Independent Key Signature"
 
bool floatTime {}
 "Independent Time Signature"
 
bool hasStyles {}
 Indicates that this staff has staff style assignments.
 
bool showNameInParts {}
 "Display Staff Name in Parts" (xml node is <showNameParts>)
 
std::shared_ptr< Transpositiontransposition
 Transposition details, if non-null.
 
bool hideNameInScore {}
 Inverse of "Display Staff Name in Score" (xml node is <hideStfNameInScore>)
 
Evpu topBarlineOffset {}
 Offset for the top barline.
 
Evpu botBarlineOffset {}
 Offset for the bottom barline.
 
Evpu dwRestOffset {}
 Offset for downstem rests.
 
Evpu wRestOffset {}
 Offset for whole rests.
 
Evpu hRestOffset {}
 Offset for half rests.
 
Evpu otherRestOffset {}
 Offset for other rests.
 
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.
 
Evpu vertTabNumOff {}
 Vertical offset for tab number.
 
bool hideStems {}
 Inverse of "Display Stems".
 
bool hideBeams {}
 Inverse of "Show Beams".
 
StemDirection stemDirection {}
 stem direction for staff (xml node is <stemDir>)
 
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 multiStaffInstId {}
 
std::optional< int > autoNumberValue
 Calculated autonumbering value. It is computed by calcAutoNumberValues.
 

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 std::shared_ptr< Staff > &staff)
 protected constructor for StaffComposite
 
- 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.
 
- Protected Member Functions inherited from musx::dom::Base
 Base (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode)
 Constructs the base class and enforces the static constexpr XmlNodeName.
 
Baseoperator= (const Base &)
 assignment constructor: m_unlinkedNodes is intentionally omitted
 

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...
 
- 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

◆ findAllOverlappingStyles()

std::vector< std::shared_ptr< others::StaffStyle > > musx::dom::others::StaffStyle::findAllOverlappingStyles ( const DocumentPtr document,
Cmper  partId,
InstCmper  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 ( )
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.

Exceptions
musx::dom::integrity_errorif there is a problem.

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

◆ requireAllFields()

bool musx::dom::others::StaffStyle::requireAllFields ( ) const
inlineoverridevirtual

Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class.

Some classes make it difficult to discover all the possible xml tags that might be used for all its options. An example is others::TextBlock. By overriding this function, a class can allow its members to be discovered as needed without causing error messages or throwing exceptions.

Remarks
This value only escapes errors on fields. Enum values must still have all values provided to avoid error messages or exceptions.

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>)