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 details {
37class SmartShapeEntryAssign;
38}
39
40namespace others {
41 class SmartShapeMeasureAssign;
42}
43
44namespace smartshape {
45
50enum class DirectionType
51{
52 None,
53 Under,
54 Over
55};
56
64enum class EntryConnectionType
65{
66 HeadLeftTop,
67 HeadRightTop,
68 HeadRightBottom,
69 HeadLeftBottom,
70
71 StemLeftTop,
72 StemRightTop,
73 StemRightBottom,
74 StemLeftBottom,
75
76 NoteLeftTop,
77 NoteRightTop,
78 NoteRightBottom,
79 NoteLeftBottom,
80 NoteLeftCenter,
81 NoteRightCenter,
82
83 LyricRightCenter,
84 LyricLeftCenter,
85 LyricRightBottom,
86 HeadRightLyricBaseline,
87 DotRightLyricBaseline,
88 DurationLyricBaseline,
89
90 SystemLeft,
91 SystemRight
92};
93
113
152
169
170} // namespace smartshape
171
172namespace others {
173
180class SmartShape : public OthersBase
181{
182public:
184 explicit SmartShape(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
185 : OthersBase(document, partId, shareMode, cmper) {}
186
191 {
192 public:
194
195 std::shared_ptr<smartshape::EndPoint> endPoint;
196 std::shared_ptr<smartshape::EndPointAdjustment> endPointAdj;
197 std::shared_ptr<smartshape::ControlPointAdjustment> ctlPtAdj;
198 std::shared_ptr<smartshape::EndPointAdjustment> breakAdj;
200
201 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
202 {
204 if (!endPoint) {
205 endPoint = std::make_shared<smartshape::EndPoint>(getParent());
206 }
207 if (!endPointAdj) {
208 endPointAdj = std::make_shared<smartshape::EndPointAdjustment>(getParent());
209 }
210 if (!ctlPtAdj) {
211 ctlPtAdj = std::make_shared<smartshape::ControlPointAdjustment>(getParent());
212 }
213 if (!breakAdj) {
214 breakAdj = std::make_shared<smartshape::EndPointAdjustment>(getParent());
215 }
216 endPoint->integrityCheck(ptrToThis);
217 endPointAdj->integrityCheck(ptrToThis);
218 ctlPtAdj->integrityCheck(ptrToThis);
219 breakAdj->integrityCheck(ptrToThis);
220 }
221
223 };
224
278
284 {
285 Auto,
286 Off,
287 On,
288 };
289
295 {
296 Auto,
297 Off,
298 On,
299 Invalid = -1
300 };
301
310 {
311 Same,
312 Opposite,
315 };
316
321 enum class LyricTextType
322 {
323 None,
324 Verse,
325 Chorus,
326 Section,
327 };
328
330 bool entryBased{};
331 bool rotate{};
333 bool makeHorz{};
335 bool makeVert{};
339 std::shared_ptr<TerminationSeg> startTermSeg;
340 std::shared_ptr<TerminationSeg> endTermSeg;
341 std::shared_ptr<smartshape::ControlPointAdjustment> fullCtlPtAdj;
342 bool hidden{};
354
360 bool calcAppliesTo(const EntryInfoPtr& entryInfo) const;
361
362 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
363 {
365 if (!startTermSeg) {
366 startTermSeg = std::make_shared<TerminationSeg>(ptrToThis);
367 }
368 if (!endTermSeg) {
369 endTermSeg = std::make_shared<TerminationSeg>(ptrToThis);
370 }
371 if (!fullCtlPtAdj) {
372 fullCtlPtAdj = std::make_shared<smartshape::ControlPointAdjustment>(ptrToThis);
373 }
374 startTermSeg->integrityCheck(ptrToThis);
375 endTermSeg->integrityCheck(ptrToThis);
376 fullCtlPtAdj->integrityCheck(ptrToThis);
377 }
378
379 constexpr static std::string_view XmlNodeName = "smartShape";
381};
382
390{
391 util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, Cmper textBlockId) const;
392
393public:
395 explicit SmartShapeCustomLine(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
396 : OthersBase(document, partId, shareMode, cmper) {}
397
400 enum class LineStyle { Char, Solid, Dashed };
401
404 enum class LineCapType { None, Hook, ArrowheadPreset, ArrowheadCustom };
405
408 {
409 public:
411 explicit CharParams(const MusxInstance<Base>& parent)
412 : ContainedClassBase(parent), font(std::make_shared<FontInfo>(parent->getDocument()))
413 {
414 }
415
416 char32_t lineChar{};
417 std::shared_ptr<FontInfo> font;
419
421 };
422
433
445
447 std::shared_ptr<CharParams> charParams;
448 std::shared_ptr<SolidParams> solidParams;
449 std::shared_ptr<DashedParams> dashedParams;
450
455
456 bool makeHorz{};
460
466
477
483
486
492 { return getRawTextCtx(forPartId, leftStartRawTextId); }
493
499 { return getRawTextCtx(forPartId, leftContRawTextId); }
500
506 { return getRawTextCtx(forPartId, rightEndRawTextId); }
507
513 { return getRawTextCtx(forPartId, centerFullRawTextId); }
514
520 { return getRawTextCtx(forPartId, centerAbbrRawTextId); }
521
522 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
523 {
525
526 if (lineStyle == LineStyle::Char && !charParams)
527 charParams = std::make_shared<CharParams>(ptrToThis);
528
529 if (lineStyle == LineStyle::Solid && !solidParams)
530 solidParams = std::make_shared<SolidParams>(ptrToThis);
531
532 if (lineStyle == LineStyle::Dashed && !dashedParams)
533 dashedParams = std::make_shared<DashedParams>(ptrToThis);
534 }
535
536 constexpr static std::string_view XmlNodeName = "ssLineStyle";
538};
539
552{
553public:
555 explicit SmartShapeMeasureAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
556 : OthersBase(document, partId, shareMode, cmper, inci)
557 {
558 }
559
563
564 constexpr static std::string_view XmlNodeName = "smartShapeMeasMark";
566};
567
568} // namespace others
569
570namespace details {
571
588{
589public:
590
599 explicit CenterShape(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper shapeNum, Cmper centerShapeNum)
600 : DetailsBase(document, partId, shareMode, shapeNum, centerShapeNum)
601 {}
602
603 std::shared_ptr<smartshape::EndPointAdjustment> startBreakAdj;
604 std::shared_ptr<smartshape::EndPointAdjustment> endBreakAdj;
605 std::shared_ptr<smartshape::ControlPointAdjustment> ctlPtAdj;
606
607 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
608 {
609 if (!startBreakAdj) {
610 startBreakAdj = std::make_shared<smartshape::EndPointAdjustment>(ptrToThis);
611 }
612 if (!endBreakAdj) {
613 endBreakAdj = std::make_shared<smartshape::EndPointAdjustment>(ptrToThis);
614 }
615 if (!ctlPtAdj) {
616 ctlPtAdj = std::make_shared<smartshape::ControlPointAdjustment>(ptrToThis);
617 }
618 }
619
620 constexpr static std::string_view XmlNodeName = "centerShape";
622};
623
631{
632public:
634 explicit SmartShapeEntryAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
635 : EntryDetailsBase(document, partId, shareMode, entnum, inci)
636 {
637 }
638
640
641 constexpr static std::string_view XmlNodeName = "smartShapeEntryMark";
643};
644
645} // namespace details
646
647} // namespace dom
648} // namespace musx
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition BaseClasses.h:108
virtual void integrityCheck(const std::shared_ptr< Base > &ptrToThis)
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition BaseClasses.h:154
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:91
Base class for classes that are contained by other classes.
Definition BaseClasses.h:224
ContainedClassBase(const MusxInstance< Base > &parent)
Constructs a ContainedClassBase object.
Definition BaseClasses.h:233
MusxInstance< ParentClass > getParent() const
Get the parent.
Definition BaseClasses.h:239
Base class for all "details" types.
Definition BaseClasses.h:407
Base class for all "details" types that use entnum rather than cmper and cmper.
Definition BaseClasses.h:479
Wraps a frame of shared_ptr<const EntryInfo> and an index for per entry access. This class manages ow...
Definition Entries.h:388
Represents the default font settings for a particular element type.
Definition CommonClasses.h:124
Base class for all "others" types.
Definition BaseClasses.h:283
Represents a center shape for a others::SmartShape that spans three or more measures.
Definition SmartShape.h:588
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition SmartShape.h:620
std::shared_ptr< smartshape::ControlPointAdjustment > ctlPtAdj
Manual adjustments made to this center shape.
Definition SmartShape.h:605
std::shared_ptr< smartshape::EndPointAdjustment > endBreakAdj
Adjustment at the end break (xml: <endBreakAdj>)
Definition SmartShape.h:604
CenterShape(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper shapeNum, Cmper centerShapeNum)
Constructor.
Definition SmartShape.h:599
std::shared_ptr< smartshape::EndPointAdjustment > startBreakAdj
Adjustment at the start break (xml: <startBreakAdj>)
Definition SmartShape.h:603
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 ...
Definition SmartShape.h:607
static const xml::XmlElementArray< CenterShape > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Assigns a smart shape to an entry.
Definition SmartShape.h:631
Cmper shapeNum
The Cmper of the others::SmartShape that is being assigned.
Definition SmartShape.h:639
SmartShapeEntryAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition SmartShape.h:634
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:641
Hold parameters for LineStyle::Char.
Definition SmartShape.h:408
static const xml::XmlElementArray< CharParams > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
char32_t lineChar
The character to use for the line.
Definition SmartShape.h:416
CharParams(const MusxInstance< Base > &parent)
Constructor function.
Definition SmartShape.h:411
std::shared_ptr< FontInfo > font
<fontID>, <fontSize>, <fontEfx>
Definition SmartShape.h:417
int baselineShiftEms
The UI says the units are "EMs", but it may be 1/100 EMs.
Definition SmartShape.h:418
Hold parameters for LineStyle::Dashed.
Definition SmartShape.h:435
Efix dashOff
Length of gap between dashes.
Definition SmartShape.h:441
Efix dashOn
Dash length.
Definition SmartShape.h:440
Efix lineWidth
Dashed line width.
Definition SmartShape.h:439
static const xml::XmlElementArray< DashedParams > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Hold parameters for LineStyle::Solid.
Definition SmartShape.h:425
Efix lineWidth
Solid line width.
Definition SmartShape.h:429
static const xml::XmlElementArray< SolidParams > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a Finale smart shape custom line style.
Definition SmartShape.h:390
Evpu leftContX
Left continuation position X.
Definition SmartShape.h:469
Evpu rightEndX
Right end position X.
Definition SmartShape.h:471
bool lineBeforeRightEndText
Line adjustments "Right H: Before Text".
Definition SmartShape.h:458
Evpu leftStartX
Left start position X.
Definition SmartShape.h:467
SmartShapeCustomLine(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition SmartShape.h:395
LineCapType lineCapEndType
Line cap end type.
Definition SmartShape.h:452
util::EnigmaParsingContext getLeftContRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing the left-continuation text, or nullptr if none.
Definition SmartShape.h:498
Evpu centerFullY
Center full position Y.
Definition SmartShape.h:474
Efix lineCapStartHookLength
Length of start hook (if lineStyle is Hook)
Definition SmartShape.h:484
Cmper centerFullRawTextId
Cmper of texts::SmartShapeText. xml node is <centerFullRawTextID>
Definition SmartShape.h:464
Evpu centerAbbrY
Center abbreviation position Y.
Definition SmartShape.h:476
static const xml::XmlElementArray< SmartShapeCustomLine > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Efix lineCapEndHookLength
Length of end hook (if lineStyle is Hook)
Definition SmartShape.h:485
util::EnigmaParsingContext getCenterFullRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing the center-full text, or nullptr if none.
Definition SmartShape.h:512
Cmper leftStartRawTextId
Cmper of texts::SmartShapeText. xml node is <leftStartRawTextID>
Definition SmartShape.h:461
Evpu lineEndX
Line adjustments "End H" value.
Definition SmartShape.h:480
Evpu rightEndY
Right end position Y.
Definition SmartShape.h:472
Evpu lineEndY
Line adjustments "Start H" value.
Definition SmartShape.h:481
util::EnigmaParsingContext getRightEndRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing the right-end text, or nullptr if none.
Definition SmartShape.h:505
std::shared_ptr< CharParams > charParams
Parameters for char line style. Only allocated if lineStyle is LineStyle::Char.
Definition SmartShape.h:447
std::shared_ptr< DashedParams > dashedParams
Parameters for dashed line style. Only allocated if lineStyle is LineStyle::Dashed.
Definition SmartShape.h:449
LineStyle lineStyle
Line style.
Definition SmartShape.h:446
Evpu centerAbbrX
Center abbreviation position X.
Definition SmartShape.h:475
bool lineAfterLeftContText
Line adjustments "Cont H: After Text".
Definition SmartShape.h:459
Evpu leftContY
Left continuation position Y.
Definition SmartShape.h:470
Cmper lineCapStartArrowId
Cmper of start arrowhead (preset or cmper of custom ShapeDef). xml node is <lineCapStartArrowID>
Definition SmartShape.h:453
bool lineAfterLeftStartText
Line adjustments "Start H: After Text".
Definition SmartShape.h:457
Evpu lineContX
Line adjustments "V" value (Finale syncs this with lineStartY.)
Definition SmartShape.h:482
Cmper rightEndRawTextId
Cmper of texts::SmartShapeText. xml node is <rightEndRawTextID>
Definition SmartShape.h:463
Evpu leftStartY
Left start position Y.
Definition SmartShape.h:468
bool makeHorz
"Horizontal"
Definition SmartShape.h:456
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 ...
Definition SmartShape.h:522
Cmper centerAbbrRawTextId
Cmper of texts::SmartShapeText. xml node is <centerAbbrRawTextID>
Definition SmartShape.h:465
Cmper leftContRawTextId
Cmper of texts::SmartShapeText. xml node is <leftContRawTextID>
Definition SmartShape.h:462
util::EnigmaParsingContext getCenterAbbrRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing the center-abbreviated text, or nullptr if none.
Definition SmartShape.h:519
util::EnigmaParsingContext getLeftStartRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing the left-start, or nullptr if none.
Definition SmartShape.h:491
LineStyle
The type of line style.
Definition SmartShape.h:400
std::shared_ptr< SolidParams > solidParams
Parameters for solid line style. Only allocated if lineStyle is LineStyle::Solid.
Definition SmartShape.h:448
Cmper lineCapEndArrowId
Cmper of end arrowhead (preset or cmper of custom ShapeDef). xml node is <lineCapStartArrowID>
Definition SmartShape.h:454
LineCapType
The type of line cap.
Definition SmartShape.h:404
Evpu lineStartX
Line adjustments "Start H" value.
Definition SmartShape.h:478
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition SmartShape.h:536
Evpu centerFullX
Center full position X.
Definition SmartShape.h:473
Evpu lineStartY
Line adjustments "V" value (Finale syncs this with lineEndY.)
Definition SmartShape.h:479
LineCapType lineCapStartType
Line cap start type.
Definition SmartShape.h:451
Assigns a smart shape or center shape to a measure.
Definition SmartShape.h:552
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:564
SmartShapeMeasureAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition SmartShape.h:555
Cmper shapeNum
The Cmper of the SmartShape that is being assigned.
Definition SmartShape.h:560
Cmper centerShapeNum
Definition SmartShape.h:561
Represents the termination segment of the smart shape.
Definition SmartShape.h:191
std::shared_ptr< smartshape::ControlPointAdjustment > ctlPtAdj
Manual adjustments for the shape at this endpoint.
Definition SmartShape.h:197
static const xml::XmlElementArray< TerminationSeg > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< smartshape::EndPoint > endPoint
Endpoint information.
Definition SmartShape.h:195
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 ...
Definition SmartShape.h:201
std::shared_ptr< smartshape::EndPointAdjustment > endPointAdj
Endpoint adjustment information.
Definition SmartShape.h:196
std::shared_ptr< smartshape::EndPointAdjustment > breakAdj
Definition SmartShape.h:198
Represents a Finale smart shape.
Definition SmartShape.h:181
SlurAvoidAccidentalsState
The selection whether this shape avoids accidentals. (Only applicable for slurs.)
Definition SmartShape.h:295
@ Invalid
May not be used, but exists as a possibility in the Finale app.
SmartShape(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition SmartShape.h:184
Cmper lineStyleId
If non-zero, the SmartShapeCustomLine for this shape. Several ShapeType values use it....
Definition SmartShape.h:345
bool entryBased
Whether the shape is entry-based.
Definition SmartShape.h:330
NoteNumber startNoteId
If non-zero, the specific note with the entry that this shape starts from. (xml node is <startNoteID>...
Definition SmartShape.h:343
SystemBreakType
How this shape breaks across systems. Represents the choice between "Make Horizontal Over System Brea...
Definition SmartShape.h:310
@ Same
System break honors makeHorz setting over a system break. (Default)
LyricTextType endLyricType
Definition SmartShape.h:352
LyricTextType
The lyric text type if this is a lyrics smart shape.
Definition SmartShape.h:322
@ None
The default, for when there is no lyrics text block.
@ Verse
The assignment is to a Verse lyrics text block.
@ Chorus
The assignment is to a Chorus lyrics text block.
@ Section
The assignment is to a Section lyrics text block.
EngraverSlurState
The selection for engraver slurs. (Only applicable for slurs.)
Definition SmartShape.h:284
@ Auto
Take the engraver slur setting from options::SmartShapeOptions::useEngraverSlurs. (Default value....
@ Off
Do not use engraver slur behaviour.
bool calcAppliesTo(const EntryInfoPtr &entryInfo) const
Calculates if the smart shape applies to the specified entry.
Definition SmartShape.cpp:155
Cmper startLyricNum
The text block of the lyrics text if this is a word extension or hyphen smart shape.
Definition SmartShape.h:346
std::shared_ptr< TerminationSeg > endTermSeg
End termination segment.
Definition SmartShape.h:340
NoteNumber endNoteId
If non-zero, the specific note with the entry that this shape ends on. (xml node is <endNoteID>)
Definition SmartShape.h:344
bool makeVert
This option has no obvious setting in the Finale U.I. A plugin could perhaps set it,...
Definition SmartShape.h:335
bool hidden
Inverse of "Show" option.
Definition SmartShape.h:342
EngraverSlurState engraverSlurState
The engraver slur setting if this is a slur.
Definition SmartShape.h:336
ShapeType
All the smart shape types supported by Finale.
Definition SmartShape.h:234
@ 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")
@ 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.
@ DashContourSlurAuto
Contoured line dashed slur with direction automatically determined.
@ 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.
bool makeHorz
"Make Horizontal"
Definition SmartShape.h:333
SystemBreakType yBreakType
Whether a system break should honor makeHorz or do its opposite.
Definition SmartShape.h:338
Cmper endLyricNum
Definition SmartShape.h:347
SlurAvoidAccidentalsState slurAvoidAcciState
The avoid accidentals settings if this is a slur.
Definition SmartShape.h:337
bool noPresetShape
Legacy flag that may no longer be used.
Definition SmartShape.h:332
static const xml::XmlElementArray< SmartShape > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool noPushEndStart
Legacy flag that should always be false in modern files going back to at least Finale 2000.
Definition SmartShape.h:334
bool rotate
Purpose unknown: always set for slurs.
Definition SmartShape.h:331
static constexpr std::string_view XmlNodeName
XML node name.
Definition SmartShape.h:379
std::shared_ptr< smartshape::ControlPointAdjustment > fullCtlPtAdj
If the shape is only on one staff system, this is where the manual edits are.
Definition SmartShape.h:341
std::shared_ptr< TerminationSeg > startTermSeg
Start termination segment.
Definition SmartShape.h:339
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 ...
Definition SmartShape.h:362
LyricTextType startLyricType
The type of lyrics block for startLyricNum. (xml node is <startLyricTag>)
Definition SmartShape.h:351
ShapeType shapeType
Type of smart shape.
Definition SmartShape.h:329
Represents the manual adjustments to a smart shape.
Definition SmartShape.h:100
DirectionType contextDir
The direction type for this adjustment.
Definition SmartShape.h:109
Evpu startCtlPtY
Vertical offset of the start control point.
Definition SmartShape.h:105
Evpu endCtlPtY
Vertical offset of the end control point.
Definition SmartShape.h:107
Evpu startCtlPtX
Horizontal offset of the start control point.
Definition SmartShape.h:104
static const xml::XmlElementArray< ControlPointAdjustment > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu endCtlPtX
Horizontal offset of the end control point.
Definition SmartShape.h:106
bool active
If true, this adjustment should be used when it is applicable.
Definition SmartShape.h:108
Represents the endpoint adjustment of a smart shape or center shape.
Definition SmartShape.h:157
EntryConnectionType contextEntCnct
The entry conntection type for this adjustment.
Definition SmartShape.h:165
bool active
If true, this adjustment should be used when it is applicable (xml node is <on>)
Definition SmartShape.h:163
static const xml::XmlElementArray< EndPointAdjustment > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu horzOffset
Horizontal offset (xml node is <x>)
Definition SmartShape.h:161
Evpu vertOffset
Vertical offset (xml node is <y>)
Definition SmartShape.h:162
DirectionType contextDir
The direction type for this adjustment.
Definition SmartShape.h:164
Represents an endpoint of the smart shape.
Definition SmartShape.h:118
util::Fraction calcGlobalPosition() const
Calculates the global position of the endpoint within its measure, based on whether it is measure- or...
Definition SmartShape.cpp:132
Edu eduPosition
Edu position of endpoint (xml node is <edu>)
Definition SmartShape.h:124
bool calcIsAssigned() const
Return true if this endpoint is properly assigned to its measure and to its entry (for entry-attached...
Definition SmartShape.cpp:106
util::Fraction calcPosition() const
Calculates the staff-level position of the endpoint within its measure, based on whether it is measur...
Definition SmartShape.cpp:117
EntryNumber entryNumber
Entry number. Zero if the endpoint is not entry-attached. (xml node is <entryNum>)
Definition SmartShape.h:125
MusxInstance< details::SmartShapeEntryAssign > getEntryAssignment() const
Gets the entry assignment for this endpoint or null if none. Always null for measure-assigned endpoin...
Definition SmartShape.cpp:84
static const xml::XmlElementArray< EndPoint > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MusxInstance< others::SmartShapeMeasureAssign > getMeasureAssignment() const
Gets the measure assignment for this endpoint or null if none.
Definition SmartShape.cpp:65
EntryInfoPtr calcAssociatedEntry(Cmper forPartId, bool findExact=true) const
Calculates the entry associated with the endpoint.
Definition SmartShape.cpp:35
MeasCmper measId
Measure ID (xml node is <meas>)
Definition SmartShape.h:123
StaffCmper staffId
Staff ID (xml node is <inst>)
Definition SmartShape.h:122
Wrapper class for interpreting and rendering Enigma-style strings with insert handling.
Definition EnigmaString.h:423
A class to represent fractions with integer m_numerator and m_denominator, automatically reduced to s...
Definition Fraction.h:38
@ 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
std::shared_ptr< const T > MusxInstance
Defines the type of a musx instance stored in a pool.
Definition MusxInstance.h:35
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:57
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:69
uint16_t NoteNumber
Note identifier.
Definition Fundamentals.h:70
int16_t StaffCmper
Enigma staff (staffId) Cmper (may be negative when not applicable)
Definition Fundamentals.h:65
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:127
object model for musx file (enigmaxml)
Definition BaseClasses.h:36