MUSX Document Model
Loading...
Searching...
No Matches
SmartShape.h
1/*
2 * Copyright (C) 2025, Robert Patterson
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22#pragma once
23
24#include "musx/util/Logger.h"
25#include "musx/util/Fraction.h"
26
27#include "BaseClasses.h"
28#include "CommonClasses.h"
29 // do not add other dom class dependencies. Use Implementations.cpp for implementations that need total class access.
30
31namespace musx {
32namespace dom {
33
34class EntryInfoPtr;
35
36namespace others {
37
44class SmartShape : public OthersBase
45{
46public:
48 explicit SmartShape(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
49 : OthersBase(document, partId, shareMode, cmper) {}
50
54 class EndPoint : public Base
55 {
56 public:
58 explicit EndPoint(const DocumentWeakPtr& document)
59 : Base(document, SCORE_PARTID, ShareMode::All) {}
60
65
67 Edu calcEduPosition() const;
68
72
73 bool requireAllFields() const override { return false; }
75 };
76
80 class EndPointAdjustment : public Base
81 {
82 public:
84 explicit EndPointAdjustment(const DocumentWeakPtr& document)
85 : Base(document, SCORE_PARTID, ShareMode::All) {}
86
89 bool active{};
90
91 bool requireAllFields() const override { return false; }
93 };
94
98 class TerminationSeg : public Base
99 {
100 public:
102 explicit TerminationSeg(const DocumentWeakPtr& document)
103 : Base(document, SCORE_PARTID, ShareMode::All) {}
104
105 std::shared_ptr<EndPoint> endPoint;
106 std::shared_ptr<EndPointAdjustment> endPointAdj;
107 std::shared_ptr<EndPointAdjustment> breakAdj;
109
110 void integrityCheck() override
111 {
113 if (!endPoint) {
114 endPoint = std::make_shared<EndPoint>(getDocument());
115 }
116 if (!endPointAdj) {
117 endPointAdj = std::make_shared<EndPointAdjustment>(getDocument());
118 }
119 if (!breakAdj) {
120 breakAdj = std::make_shared<EndPointAdjustment>(getDocument());
121 }
122 }
123
124 bool requireAllFields() const override { return false; }
126 };
127
181
183 bool entryBased{};
184 std::shared_ptr<TerminationSeg> startTermSeg;
185 std::shared_ptr<TerminationSeg> endTermSeg;
186 bool hidden{};
190
196 bool calcAppliesTo(const EntryInfoPtr& entryInfo) const;
197
198 void integrityCheck() override
199 {
201 if (!startTermSeg) {
202 startTermSeg = std::make_shared<TerminationSeg>(getDocument());
203 }
204 if (!endTermSeg) {
205 endTermSeg = std::make_shared<TerminationSeg>(getDocument());
206 }
207 startTermSeg->integrityCheck();
208 endTermSeg->integrityCheck();
209 }
210
211 bool requireAllFields() const override { return false; }
212 constexpr static std::string_view XmlNodeName = "smartShape";
214};
215
223{
224public:
226 explicit SmartShapeCustomLine(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
227 : OthersBase(document, partId, shareMode, cmper) {}
228
230 enum class LineStyle { Char, Solid, Dashed };
231
233 enum class LineCapType { None, Hook, ArrowheadPreset, ArrowheadCustom };
234
236 class CharParams : public Base
237 {
238 public:
240 explicit CharParams(const DocumentWeakPtr& document)
241 : Base(document, SCORE_PARTID, ShareMode::All), font(std::make_shared<FontInfo>(document))
242 {
243 }
244
245 char32_t lineChar{};
246 std::shared_ptr<FontInfo> font;
248
250 };
251
253 class SolidParams : public Base
254 {
255 public:
257 explicit SolidParams(const DocumentWeakPtr& document)
258 : Base(document, SCORE_PARTID, ShareMode::All)
259 {
260 }
261
263
265 };
266
268 class DashedParams : public Base {
269 public:
271 explicit DashedParams(const DocumentWeakPtr& document)
272 : Base(document, SCORE_PARTID, ShareMode::All) {}
273
277
279 };
280
282 std::shared_ptr<CharParams> charParams;
283 std::shared_ptr<SolidParams> solidParams;
284 std::shared_ptr<DashedParams> dashedParams;
285
290
291 bool makeHorz{};
295
301
312
318
321
322 void integrityCheck() override
323 {
325
326 if (lineStyle == LineStyle::Char && !charParams)
327 charParams = std::make_shared<CharParams>(getDocument());
328
329 if (lineStyle == LineStyle::Solid && !solidParams)
330 solidParams = std::make_shared<SolidParams>(getDocument());
331
332 if (lineStyle == LineStyle::Dashed && !dashedParams)
333 dashedParams = std::make_shared<DashedParams>(getDocument());
334 }
335
336 constexpr static std::string_view XmlNodeName = "ssLineStyle";
338};
339
352{
353public:
355 explicit SmartShapeMeasureAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
356 : OthersBase(document, partId, shareMode, cmper, inci)
357 {
358 }
359
363
364 constexpr static std::string_view XmlNodeName = "smartShapeMeasMark";
366};
367
368} // namespace others
369
370namespace details {
371
388{
389public:
390
399 explicit CenterShape(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper shapeNum, Cmper centerShapeNum)
400 : DetailsBase(document, partId, shareMode, shapeNum, centerShapeNum)
401 {}
402
403 std::shared_ptr<others::SmartShape::EndPointAdjustment> startBreakAdj;
404 std::shared_ptr<others::SmartShape::EndPointAdjustment> endBreakAdj;
405
406 void integrityCheck() override
407 {
408 if (!startBreakAdj) {
409 startBreakAdj = std::make_shared<others::SmartShape::EndPointAdjustment>(getDocument());
410 }
411 if (!endBreakAdj) {
412 endBreakAdj = std::make_shared<others::SmartShape::EndPointAdjustment>(getDocument());
413 }
414 }
415
416 bool requireAllFields() const override { return false; }
417 constexpr static std::string_view XmlNodeName = "centerShape";
419};
420
428{
429public:
431 explicit SmartShapeEntryAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
432 : EntryDetailsBase(document, partId, shareMode, entnum, inci)
433 {
434 }
435
437
438 constexpr static std::string_view XmlNodeName = "smartShapeEntryMark";
440};
441
442} // namespace details
443
444} // namespace dom
445} // namespace musx
Base class to enforce polymorphism across all DOM classes.
Definition BaseClasses.h:60
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition BaseClasses.h:85
virtual void integrityCheck()
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition BaseClasses.h:132
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:68
Base class for all "details" types.
Definition BaseClasses.h:298
Base class for all "details" types that use entnum rather than cmper and cmper.
Definition BaseClasses.h:339
Wraps a frame of shared_ptr<const EntryInfo> and an index for per entry access. This class manages ow...
Definition Entries.h:276
Represents the default font settings for a particular element type.
Definition CommonClasses.h:110
Base class for all "others" types.
Definition BaseClasses.h:223
Represents a center shape for a others::SmartShape that spans three or more measures.
Definition SmartShape.h:388
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition SmartShape.h:406
std::shared_ptr< others::SmartShape::EndPointAdjustment > startBreakAdj
Adjustment at the start break (xml: <startBreakAdj>)
Definition SmartShape.h:403
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition SmartShape.h:417
std::shared_ptr< others::SmartShape::EndPointAdjustment > endBreakAdj
Adjustment at the end break (xml: <endBreakAdj>)
Definition SmartShape.h:404
bool requireAllFields() const override
ignore other fields because they are difficult to figure out
Definition SmartShape.h:416
CenterShape(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper shapeNum, Cmper centerShapeNum)
Constructor.
Definition SmartShape.h:399
static const xml::XmlElementArray< CenterShape > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Assigns a smart shape to an entry.
Definition SmartShape.h:428
Cmper shapeNum
The Cmper of the others::SmartShape that is being assigned.
Definition SmartShape.h:436
SmartShapeEntryAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition SmartShape.h:431
static const xml::XmlElementArray< SmartShapeEntryAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition SmartShape.h:438
Hold parameters for LineStyle::Char.
Definition SmartShape.h:237
static const xml::XmlElementArray< CharParams > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
char32_t lineChar
The character to use for the line.
Definition SmartShape.h:245
std::shared_ptr< FontInfo > font
<fontID>, <fontSize>, <fontEfx>
Definition SmartShape.h:246
int baselineShiftEms
The UI says the units are "EMs", but it may be 1/100 EMs.
Definition SmartShape.h:247
CharParams(const DocumentWeakPtr &document)
Constructor function.
Definition SmartShape.h:240
Hold parameters for LineStyle::Dashed.
Definition SmartShape.h:268
Efix dashOff
Length of gap between dashes.
Definition SmartShape.h:276
Efix dashOn
Dash length.
Definition SmartShape.h:275
DashedParams(const DocumentWeakPtr &document)
Constructor function.
Definition SmartShape.h:271
Efix lineWidth
Dashed line width.
Definition SmartShape.h:274
static const xml::XmlElementArray< DashedParams > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Hold parameters for LineStyle::Solid.
Definition SmartShape.h:254
SolidParams(const DocumentWeakPtr &document)
Constructor function.
Definition SmartShape.h:257
Efix lineWidth
Solid line width.
Definition SmartShape.h:262
static const xml::XmlElementArray< SolidParams > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a Finale smart shape custom line style.
Definition SmartShape.h:223
Evpu leftContX
Left continuation position X.
Definition SmartShape.h:304
Evpu rightEndX
Right end position X.
Definition SmartShape.h:306
bool lineBeforeRightEndText
Line adjustments "Right H: Before Text".
Definition SmartShape.h:293
Evpu leftStartX
Left start position X.
Definition SmartShape.h:302
SmartShapeCustomLine(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition SmartShape.h:226
LineCapType lineCapEndType
Line cap end type.
Definition SmartShape.h:287
Evpu centerFullY
Center full position Y.
Definition SmartShape.h:309
Efix lineCapStartHookLength
Length of start hook (if lineStyle is Hook)
Definition SmartShape.h:319
Cmper centerFullRawTextId
Cmper of texts::SmartShapeText. xml node is <centerFullRawTextID>
Definition SmartShape.h:299
Evpu centerAbbrY
Center abbreviation position Y.
Definition SmartShape.h:311
static const xml::XmlElementArray< SmartShapeCustomLine > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Efix lineCapEndHookLength
Length of end hook (if lineStyle is Hook)
Definition SmartShape.h:320
Cmper leftStartRawTextId
Cmper of texts::SmartShapeText. xml node is <leftStartRawTextID>
Definition SmartShape.h:296
Evpu lineEndX
Line adjustments "End H" value.
Definition SmartShape.h:315
Evpu rightEndY
Right end position Y.
Definition SmartShape.h:307
Evpu lineEndY
Line adjustments "Start H" value.
Definition SmartShape.h:316
std::shared_ptr< CharParams > charParams
Parameters for char line style. Only allocated if lineStyle is LineStyle::Char.
Definition SmartShape.h:282
std::shared_ptr< DashedParams > dashedParams
Parameters for dashed line style. Only allocated if lineStyle is LineStyle::Dashed.
Definition SmartShape.h:284
LineStyle lineStyle
Line style.
Definition SmartShape.h:281
Evpu centerAbbrX
Center abbreviation position X.
Definition SmartShape.h:310
bool lineAfterLeftContText
Line adjustments "Cont H: After Text".
Definition SmartShape.h:294
Evpu leftContY
Left continuation position Y.
Definition SmartShape.h:305
Cmper lineCapStartArrowId
Cmper of start arrowhead (preset or cmper of custom ShapeDef). xml node is <lineCapStartArrowID>
Definition SmartShape.h:288
bool lineAfterLeftStartText
Line adjustments "Start H: After Text".
Definition SmartShape.h:292
Evpu lineContX
Line adjustments "V" value (Finale syncs this with lineStartY.)
Definition SmartShape.h:317
Cmper rightEndRawTextId
Cmper of texts::SmartShapeText. xml node is <rightEndRawTextID>
Definition SmartShape.h:298
Evpu leftStartY
Left start position Y.
Definition SmartShape.h:303
bool makeHorz
"Horizontal"
Definition SmartShape.h:291
Cmper centerAbbrRawTextId
Cmper of texts::SmartShapeText. xml node is <centerAbbrRawTextID>
Definition SmartShape.h:300
Cmper leftContRawTextId
Cmper of texts::SmartShapeText. xml node is <leftContRawTextID>
Definition SmartShape.h:297
LineStyle
The type of line style.
Definition SmartShape.h:230
std::shared_ptr< SolidParams > solidParams
Parameters for solid line style. Only allocated if lineStyle is LineStyle::Solid.
Definition SmartShape.h:283
Cmper lineCapEndArrowId
Cmper of end arrowhead (preset or cmper of custom ShapeDef). xml node is <lineCapStartArrowID>
Definition SmartShape.h:289
LineCapType
The type of line cap.
Definition SmartShape.h:233
Evpu lineStartX
Line adjustments "Start H" value.
Definition SmartShape.h:313
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition SmartShape.h:336
Evpu centerFullX
Center full position X.
Definition SmartShape.h:308
Evpu lineStartY
Line adjustments "V" value (Finale syncs this with lineEndY.)
Definition SmartShape.h:314
LineCapType lineCapStartType
Line cap start type.
Definition SmartShape.h:286
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition SmartShape.h:322
Assigns a smart shape or center shape to a measure.
Definition SmartShape.h:352
static const xml::XmlElementArray< SmartShapeMeasureAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition SmartShape.h:364
SmartShapeMeasureAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition SmartShape.h:355
Cmper shapeNum
The Cmper of the SmartShape that is being assigned.
Definition SmartShape.h:360
Cmper centerShapeNum
Definition SmartShape.h:361
Represents the endpoint adjustment of the smart shape.
Definition SmartShape.h:81
Evpu vertOffset
Vertical offset (xml node is <y>)
Definition SmartShape.h:88
EndPointAdjustment(const DocumentWeakPtr &document)
Constructor function.
Definition SmartShape.h:84
static const xml::XmlElementArray< EndPointAdjustment > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool requireAllFields() const override
ignore other fields because they are difficult to figure out
Definition SmartShape.h:91
Evpu horzOffset
Horizontal offset (xml node is <x>)
Definition SmartShape.h:87
bool active
If true, this adjustment should be used when it is applicable (xml node is <on>)
Definition SmartShape.h:89
Represents an endpoint of the smart shape.
Definition SmartShape.h:55
static const xml::XmlElementArray< EndPoint > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Edu calcEduPosition() const
Calculates the edu position of the endpoint, based on whether it is an edu or an entry.
Definition Implementations.cpp:2407
EndPoint(const DocumentWeakPtr &document)
Constructor function.
Definition SmartShape.h:58
bool requireAllFields() const override
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class...
Definition SmartShape.h:73
MeasCmper measId
Measure ID (xml node is <meas>)
Definition SmartShape.h:62
EntryInfoPtr calcAssociatedEntry() const
Calculates the entry associated with the endpoint.
Definition Implementations.cpp:2382
InstCmper staffId
Staff ID (xml node is <inst>)
Definition SmartShape.h:61
Edu eduPosition
Edu position of endpoint (xml node is <edu>)
Definition SmartShape.h:63
EntryNumber entryNumber
Entry number. Zero if the endpoint is not entry-attached. (xml node is <entryNum>)
Definition SmartShape.h:64
Represents the termination segment of the smart shape.
Definition SmartShape.h:99
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition SmartShape.h:110
static const xml::XmlElementArray< TerminationSeg > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< EndPoint > endPoint
Endpoint information (xml node is <endPt>)
Definition SmartShape.h:105
TerminationSeg(const DocumentWeakPtr &document)
Constructor function.
Definition SmartShape.h:102
std::shared_ptr< EndPointAdjustment > breakAdj
Definition SmartShape.h:107
std::shared_ptr< EndPointAdjustment > endPointAdj
Endpoint adjustment information (xml node is <endPtAdj>)
Definition SmartShape.h:106
bool requireAllFields() const override
ignore other fields because they are difficult to figure out
Definition SmartShape.h:124
Represents a Finale smart shape.
Definition SmartShape.h:45
SmartShape(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition SmartShape.h:48
Cmper lineStyleId
If non-zero, the SmartShapeCustomLine for this shape. Several ShapeType values use it....
Definition SmartShape.h:189
bool entryBased
Whether the shape is entry-based.
Definition SmartShape.h:183
NoteNumber startNoteId
If non-zero, the specific note with the entry that this shape starts from. (xml node is <startNoteID>...
Definition SmartShape.h:187
bool calcAppliesTo(const EntryInfoPtr &entryInfo) const
Calculates if the smart shape applies to the specified entry.
Definition Implementations.cpp:2416
std::shared_ptr< TerminationSeg > endTermSeg
End termination segment.
Definition SmartShape.h:185
NoteNumber endNoteId
If non-zero, the specific note with the entry that this shape ends on. (xml node is <endNoteID>)
Definition SmartShape.h:188
bool hidden
Inverse of "Show" option.
Definition SmartShape.h:186
ShapeType
All the smart shape types supported by Finale.
Definition SmartShape.h:137
@ TwoOctaveUp
Quindicesima (15ma) == 21.
@ DashLineDownLeft
Dashed line with downward left hook.
@ DashLineUpLeft
Dashed line with upward left hook. == 32.
@ CustomLine
User-created custom line with shape determined by lineStyleId. (xml value is "smartLine")
@ Crescendo
Crescendo hairpin. (xml value is "cresc")
@ SlurAuto
Slur with direction automatically determined.
@ DashSlurUp
Thin line dashed upward slur (tips point down).
@ Trill
Trill (includes "tr" symbol at the beginning). == 14.
@ DashLineUp
Dashed line with upward hook.
@ DashLineDownBoth
Dashed line with downward hooks on both ends. (xml value is "dashLineDown2")
@ SlurDown
Downward Slur (tips point up). This is the default and may not appear in the xml, but the text is in ...
@ WordExtension
Lyric word extension, used only with lyric assignments. (xml value is "wordExt")
@ TabSlide
Tab slide (a solid line that is often used as a note-attached glissando)
@ SolidLineDown
Solid line with downward right hook.
@ DashSlurDown
Thin line dashed downward slur (tips point up).
@ SolidLineDownBoth
Solid line with downward hooks on both ends. (xml value is "solidLineDown2")
@ DashContouSlurAuto
Contoured line dashed slur with direction automatically determined.
@ Glissando
Glissando (shape is determined by lineStyleId) == 25 (24 has no value)
@ SolidLineDownUp
Solid line with downward left hook and upward right hook.
@ SolidLineUp
Solid line with upward right hook.
@ Decrescendo
Decrescendo hairpin. (xml value is "decresc")
@ BendHat
Bend hat (solid up-down line with a corner in the middle)
@ Hyphen
Lyric hyphen, used only with lyric assignments.
@ DashLineUpDown
Dashed line with upward left hook and downward right hook.
@ DashContourSlurUp
Contoured line dashed upward slur (tips point down).
@ DashContourSlurDown
Contoured line dashed downward slur (tips point up).
@ SolidLineDownLeft
Solid line with downward left hook.
@ DashLineDown
Dashed line with downward hook. == 7.
@ DashLineUpBoth
Dashed line with upward hooks on both ends. (xml value is "dashLineUp2")
@ SolidLineUpBoth
Solid line with upward hooks on both ends. (xml value is "solidLineUp2")
@ DashSlurAuto
Thin line dashed slur with direction automatically determined.
@ SolidLineUpDown
Solid line with upward left hook and downward right hook.
@ TrillExtension
Trill extension: only the wavy line. (xml value is "trillExt")
@ SolidLineUpLeft
Solid line with upward left hook.
@ TwoOctaveDown
Quindicesima bassa (15ma bassa)
@ SlurUp
Upward Slur (tips point down).
@ DashLineDownUp
Dashed line with downward left hook and upward right hook.
static const xml::XmlElementArray< SmartShape > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
XML node name.
Definition SmartShape.h:212
void integrityCheck() override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition SmartShape.h:198
std::shared_ptr< TerminationSeg > startTermSeg
Start termination segment.
Definition SmartShape.h:184
bool requireAllFields() const override
ignore other fields because they are difficult to figure out
Definition SmartShape.h:211
ShapeType shapeType
Type of smart shape.
Definition SmartShape.h:182
@ None
Default value, no rehearsal mark style.
int16_t MeasCmper
Enigma meas Cmper (may be negative when not applicable)
Definition Fundamentals.h:64
int32_t Efix
EFIX value (64 per EVPU, 64*288=18432 per inch)
Definition Fundamentals.h:60
constexpr Cmper SCORE_PARTID
The part id of the score.
Definition Fundamentals.h:80
int16_t InstCmper
Enigma staff (inst) Cmper (may be negative when not applicable)
Definition Fundamentals.h:65
int16_t Inci
Enigma "incident" key type.
Definition Fundamentals.h:56
int32_t Evpu
EVPU value (288 per inch)
Definition Fundamentals.h:57
uint16_t Cmper
Enigma "comperator" key type.
Definition Fundamentals.h:55
int32_t Edu
"Enigma Durational Units" value (1024 per quarter note)
Definition Fundamentals.h:61
std::weak_ptr< Document > DocumentWeakPtr
Shared weak Document pointer.
Definition BaseClasses.h:53
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:68
uint16_t NoteNumber
Note identifier.
Definition Fundamentals.h:69
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:127
object model for musx file (enigmaxml)
Definition BaseClasses.h:32