Verovio
Source code documentation
vrvdef.h
1 // Name: vrvdef.h
3 // Author: Laurent Pugin
4 // Created: 2005
5 // Copyright (c) Authors and others. All rights reserved.
7 
8 #ifndef __VRV_DEF_H__
9 #define __VRV_DEF_H__
10 
11 #include <algorithm>
12 #include <functional>
13 #include <list>
14 #include <map>
15 #include <set>
16 #include <tuple>
17 #include <vector>
18 
19 //----------------------------------------------------------------------------
20 
21 #include "attdef.h"
22 
23 #define VRV_UNSET MEI_UNSET
24 
25 //----------------------------------------------------------------------------
26 
27 #define _USE_MATH_DEFINES // needed by Windows for math constants like "M_PI"
28 #include <math.h>
29 
30 // In case it is not defined before...
31 #ifndef M_PI
32 #define M_PI (3.14159265358979323846264338327950288)
33 #endif
34 
35 namespace vrv {
36 
37 //----------------------------------------------------------------------------
38 // Version
39 //----------------------------------------------------------------------------
40 
41 #define VERSION_MAJOR 6
42 #define VERSION_MINOR 4
43 #define VERSION_REVISION 0
44 // Adds "-dev" in the version number - should be set to false for releases
45 #define VERSION_DEV true
46 
47 //----------------------------------------------------------------------------
48 // Resource directory
49 //----------------------------------------------------------------------------
50 #ifdef RESOURCE_DIR
51 #define VRV_RESOURCE_DIR RESOURCE_DIR
52 #else
53 #define VRV_RESOURCE_DIR "/usr/local/share/verovio"
54 #endif
55 
56 //----------------------------------------------------------------------------
57 // Cast redefinition
58 //----------------------------------------------------------------------------
59 
60 // Can be changed between static and dynamic for debug purposes
61 #ifdef VRV_DYNAMIC_CAST
62 // To be used for all cases where type is cheched through Object::m_type
63 #define vrv_cast dynamic_cast
64 #else
65 #define vrv_cast static_cast
66 #endif
67 
68 //----------------------------------------------------------------------------
69 // Default MIDI values
70 //----------------------------------------------------------------------------
71 
72 #define MIDI_VELOCITY 90
73 #define MIDI_TEMPO 120
74 
75 #define UNACC_GRACENOTE_DUR 27 // in milliseconds
76 #define UNACC_GRACENOTE_FRACTION Fraction(1, 2048)
77 
78 //----------------------------------------------------------------------------
79 // Object defines
80 //----------------------------------------------------------------------------
81 
89 enum ClassId : uint16_t {
90  BOUNDING_BOX = 0, // Should not be instanciated as is
91  OBJECT, // Should not be instanciated as is
92  DEVICE_CONTEXT, // Should not be instanciated as is,
93  FLOATING_OBJECT,
94  FLOATING_POSITIONER,
95  FLOATING_CURVE_POSITIONER,
96  // Ids for ungrouped objects
97  ACCID_FLOATING,
98  ALIGNMENT,
99  ALIGNMENT_REFERENCE,
100  CLEF_ATTR,
101  COURSE,
102  DOC,
103  FACSIMILE,
104  FB,
105  GRPSYM,
106  GRACE_ALIGNER,
107  GRAPHIC,
108  INSTRDEF,
109  KEYSIG_ATTR,
110  LABEL,
111  LABELABBR,
112  LAYER,
113  MEASURE,
114  MEASURE_ALIGNER,
115  MENSUR_ATTR,
116  METERSIG_ATTR,
117  OSSIA,
118  PAGE,
119  PAGES,
120  STAFF,
121  STAFF_ALIGNMENT,
122  STAFFGRP,
123  SURFACE,
124  SVG,
125  SYMBOLDEF,
126  SYMBOLTABLE,
127  SYSTEM,
128  SYSTEM_ALIGNER,
129  SYSTEM_ALIGNMENT,
130  TIMESTAMP_ALIGNER,
131  TUNING,
132  ZONE,
133  // Ids for EditorialElement child classes
134  EDITORIAL_ELEMENT,
135  ABBR,
136  ADD,
137  ANNOT,
138  APP,
139  CHOICE,
140  CORR,
141  DAMAGE,
142  DEL,
143  EXPAN,
144  LEM,
145  ORIG,
146  RDG,
147  REF,
148  REG,
149  RESTORE,
150  SIC,
151  SUBST,
152  SUPPLIED,
153  UNCLEAR,
154  EDITORIAL_ELEMENT_max,
155  // Ids for TextLayoutElement child classes
156  TEXT_LAYOUT_ELEMENT,
157  DIV,
158  // Ids for RunningElement child classes
159  RUNNING_ELEMENT,
160  PGFOOT,
161  PGHEAD,
162  RUNNING_ELEMENT_max,
163  TEXT_LAYOUT_ELEMENT_max,
164  // Ids for PageElement child classes
165  PAGE_ELEMENT,
166  PAGE_MILESTONE_END,
167  MDIV,
168  PARTS,
169  SCORE_OR_PART_ELEMENT,
170  SCORE,
171  PART,
172  SCORE_OR_PART_ELEMENT_max,
173  PAGE_ELEMENT_max,
174  // Ids for SystemElement child classes
175  SYSTEM_ELEMENT,
176  SYSTEM_MILESTONE_END,
177  ENDING,
178  EXPANSION,
179  PB,
180  SB,
181  SECTION,
182  SYSTEM_ELEMENT_max,
183  // Ids for ControlElement child classes
184  CONTROL_ELEMENT,
185  ANCHOREDTEXT,
186  ANNOTSCORE,
187  ARPEG,
188  BEAMSPAN,
189  BRACKETSPAN,
190  BREATH,
191  CAESURA,
192  CPMARK,
193  DIR,
194  DYNAM,
195  FERMATA,
196  FING,
197  GLISS,
198  HAIRPIN,
199  HARM,
200  LV,
201  MORDENT,
202  MNUM,
203  ORNAM,
204  OCTAVE,
205  PEDAL,
206  PHRASE,
207  PITCHINFLECTION,
208  REH,
209  REPEATMARK,
210  SLUR,
211  TEMPO,
212  TIE,
213  TRILL,
214  TURN,
215  CONTROL_ELEMENT_max,
216  // Ids for LayerElement child classes
217  LAYER_ELEMENT,
218  ACCID,
219  ARTIC,
220  BARLINE,
221  BEAM,
222  BEATRPT,
223  BTREM,
224  CHORD,
225  CLEF,
226  CUSTOS,
227  DIVLINE,
228  DOT,
229  DOTS,
230  EPISEMA,
231  FLAG,
232  FTREM,
233  GENERIC_ELEMENT,
234  GRACEGRP,
235  HALFMRPT,
236  KEYSIG,
237  KEYACCID,
238  LIGATURE,
239  LIQUESCENT,
240  MENSUR,
241  METERSIG,
242  METERSIGGRP,
243  MREST,
244  MRPT,
245  MRPT2,
246  MSPACE,
247  MULTIREST,
248  MULTIRPT,
249  NC,
250  NOTE,
251  NEUME,
252  ORISCUS,
253  PLICA,
254  PROPORT,
255  QUILISMA,
256  STROPHICUS,
257  REST,
258  SPACE,
259  STEM,
260  SYL,
261  SYLLABLE,
262  TABGRP,
263  TABDURSYM,
264  TIMESTAMP_ATTR,
265  TUPLET,
266  TUPLET_BRACKET,
267  TUPLET_NUM,
268  VOLTA,
269  LYRIC_ELEMENT,
270  VERSE,
271  REFRAIN,
272  LYRIC_ELEMENT_max,
273  LAYER_ELEMENT_max,
274  // Ids for ScoreDefElement child classes
275  SCOREDEF_ELEMENT,
276  LAYERDEF,
277  SCOREDEF,
278  STAFFDEF,
279  SCOREDEF_ELEMENT_max,
280  // Ids for TextElement child classes
281  TEXT_ELEMENT,
282  FIG,
283  FIGURE,
284  LB,
285  NUM,
286  REND,
287  SYMBOL,
288  TEXT,
289  TEXT_ELEMENT_max,
290  //
291  BBOX_DEVICE_CONTEXT,
292  SVG_DEVICE_CONTEXT,
293  CUSTOM_DEVICE_CONTEXT,
294  // Pseudo ids for custom factory functions
295  FACTORY_STAGEDIR,
296  FACTORY_OSTAFF,
297  //
298  UNSPECIFIED
299 };
300 
305 enum InterfaceId {
306  INTERFACE,
307  INTERFACE_ALT_SYM,
308  INTERFACE_AREA_POS,
309  INTERFACE_BOUNDARY,
310  INTERFACE_DURATION,
311  INTERFACE_LINKING,
312  INTERFACE_FACSIMILE,
313  INTERFACE_OFFSET,
314  INTERFACE_OFFSET_SPANNING,
315  INTERFACE_PITCH,
316  INTERFACE_PLIST,
317  INTERFACE_POSITION,
318  INTERFACE_SCOREDEF,
319  INTERFACE_TEXT_DIR,
320  INTERFACE_TIME_POINT,
321  INTERFACE_TIME_SPANNING
322 };
323 
324 //----------------------------------------------------------------------------
325 // Typedefs
326 //----------------------------------------------------------------------------
327 
328 class Alignment;
329 class Arpeg;
330 class ClassIdComparison;
331 class BeamElementCoord;
332 class BoundingBox;
333 class Comparison;
334 class CurveSpannedElement;
335 class DivLine;
336 class FloatingPositioner;
337 class FloatingCurvePositioner;
338 class GraceAligner;
339 class InterfaceComparison;
340 class LayerElement;
341 class LedgerLine;
342 class LinkingInterface;
343 class Liquescent;
344 class Nc;
345 class Note;
346 class Neume;
347 class Object;
348 class PlistInterface;
349 class Point;
350 class Staff;
351 class Option;
352 class TextElement;
353 class TimePointInterface;
354 class TimeSpanningInterface;
355 
356 typedef std::vector<Object *> ArrayOfObjects;
357 
358 typedef std::vector<const Object *> ArrayOfConstObjects;
359 
360 typedef std::list<Object *> ListOfObjects;
361 
362 typedef std::list<const Object *> ListOfConstObjects;
363 
364 typedef std::set<Object *> SetOfObjects;
365 
366 typedef std::set<const Object *> SetOfConstObjects;
367 
368 typedef std::set<const Object *> SetOfConstObjects;
369 
370 typedef std::vector<Note *> ChordNoteGroup;
371 
372 typedef std::vector<std::tuple<Alignment *, Alignment *, int>> ArrayOfAdjustmentTuples;
373 
374 typedef std::vector<std::tuple<Alignment *, Arpeg *, int, bool>> ArrayOfAlignmentArpegTuples;
375 
376 typedef std::vector<BeamElementCoord *> ArrayOfBeamElementCoords;
377 
378 typedef std::vector<std::pair<int, int>> ArrayOfIntPairs;
379 
380 typedef std::multimap<std::string, LinkingInterface *> MapOfLinkingInterfaceIDPairs;
381 
382 typedef std::map<std::string, Note *> MapOfNoteIDPairs;
383 
384 typedef std::vector<std::pair<Object *, std::string>> ArrayOfPlistObjectIDPairs;
385 
386 typedef std::vector<CurveSpannedElement *> ArrayOfCurveSpannedElements;
387 
388 typedef std::list<std::pair<Object *, data_MEASUREBEAT>> ListOfObjectBeatPairs;
389 
390 typedef std::list<std::pair<const Object *, std::string>> ListOfObjectAttNamePairs;
391 
392 typedef std::list<std::pair<TimePointInterface *, ClassId>> ListOfPointingInterClassIdPairs;
393 
394 typedef std::list<std::pair<TimeSpanningInterface *, ClassId>> ListOfSpanningInterClassIdPairs;
395 
396 typedef std::list<std::pair<TimeSpanningInterface *, Object *>> ListOfSpanningInterOwnerPairs;
397 
398 typedef std::vector<FloatingPositioner *> ArrayOfFloatingPositioners;
399 
400 typedef std::vector<FloatingCurvePositioner *> ArrayOfFloatingCurvePositioners;
401 
402 typedef std::vector<BoundingBox *> ArrayOfBoundingBoxes;
403 
404 typedef std::vector<LedgerLine> ArrayOfLedgerLines;
405 
406 typedef std::vector<TextElement *> ArrayOfTextElements;
407 
408 typedef std::map<const Staff *, std::multiset<int>> MapOfNoteLocs;
409 
410 typedef std::map<const Staff *, std::set<int>> MapOfDotLocs;
411 
412 typedef std::map<std::string, Option *> MapOfStrOptions;
413 
414 typedef std::map<int, data_ACCIDENTAL_WRITTEN> MapOfOctavedPitchAccid;
415 
416 typedef std::map<int, GraceAligner *> MapOfIntGraceAligners;
417 
418 typedef std::vector<std::pair<std::u32string, bool>> ArrayOfStringDynamTypePairs;
419 
420 typedef std::map<ClassId, std::function<Object *(void)>> MapOfClassIdConstructors;
421 
422 typedef std::map<std::string, ClassId> MapOfStrClassIds;
423 
424 typedef std::vector<std::pair<LayerElement *, LayerElement *>> MeasureTieEndpoints;
425 
426 typedef bool (*NotePredicate)(const Note *);
427 
428 typedef std::vector<std::pair<LayerElement *, data_DURATION>> ArrayOfElementDurPairs;
429 
430 typedef std::map<int, std::list<int>> MapOfOssiaStaffNs;
431 
441 struct IntTree {
442  std::map<int, IntTree> child;
443 };
444 
445 typedef std::map<int, IntTree> IntTree_t;
446 
453 typedef std::map<int, bool> VerseN_t;
454 typedef std::map<int, VerseN_t> LayerN_VerserN_t;
455 typedef std::map<int, LayerN_VerserN_t> StaffN_LayerN_VerseN_t;
456 
457 //----------------------------------------------------------------------------
458 // Global defines
459 //----------------------------------------------------------------------------
460 
461 #define DEFINITION_FACTOR 10
462 
463 #define DEFAULT_UNIT 9.0
464 
465 #define isIn(x, a, b) (((x) >= std::min((a), (b))) && ((x) <= std::max((a), (b))))
466 
473 enum FunctorCode { FUNCTOR_CONTINUE = 0, FUNCTOR_SIBLINGS, FUNCTOR_STOP };
474 
475 //----------------------------------------------------------------------------
476 // Maximum number of levels between parent and children for optimizing search
477 //----------------------------------------------------------------------------
478 
482 #define MAX_ACCID_DEPTH -1
483 
485 #define MAX_BEAM_DEPTH -1
486 
488 #define MAX_CHORD_DEPTH -1
489 
491 #define MAX_FTREM_DEPTH -1
492 
494 #define MAX_LIGATURE_DEPTH -1
495 
497 #define MAX_TABGRP_DEPTH -1
498 
500 #define MAX_TUPLET_DEPTH -1
501 
503 #define MAX_STAFFGRP_DEPTH -1
504 
506 #define MAX_NOTE_DEPTH -1
507 
508 //----------------------------------------------------------------------------
509 // Ossia staff / layer @n offset (assuming we never have @n that high)
510 //----------------------------------------------------------------------------
511 
512 #define OSSIA_N_OFFSET 1000000
513 
514 //----------------------------------------------------------------------------
515 // Unicode music codepoints
516 //----------------------------------------------------------------------------
517 
518 #define UNICODE_FLAT U'\u266D' // ♭
519 #define UNICODE_NATURAL U'\u266E' // ♮
520 #define UNICODE_SHARP U'\u266F' // ♯
521 
522 #define UNICODE_UNDERTIE U'\u203F' // ‿
523 
524 #define UNICODE_DAL_SEGNO U'\U0001D109' // 𝄉
525 #define UNICODE_DA_CAPO U'\U0001D10A' // 𝄊
526 #define UNICODE_SEGNO U'\U0001D10B' // 𝄋
527 #define UNICODE_CODA U'\U0001D10C' // 𝄌
528 
529 #define UNICODE_DOUBLE_FLAT U'\U0001D12B' // 𝄫
530 #define UNICODE_DOUBLE_SHARP U'\U0001D12A' // 𝄪
531 
532 //----------------------------------------------------------------------------
533 // VerovioText codepoints
534 //----------------------------------------------------------------------------
535 
544 #define VRV_TEXT_HARM \
545  U"\u266D\u266E\u266F" \
546  U"\uE260\uE261\uE262\uE263\uE264" \
547  U"\uEA50\uEA51\uEA52\uEA53\uEA54\uEA55\uEA56\uEA57\uEA58\uEA59\uEA5A\uEA5B\uEA5C\uEA5D\uEA5E" \
548  U"\uEA5F\uEA60\uEA61\uEA62\uEA63\uEA64\uEA65\uEA66\uEA67" \
549  U"\uECC0"
550 
551 //----------------------------------------------------------------------------
552 // data.LINEWIDTHTERM factors
553 //----------------------------------------------------------------------------
554 
555 #define LINEWIDTHTERM_factor_narrow 1.0
556 #define LINEWIDTHTERM_factor_medium 2.0
557 #define LINEWIDTHTERM_factor_wide 4.0
558 
559 //----------------------------------------------------------------------------
560 // Types for editorial element
561 //----------------------------------------------------------------------------
562 
563 // the maximum is 255 (unsigned char)
564 enum EditorialLevel {
565  EDITORIAL_UNDEFINED = 0,
566  EDITORIAL_SCORE,
567  EDITORIAL_TOPLEVEL,
568  EDITORIAL_SCOREDEF,
569  EDITORIAL_STAFFGRP,
570  EDITORIAL_MEASURE,
571  EDITORIAL_STAFF,
572  EDITORIAL_LAYER,
573  EDITORIAL_NOTE,
574  EDITORIAL_TEXT,
575  EDITORIAL_FB,
576  EDITORIAL_RUNNING,
577 };
578 
579 //----------------------------------------------------------------------------
580 // Visibility for editorial and mdiv elements
581 //----------------------------------------------------------------------------
582 
583 enum VisibilityType { Hidden = 0, Visible };
584 
585 //----------------------------------------------------------------------------
586 // The used SMuFL glyph anchors
587 //----------------------------------------------------------------------------
588 
589 enum SMuFLGlyphAnchor {
590  SMUFL_stemDownNW = 0,
591  SMUFL_stemUpSE,
592  SMUFL_cutOutNE,
593  SMUFL_cutOutNW,
594  SMUFL_cutOutSE,
595  SMUFL_cutOutSW
596 };
597 
598 //----------------------------------------------------------------------------
599 // Spanning types for control events
600 //----------------------------------------------------------------------------
601 
602 enum { SPANNING_START_END = 0, SPANNING_START, SPANNING_END, SPANNING_MIDDLE };
603 
604 //----------------------------------------------------------------------------
605 // Types for layer element
606 //----------------------------------------------------------------------------
607 
613 enum ElementScoreDefRole {
614  SCOREDEF_NONE = 0,
615  SCOREDEF_SYSTEM,
616  SCOREDEF_INTERMEDIATE,
617  SCOREDEF_CAUTIONARY,
618  SCOREDEF_OSSIA
619 };
620 
621 //----------------------------------------------------------------------------
622 // ScoreDef drawing labels
623 //----------------------------------------------------------------------------
624 
625 enum ScoreDefDrawingLabels { DRAWING_LABEL_FULL = 0, DRAWING_LABEL_ABBR, DRAWING_LABEL_NONE };
626 
627 //----------------------------------------------------------------------------
628 // Artic types
629 //----------------------------------------------------------------------------
630 
631 enum ArticType { ARTIC_INSIDE = 0, ARTIC_OUTSIDE };
632 
633 //----------------------------------------------------------------------------
634 // Visibility optimization
635 //----------------------------------------------------------------------------
636 
637 enum VisibilityOptimization { OPTIMIZATION_NONE = 0, OPTIMIZATION_HIDDEN, OPTIMIZATION_SHOW };
638 
639 //----------------------------------------------------------------------------
640 // Layout positions (3 x 3 grid)
641 //----------------------------------------------------------------------------
642 
643 enum {
644  POSITION_LEFT = 0,
645  POSITION_CENTER,
646  POSITION_RIGHT,
647 };
648 
649 enum {
650  POSITION_TOP = 0,
651  POSITION_MIDDLE = 3,
652  POSITION_BOTTOM = 6,
653 };
654 
655 //----------------------------------------------------------------------------
656 // Ligature shape bitfields
657 //----------------------------------------------------------------------------
658 
659 enum {
660  LIGATURE_DEFAULT = 0,
661  LIGATURE_STEM_LEFT_UP = 1,
662  LIGATURE_STEM_LEFT_DOWN = 2,
663  LIGATURE_STEM_RIGHT_UP = 4,
664  LIGATURE_STEM_RIGHT_DOWN = 8,
665  LIGATURE_OBLIQUE = 16,
666  LIGATURE_STACKED = 32
667 };
668 
669 //----------------------------------------------------------------------------
670 // Analytical markup bitfields
671 //----------------------------------------------------------------------------
672 
673 enum {
674  MARKUP_DEFAULT = 0,
675  MARKUP_ANALYTICAL_TIE = 1,
676  MARKUP_ANALYTICAL_FERMATA = 2,
677  MARKUP_GRACE_ATTRIBUTE = 4,
678  MARKUP_ARTIC_MULTIVAL = 8,
679  MARKUP_SCOREDEF_DEFINITIONS = 16
680 };
681 
682 //----------------------------------------------------------------------------
683 // Layout information
684 //----------------------------------------------------------------------------
685 
686 enum LayoutInformation { LAYOUT_NONE = 0, LAYOUT_ENCODED, LAYOUT_DONE };
687 
688 //----------------------------------------------------------------------------
689 // Bounding box access
690 //----------------------------------------------------------------------------
691 
692 enum Accessor { SELF = 0, CONTENT };
693 
694 //----------------------------------------------------------------------------
695 // Some keys
696 //----------------------------------------------------------------------------
697 
698 enum { KEY_LEFT = 37, KEY_UP = 38, KEY_RIGHT = 39, KEY_DOWN = 40, KEY_DOT = 46 };
699 
700 //----------------------------------------------------------------------------
701 // Stem sameas drawing role
702 //----------------------------------------------------------------------------
703 
704 enum StemSameasDrawingRole { SAMEAS_NONE = 0, SAMEAS_UNSET, SAMEAS_PRIMARY, SAMEAS_SECONDARY };
705 
706 //----------------------------------------------------------------------------
707 // Smufl text font (selected font or fallback)
708 //----------------------------------------------------------------------------
709 
710 enum SmuflTextFont { SMUFL_NONE = 0, SMUFL_FONT_SELECTED, SMUFL_FONT_FALLBACK };
711 
712 //----------------------------------------------------------------------------
713 // Graphic ID type
714 //----------------------------------------------------------------------------
715 
716 enum GraphicID { PRIMARY = 0, SPANNING, SYMBOLREF };
717 
718 //----------------------------------------------------------------------------
719 // Measure type
720 //----------------------------------------------------------------------------
721 
722 enum MeasureType { MEASURED = 0, UNMEASURED, NEUMELINE };
723 
724 //----------------------------------------------------------------------------
725 // Focus status type
726 //----------------------------------------------------------------------------
727 
728 enum FocusStatusType { FOCUS_UNSET = 0, FOCUS_SET, FOCUS_USED };
729 
730 //----------------------------------------------------------------------------
731 // Mensural cast-off type
732 //----------------------------------------------------------------------------
733 
734 enum MensuralCastOffType { MENSURAL_CAST_OFF_INIT = 0, MENSURAL_CAST_OFF_UNSET, MENSURAL_CAST_OFF_RESET };
735 
736 //----------------------------------------------------------------------------
737 // The score time unit (quarter note)
738 //----------------------------------------------------------------------------
739 
740 #define SCORE_TIME_UNIT 4
741 
742 //----------------------------------------------------------------------------
743 // Section representing a line in neon
744 //----------------------------------------------------------------------------
745 
746 #define NEUME_LINE_TYPE "neon-neume-line"
747 
748 //----------------------------------------------------------------------------
749 // SVG CSS value for show-hidden option
750 //----------------------------------------------------------------------------
751 
752 #define CSS_SHOW_HIDDEN "show-hidden"
753 
754 //----------------------------------------------------------------------------
755 // Legacy Wolfgang defines
756 //----------------------------------------------------------------------------
757 
758 #define OCTAVE_OFFSET 4
759 
760 // in half staff spaces (but should be 6 in two-voice notation)
761 #define STANDARD_STEMLENGTH 7
762 #define STANDARD_STEMLENGTH_TAB 3
763 
764 //----------------------------------------------------------------------------
765 // Temporary - to be made an option?
766 //----------------------------------------------------------------------------
767 
768 #define TABLATURE_STAFF_RATIO 1.75
769 #define GERMAN_TAB_STAFF_RATIO 2.2
770 
771 #define SUPER_SCRIPT_FACTOR 0.58
772 #define SUPER_SCRIPT_POSITION -0.20 // lowered down from the midline
773 #define SUB_SCRIPT_POSITION -0.17 // lowered down from the baseline
774 
775 //----------------------------------------------------------------------------
776 // Neume notation note size to staff size ratio defines
777 //----------------------------------------------------------------------------
778 
779 #define NOTE_HEIGHT_TO_STAFF_SIZE_RATIO 2
780 #define NOTE_WIDTH_TO_STAFF_SIZE_RATIO 1.4
781 
782 } // namespace vrv
783 
784 #endif // __VRV_DEF_H__
Generic int map recursive structure for storing hierachy of values For example, we want to process al...
Definition: vrvdef.h:441