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  SCORE,
169  PAGE_ELEMENT_max,
170  // Ids for SystemElement child classes
171  SYSTEM_ELEMENT,
172  SYSTEM_MILESTONE_END,
173  ENDING,
174  EXPANSION,
175  PB,
176  SB,
177  SECTION,
178  SYSTEM_ELEMENT_max,
179  // Ids for ControlElement child classes
180  CONTROL_ELEMENT,
181  ANCHOREDTEXT,
182  ANNOTSCORE,
183  ARPEG,
184  BEAMSPAN,
185  BRACKETSPAN,
186  BREATH,
187  CAESURA,
188  CPMARK,
189  DIR,
190  DYNAM,
191  FERMATA,
192  FING,
193  GLISS,
194  HAIRPIN,
195  HARM,
196  LV,
197  MORDENT,
198  MNUM,
199  ORNAM,
200  OCTAVE,
201  PEDAL,
202  PHRASE,
203  PITCHINFLECTION,
204  REH,
205  REPEATMARK,
206  SLUR,
207  TEMPO,
208  TIE,
209  TRILL,
210  TURN,
211  CONTROL_ELEMENT_max,
212  // Ids for LayerElement child classes
213  LAYER_ELEMENT,
214  ACCID,
215  ARTIC,
216  BARLINE,
217  BEAM,
218  BEATRPT,
219  BTREM,
220  CHORD,
221  CLEF,
222  CUSTOS,
223  DIVLINE,
224  DOT,
225  DOTS,
226  EPISEMA,
227  FLAG,
228  FTREM,
229  GENERIC_ELEMENT,
230  GRACEGRP,
231  HALFMRPT,
232  KEYSIG,
233  KEYACCID,
234  LIGATURE,
235  LIQUESCENT,
236  MENSUR,
237  METERSIG,
238  METERSIGGRP,
239  MREST,
240  MRPT,
241  MRPT2,
242  MSPACE,
243  MULTIREST,
244  MULTIRPT,
245  NC,
246  NOTE,
247  NEUME,
248  ORISCUS,
249  PLICA,
250  PROPORT,
251  QUILISMA,
252  STROPHICUS,
253  REST,
254  SPACE,
255  STEM,
256  SYL,
257  SYLLABLE,
258  TABGRP,
259  TABDURSYM,
260  TIMESTAMP_ATTR,
261  TUPLET,
262  TUPLET_BRACKET,
263  TUPLET_NUM,
264  VOLTA,
265  LYRIC_ELEMENT,
266  VERSE,
267  REFRAIN,
268  LYRIC_ELEMENT_max,
269  LAYER_ELEMENT_max,
270  // Ids for ScoreDefElement child classes
271  SCOREDEF_ELEMENT,
272  LAYERDEF,
273  SCOREDEF,
274  STAFFDEF,
275  SCOREDEF_ELEMENT_max,
276  // Ids for TextElement child classes
277  TEXT_ELEMENT,
278  FIG,
279  FIGURE,
280  LB,
281  NUM,
282  REND,
283  SYMBOL,
284  TEXT,
285  TEXT_ELEMENT_max,
286  //
287  BBOX_DEVICE_CONTEXT,
288  SVG_DEVICE_CONTEXT,
289  CUSTOM_DEVICE_CONTEXT,
290  // Pseudo ids for custom factory functions
291  FACTORY_STAGEDIR,
292  FACTORY_OSTAFF,
293  //
294  UNSPECIFIED
295 };
296 
301 enum InterfaceId {
302  INTERFACE,
303  INTERFACE_ALT_SYM,
304  INTERFACE_AREA_POS,
305  INTERFACE_BOUNDARY,
306  INTERFACE_DURATION,
307  INTERFACE_LINKING,
308  INTERFACE_FACSIMILE,
309  INTERFACE_OFFSET,
310  INTERFACE_OFFSET_SPANNING,
311  INTERFACE_PITCH,
312  INTERFACE_PLIST,
313  INTERFACE_POSITION,
314  INTERFACE_SCOREDEF,
315  INTERFACE_TEXT_DIR,
316  INTERFACE_TIME_POINT,
317  INTERFACE_TIME_SPANNING
318 };
319 
320 //----------------------------------------------------------------------------
321 // Typedefs
322 //----------------------------------------------------------------------------
323 
324 class Alignment;
325 class Arpeg;
326 class ClassIdComparison;
327 class BeamElementCoord;
328 class BoundingBox;
329 class Comparison;
330 class CurveSpannedElement;
331 class DivLine;
332 class FloatingPositioner;
333 class FloatingCurvePositioner;
334 class GraceAligner;
335 class InterfaceComparison;
336 class LayerElement;
337 class LedgerLine;
338 class LinkingInterface;
339 class Liquescent;
340 class Nc;
341 class Note;
342 class Neume;
343 class Object;
344 class PlistInterface;
345 class Point;
346 class Staff;
347 class Option;
348 class TextElement;
349 class TimePointInterface;
350 class TimeSpanningInterface;
351 
352 typedef std::vector<Object *> ArrayOfObjects;
353 
354 typedef std::vector<const Object *> ArrayOfConstObjects;
355 
356 typedef std::list<Object *> ListOfObjects;
357 
358 typedef std::list<const Object *> ListOfConstObjects;
359 
360 typedef std::set<Object *> SetOfObjects;
361 
362 typedef std::set<const Object *> SetOfConstObjects;
363 
364 typedef std::set<const Object *> SetOfConstObjects;
365 
366 typedef std::vector<Note *> ChordNoteGroup;
367 
368 typedef std::vector<std::tuple<Alignment *, Alignment *, int>> ArrayOfAdjustmentTuples;
369 
370 typedef std::vector<std::tuple<Alignment *, Arpeg *, int, bool>> ArrayOfAlignmentArpegTuples;
371 
372 typedef std::vector<BeamElementCoord *> ArrayOfBeamElementCoords;
373 
374 typedef std::vector<std::pair<int, int>> ArrayOfIntPairs;
375 
376 typedef std::multimap<std::string, LinkingInterface *> MapOfLinkingInterfaceIDPairs;
377 
378 typedef std::map<std::string, Note *> MapOfNoteIDPairs;
379 
380 typedef std::vector<std::pair<Object *, std::string>> ArrayOfPlistObjectIDPairs;
381 
382 typedef std::vector<CurveSpannedElement *> ArrayOfCurveSpannedElements;
383 
384 typedef std::list<std::pair<Object *, data_MEASUREBEAT>> ListOfObjectBeatPairs;
385 
386 typedef std::list<std::pair<const Object *, std::string>> ListOfObjectAttNamePairs;
387 
388 typedef std::list<std::pair<TimePointInterface *, ClassId>> ListOfPointingInterClassIdPairs;
389 
390 typedef std::list<std::pair<TimeSpanningInterface *, ClassId>> ListOfSpanningInterClassIdPairs;
391 
392 typedef std::list<std::pair<TimeSpanningInterface *, Object *>> ListOfSpanningInterOwnerPairs;
393 
394 typedef std::vector<FloatingPositioner *> ArrayOfFloatingPositioners;
395 
396 typedef std::vector<FloatingCurvePositioner *> ArrayOfFloatingCurvePositioners;
397 
398 typedef std::vector<BoundingBox *> ArrayOfBoundingBoxes;
399 
400 typedef std::vector<LedgerLine> ArrayOfLedgerLines;
401 
402 typedef std::vector<TextElement *> ArrayOfTextElements;
403 
404 typedef std::map<const Staff *, std::multiset<int>> MapOfNoteLocs;
405 
406 typedef std::map<const Staff *, std::set<int>> MapOfDotLocs;
407 
408 typedef std::map<std::string, Option *> MapOfStrOptions;
409 
410 typedef std::map<int, data_ACCIDENTAL_WRITTEN> MapOfOctavedPitchAccid;
411 
412 typedef std::map<int, GraceAligner *> MapOfIntGraceAligners;
413 
414 typedef std::vector<std::pair<std::u32string, bool>> ArrayOfStringDynamTypePairs;
415 
416 typedef std::map<ClassId, std::function<Object *(void)>> MapOfClassIdConstructors;
417 
418 typedef std::map<std::string, ClassId> MapOfStrClassIds;
419 
420 typedef std::vector<std::pair<LayerElement *, LayerElement *>> MeasureTieEndpoints;
421 
422 typedef bool (*NotePredicate)(const Note *);
423 
424 typedef std::vector<std::pair<LayerElement *, data_DURATION>> ArrayOfElementDurPairs;
425 
426 typedef std::map<int, std::list<int>> MapOfOssiaStaffNs;
427 
437 struct IntTree {
438  std::map<int, IntTree> child;
439 };
440 
441 typedef std::map<int, IntTree> IntTree_t;
442 
449 typedef std::map<int, bool> VerseN_t;
450 typedef std::map<int, VerseN_t> LayerN_VerserN_t;
451 typedef std::map<int, LayerN_VerserN_t> StaffN_LayerN_VerseN_t;
452 
453 //----------------------------------------------------------------------------
454 // Global defines
455 //----------------------------------------------------------------------------
456 
457 #define DEFINITION_FACTOR 10
458 
459 #define DEFAULT_UNIT 9.0
460 
461 #define isIn(x, a, b) (((x) >= std::min((a), (b))) && ((x) <= std::max((a), (b))))
462 
469 enum FunctorCode { FUNCTOR_CONTINUE = 0, FUNCTOR_SIBLINGS, FUNCTOR_STOP };
470 
471 //----------------------------------------------------------------------------
472 // Maximum number of levels between parent and children for optimizing search
473 //----------------------------------------------------------------------------
474 
478 #define MAX_ACCID_DEPTH -1
479 
481 #define MAX_BEAM_DEPTH -1
482 
484 #define MAX_CHORD_DEPTH -1
485 
487 #define MAX_FTREM_DEPTH -1
488 
490 #define MAX_LIGATURE_DEPTH -1
491 
493 #define MAX_TABGRP_DEPTH -1
494 
496 #define MAX_TUPLET_DEPTH -1
497 
499 #define MAX_STAFFGRP_DEPTH -1
500 
502 #define MAX_NOTE_DEPTH -1
503 
504 //----------------------------------------------------------------------------
505 // Ossia staff / layer @n offset (assuming we never have @n that high)
506 //----------------------------------------------------------------------------
507 
508 #define OSSIA_N_OFFSET 1000000
509 
510 //----------------------------------------------------------------------------
511 // Unicode music codepoints
512 //----------------------------------------------------------------------------
513 
514 #define UNICODE_FLAT U'\u266D' // ♭
515 #define UNICODE_NATURAL U'\u266E' // ♮
516 #define UNICODE_SHARP U'\u266F' // ♯
517 
518 #define UNICODE_UNDERTIE U'\u203F' // ‿
519 
520 #define UNICODE_DAL_SEGNO U'\U0001D109' // 𝄉
521 #define UNICODE_DA_CAPO U'\U0001D10A' // 𝄊
522 #define UNICODE_SEGNO U'\U0001D10B' // 𝄋
523 #define UNICODE_CODA U'\U0001D10C' // 𝄌
524 
525 #define UNICODE_DOUBLE_FLAT U'\U0001D12B' // 𝄫
526 #define UNICODE_DOUBLE_SHARP U'\U0001D12A' // 𝄪
527 
528 //----------------------------------------------------------------------------
529 // VerovioText codepoints
530 //----------------------------------------------------------------------------
531 
540 #define VRV_TEXT_HARM \
541  U"\u266D\u266E\u266F" \
542  U"\uE260\uE261\uE262\uE263\uE264" \
543  U"\uEA50\uEA51\uEA52\uEA53\uEA54\uEA55\uEA56\uEA57\uEA58\uEA59\uEA5A\uEA5B\uEA5C\uEA5D\uEA5E" \
544  U"\uEA5F\uEA60\uEA61\uEA62\uEA63\uEA64\uEA65\uEA66\uEA67" \
545  U"\uECC0"
546 
547 //----------------------------------------------------------------------------
548 // data.LINEWIDTHTERM factors
549 //----------------------------------------------------------------------------
550 
551 #define LINEWIDTHTERM_factor_narrow 1.0
552 #define LINEWIDTHTERM_factor_medium 2.0
553 #define LINEWIDTHTERM_factor_wide 4.0
554 
555 //----------------------------------------------------------------------------
556 // Types for editorial element
557 //----------------------------------------------------------------------------
558 
559 // the maximum is 255 (unsigned char)
560 enum EditorialLevel {
561  EDITORIAL_UNDEFINED = 0,
562  EDITORIAL_SCORE,
563  EDITORIAL_TOPLEVEL,
564  EDITORIAL_SCOREDEF,
565  EDITORIAL_STAFFGRP,
566  EDITORIAL_MEASURE,
567  EDITORIAL_STAFF,
568  EDITORIAL_LAYER,
569  EDITORIAL_NOTE,
570  EDITORIAL_TEXT,
571  EDITORIAL_FB,
572  EDITORIAL_RUNNING,
573 };
574 
575 //----------------------------------------------------------------------------
576 // Visibility for editorial and mdiv elements
577 //----------------------------------------------------------------------------
578 
579 enum VisibilityType { Hidden = 0, Visible };
580 
581 //----------------------------------------------------------------------------
582 // The used SMuFL glyph anchors
583 //----------------------------------------------------------------------------
584 
585 enum SMuFLGlyphAnchor {
586  SMUFL_stemDownNW = 0,
587  SMUFL_stemUpSE,
588  SMUFL_cutOutNE,
589  SMUFL_cutOutNW,
590  SMUFL_cutOutSE,
591  SMUFL_cutOutSW
592 };
593 
594 //----------------------------------------------------------------------------
595 // Spanning types for control events
596 //----------------------------------------------------------------------------
597 
598 enum { SPANNING_START_END = 0, SPANNING_START, SPANNING_END, SPANNING_MIDDLE };
599 
600 //----------------------------------------------------------------------------
601 // Types for layer element
602 //----------------------------------------------------------------------------
603 
609 enum ElementScoreDefRole {
610  SCOREDEF_NONE = 0,
611  SCOREDEF_SYSTEM,
612  SCOREDEF_INTERMEDIATE,
613  SCOREDEF_CAUTIONARY,
614  SCOREDEF_OSSIA
615 };
616 
617 //----------------------------------------------------------------------------
618 // ScoreDef drawing labels
619 //----------------------------------------------------------------------------
620 
621 enum ScoreDefDrawingLabels { DRAWING_LABEL_FULL = 0, DRAWING_LABEL_ABBR, DRAWING_LABEL_NONE };
622 
623 //----------------------------------------------------------------------------
624 // Artic types
625 //----------------------------------------------------------------------------
626 
627 enum ArticType { ARTIC_INSIDE = 0, ARTIC_OUTSIDE };
628 
629 //----------------------------------------------------------------------------
630 // Visibility optimization
631 //----------------------------------------------------------------------------
632 
633 enum VisibilityOptimization { OPTIMIZATION_NONE = 0, OPTIMIZATION_HIDDEN, OPTIMIZATION_SHOW };
634 
635 //----------------------------------------------------------------------------
636 // Layout positions (3 x 3 grid)
637 //----------------------------------------------------------------------------
638 
639 enum {
640  POSITION_LEFT = 0,
641  POSITION_CENTER,
642  POSITION_RIGHT,
643 };
644 
645 enum {
646  POSITION_TOP = 0,
647  POSITION_MIDDLE = 3,
648  POSITION_BOTTOM = 6,
649 };
650 
651 //----------------------------------------------------------------------------
652 // Ligature shape bitfields
653 //----------------------------------------------------------------------------
654 
655 enum {
656  LIGATURE_DEFAULT = 0,
657  LIGATURE_STEM_LEFT_UP = 1,
658  LIGATURE_STEM_LEFT_DOWN = 2,
659  LIGATURE_STEM_RIGHT_UP = 4,
660  LIGATURE_STEM_RIGHT_DOWN = 8,
661  LIGATURE_OBLIQUE = 16,
662  LIGATURE_STACKED = 32
663 };
664 
665 //----------------------------------------------------------------------------
666 // Analytical markup bitfields
667 //----------------------------------------------------------------------------
668 
669 enum {
670  MARKUP_DEFAULT = 0,
671  MARKUP_ANALYTICAL_TIE = 1,
672  MARKUP_ANALYTICAL_FERMATA = 2,
673  MARKUP_GRACE_ATTRIBUTE = 4,
674  MARKUP_ARTIC_MULTIVAL = 8,
675  MARKUP_SCOREDEF_DEFINITIONS = 16
676 };
677 
678 //----------------------------------------------------------------------------
679 // Layout information
680 //----------------------------------------------------------------------------
681 
682 enum LayoutInformation { LAYOUT_NONE = 0, LAYOUT_ENCODED, LAYOUT_DONE };
683 
684 //----------------------------------------------------------------------------
685 // Bounding box access
686 //----------------------------------------------------------------------------
687 
688 enum Accessor { SELF = 0, CONTENT };
689 
690 //----------------------------------------------------------------------------
691 // Some keys
692 //----------------------------------------------------------------------------
693 
694 enum { KEY_LEFT = 37, KEY_UP = 38, KEY_RIGHT = 39, KEY_DOWN = 40, KEY_DOT = 46 };
695 
696 //----------------------------------------------------------------------------
697 // Stem sameas drawing role
698 //----------------------------------------------------------------------------
699 
700 enum StemSameasDrawingRole { SAMEAS_NONE = 0, SAMEAS_UNSET, SAMEAS_PRIMARY, SAMEAS_SECONDARY };
701 
702 //----------------------------------------------------------------------------
703 // Smufl text font (selected font or fallback)
704 //----------------------------------------------------------------------------
705 
706 enum SmuflTextFont { SMUFL_NONE = 0, SMUFL_FONT_SELECTED, SMUFL_FONT_FALLBACK };
707 
708 //----------------------------------------------------------------------------
709 // Graphic ID type
710 //----------------------------------------------------------------------------
711 
712 enum GraphicID { PRIMARY = 0, SPANNING, SYMBOLREF };
713 
714 //----------------------------------------------------------------------------
715 // Measure type
716 //----------------------------------------------------------------------------
717 
718 enum MeasureType { MEASURED = 0, UNMEASURED, NEUMELINE };
719 
720 //----------------------------------------------------------------------------
721 // Focus status type
722 //----------------------------------------------------------------------------
723 
724 enum FocusStatusType { FOCUS_UNSET = 0, FOCUS_SET, FOCUS_USED };
725 
726 //----------------------------------------------------------------------------
727 // Mensural cast-off type
728 //----------------------------------------------------------------------------
729 
730 enum MensuralCastOffType { MENSURAL_CAST_OFF_INIT = 0, MENSURAL_CAST_OFF_UNSET, MENSURAL_CAST_OFF_RESET };
731 
732 //----------------------------------------------------------------------------
733 // The score time unit (quarter note)
734 //----------------------------------------------------------------------------
735 
736 #define SCORE_TIME_UNIT 4
737 
738 //----------------------------------------------------------------------------
739 // Section representing a line in neon
740 //----------------------------------------------------------------------------
741 
742 #define NEUME_LINE_TYPE "neon-neume-line"
743 
744 //----------------------------------------------------------------------------
745 // SVG CSS value for show-hidden option
746 //----------------------------------------------------------------------------
747 
748 #define CSS_SHOW_HIDDEN "show-hidden"
749 
750 //----------------------------------------------------------------------------
751 // Legacy Wolfgang defines
752 //----------------------------------------------------------------------------
753 
754 #define OCTAVE_OFFSET 4
755 
756 // in half staff spaces (but should be 6 in two-voice notation)
757 #define STANDARD_STEMLENGTH 7
758 #define STANDARD_STEMLENGTH_TAB 3
759 
760 //----------------------------------------------------------------------------
761 // Temporary - to be made an option?
762 //----------------------------------------------------------------------------
763 
764 #define TABLATURE_STAFF_RATIO 1.75
765 #define GERMAN_TAB_STAFF_RATIO 2.2
766 
767 #define SUPER_SCRIPT_FACTOR 0.58
768 #define SUPER_SCRIPT_POSITION -0.20 // lowered down from the midline
769 #define SUB_SCRIPT_POSITION -0.17 // lowered down from the baseline
770 
771 //----------------------------------------------------------------------------
772 // Neume notation note size to staff size ratio defines
773 //----------------------------------------------------------------------------
774 
775 #define NOTE_HEIGHT_TO_STAFF_SIZE_RATIO 2
776 #define NOTE_WIDTH_TO_STAFF_SIZE_RATIO 1.4
777 
778 } // namespace vrv
779 
780 #endif // __VRV_DEF_H__
Generic int map recursive structure for storing hierachy of values For example, we want to process al...
Definition: vrvdef.h:437