GUIDOLib  1.7.7
Guido Engine Internal Documentation
ARMusicalObject.h
1 #ifndef ARMusicalObject_H
2 #define ARMusicalObject_H
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2002 Holger Hoos, Juergen Kilian, Kai Renz
7  Copyright (C) 2002-2017 Grame
8 
9  This Source Code Form is subject to the terms of the Mozilla Public
10  License, v. 2.0. If a copy of the MPL was not distributed with this
11  file, You can obtain one at http://mozilla.org/MPL/2.0/.
12 
13  Grame Research Laboratory, 11, cours de Verdun Gensoul 69002 Lyon - France
14  research@grame.fr
15 
16 */
17 
18 #include "defines.h" // for TYPE_TIMEPOSITION
19 #include "ARVisitable.h"
20 
21 class GObject;
22 class TimeUnwrap;
23 class AROctava;
24 class ARGrace;
25 class ARNote;
26 class ARSpace;
27 class ARTab;
28 class ARTempo;
29 
34 {
35  public:
37  ARMusicalObject( const TYPE_TIMEPOSITION & relativeTimepositionOfMusicalObject );
38  ARMusicalObject( const ARMusicalObject & armo);
39  virtual ~ARMusicalObject() {}
40 
41  virtual ARMusicalObject * Copy() const;
42 
43  // should be re-designed!!! Should be put to another place but is needed here for spacing alg.
44  // returns here 0, simple objects have no durations (Clefs, Bars, ...)
45  virtual const TYPE_DURATION & getDuration() const { return fDuration; }
47 
48  // must be re-designed!!! Should be put to another place but is needed here from several alg.
50 
51  virtual void setRelativeTimePosition(const TYPE_TIMEPOSITION & newRelativeTimePosition);
52  virtual void setRelativeEndTimePosition(const TYPE_TIMEPOSITION & tp) { fDuration = tp - relativeTimePosition; }
53  virtual void setDuration(const TYPE_DURATION & dur) { fDuration = dur; }
54 
55  virtual bool isEventClass() const { return false; }
56  virtual void browse(TimeUnwrap& mapper) const {}
57  virtual int getVoiceNum() const { return fVoiceNum; }
58  virtual void printGMNName(std::ostream& os) const {}
59  virtual std::string getGMNName() const { return "\\musicalObject"; }
60  virtual void setVoiceNum(int num) { fVoiceNum = num; }
61 
62  static bool IsPowerOfTwoDenom(const TYPE_DURATION & dur);
63 
64  virtual void setDrawGR(bool on) { fDrawGR = on;}
65  virtual bool getDrawGR() const { return fDrawGR;}
66 
67  /**** Functions to avoid dynamic_cast ****/
68  virtual ARMusicalObject *isARRepeatBegin() { return NULL; }
69  virtual ARNote *isARNote() { return NULL; }
70  virtual const ARNote *isARNote() const { return NULL; }
71  virtual ARTab *isARTab() { return NULL; }
72  virtual const ARTab *isARTab() const { return NULL; }
73  virtual ARMusicalObject *isARCoda() { return NULL; }
74  virtual ARMusicalObject *isARSegno() { return NULL; }
75  virtual ARMusicalObject *isARNewPage() { return NULL; }
76  virtual ARMusicalObject *isARNewSystem() { return NULL; }
77  virtual ARMusicalObject *isARKey() { return NULL; }
78  virtual ARMusicalObject *isARNaturalKey() { return NULL; }
79  virtual ARMusicalObject *isARBeamState() { return NULL; }
80  virtual ARMusicalObject *isARClef() { return NULL; }
81  virtual ARMusicalObject *isARFinishBar() { return NULL; }
82  virtual ARMusicalObject *isARMeter() { return NULL; }
83  virtual ARMusicalObject *isARRepeatEnd() { return NULL; }
84  virtual ARMusicalObject *isARRest() { return NULL; }
85  virtual ARMusicalObject *isARSecondGlue() { return NULL; }
86  virtual ARMusicalObject *isARPossibleBreak() { return NULL; }
87  virtual AROctava *isAROctava() { return NULL; }
88  virtual ARGrace *isARGrace() { return NULL; }
89  virtual ARSpace *isARSpace() { return NULL; }
90  virtual ARTempo *isARTempo() { return NULL; }
91 
92  virtual const ARMusicalObject *isARDummyRangeEnd() const { return NULL; }
93  virtual const ARMusicalObject *isARNoteFormat() const { return NULL; }
94  virtual const ARMusicalObject *isARBar() const { return NULL; }
95  virtual const ARMusicalObject *isARStaff() const { return NULL; }
96  virtual const ARMusicalObject *isARMusicalTag() const { return NULL; }
97  virtual const ARMusicalObject *isARJump() const { return NULL; }
98  virtual const ARMusicalObject *isARChordComma() const { return NULL; }
99  virtual const ARMusicalObject *isARUserChordTag() const { return NULL; }
100  virtual bool isEmptyNote() const { return false; }
101 
102  /* Visitor design pattern */
103  virtual void accept(ARVisitor& visitor);
104  virtual void print(std::ostream & os) const;
105 
106  protected:
108  int fVoiceNum; // voice number added for mapping info [DF - 10-11-09]
109  bool fDrawGR = true; // a flag that reflects \staffOn/Off sequence
110 
111  private:
112  TYPE_DURATION fDuration;
113 };
114 
115 std::ostream & operator<<(std::ostream& os, const ARMusicalObject* o);
116 
117 #endif
ARMusicalObject::getVoiceNum
virtual int getVoiceNum() const
Definition: ARMusicalObject.h:57
ARMusicalObject::accept
virtual void accept(ARVisitor &visitor)
ARMusicalObject::isARBeamState
virtual ARMusicalObject * isARBeamState()
Definition: ARMusicalObject.h:79
ARMusicalObject::getRelativeTimePosition
virtual const TYPE_TIMEPOSITION & getRelativeTimePosition() const
Definition: ARMusicalObject.h:46
ARMusicalObject::setVoiceNum
virtual void setVoiceNum(int num)
Definition: ARMusicalObject.h:60
ARMusicalObject::getDrawGR
virtual bool getDrawGR() const
Definition: ARMusicalObject.h:65
ARMusicalObject::isARPossibleBreak
virtual ARMusicalObject * isARPossibleBreak()
Definition: ARMusicalObject.h:86
ARVisitor
Definition: ARVisitor.h:22
ARMusicalObject::isARNote
virtual const ARNote * isARNote() const
Definition: ARMusicalObject.h:70
ARMusicalObject::isARSecondGlue
virtual ARMusicalObject * isARSecondGlue()
Definition: ARMusicalObject.h:85
ARMusicalObject::isARTab
virtual const ARTab * isARTab() const
Definition: ARMusicalObject.h:72
ARMusicalObject::isARSegno
virtual ARMusicalObject * isARSegno()
Definition: ARMusicalObject.h:74
ARMusicalObject::isARNote
virtual ARNote * isARNote()
Definition: ARMusicalObject.h:69
ARVisitable
Definition: ARVisitable.h:21
ARMusicalObject::isARNewPage
virtual ARMusicalObject * isARNewPage()
Definition: ARMusicalObject.h:75
GObject
The base class for all graphic objects.
Definition: GObject.h:54
ARMusicalObject::isARCoda
virtual ARMusicalObject * isARCoda()
Definition: ARMusicalObject.h:73
Fraction
Numerator and denominator.
Definition: Fraction.h:23
ARSpace
not yet documented
Definition: ARSpace.h:42
ARMusicalObject::isARRest
virtual ARMusicalObject * isARRest()
Definition: ARMusicalObject.h:84
AROctava
The Octava tag.
Definition: AROctava.h:45
ARGrace
not yet documented
Definition: ARGrace.h:40
ARMusicalObject::isARBar
virtual const ARMusicalObject * isARBar() const
Definition: ARMusicalObject.h:94
ARMusicalObject::setDuration
virtual void setDuration(const TYPE_DURATION &dur)
Definition: ARMusicalObject.h:53
ARTab
Representation of a guitar tablature.
Definition: ARTab.h:17
ARMusicalObject::browse
virtual void browse(TimeUnwrap &mapper) const
Definition: ARMusicalObject.h:56
ARMusicalObject::fDrawGR
bool fDrawGR
Definition: ARMusicalObject.h:109
ARMusicalObject::isARDummyRangeEnd
virtual const ARMusicalObject * isARDummyRangeEnd() const
Definition: ARMusicalObject.h:92
ARMusicalObject::isARSpace
virtual ARSpace * isARSpace()
Definition: ARMusicalObject.h:89
ARMusicalObject::isEmptyNote
virtual bool isEmptyNote() const
Definition: ARMusicalObject.h:100
ARMusicalObject::isAROctava
virtual AROctava * isAROctava()
Definition: ARMusicalObject.h:87
ARMusicalObject::isARClef
virtual ARMusicalObject * isARClef()
Definition: ARMusicalObject.h:80
ARMusicalObject::fVoiceNum
int fVoiceNum
Definition: ARMusicalObject.h:108
ARMusicalObject::getRelativeEndTimePosition
virtual TYPE_TIMEPOSITION getRelativeEndTimePosition() const
ARMusicalObject::isARMeter
virtual ARMusicalObject * isARMeter()
Definition: ARMusicalObject.h:82
ARMusicalObject::isARFinishBar
virtual ARMusicalObject * isARFinishBar()
Definition: ARMusicalObject.h:81
ARMusicalObject::setRelativeEndTimePosition
virtual void setRelativeEndTimePosition(const TYPE_TIMEPOSITION &tp)
Definition: ARMusicalObject.h:52
ARMusicalObject::print
virtual void print(std::ostream &os) const
ARMusicalObject::isARNoteFormat
virtual const ARMusicalObject * isARNoteFormat() const
Definition: ARMusicalObject.h:93
ARMusicalObject::isARMusicalTag
virtual const ARMusicalObject * isARMusicalTag() const
Definition: ARMusicalObject.h:96
ARMusicalObject::ARMusicalObject
ARMusicalObject()
ARMusicalObject::isARGrace
virtual ARGrace * isARGrace()
Definition: ARMusicalObject.h:88
ARMusicalObject::getGMNName
virtual std::string getGMNName() const
Definition: ARMusicalObject.h:59
ARMusicalObject::isARJump
virtual const ARMusicalObject * isARJump() const
Definition: ARMusicalObject.h:97
ARMusicalObject::isARRepeatBegin
virtual ARMusicalObject * isARRepeatBegin()
Definition: ARMusicalObject.h:68
ARMusicalObject::setDrawGR
virtual void setDrawGR(bool on)
Definition: ARMusicalObject.h:64
ARTempo
The tempo tag parameter.
Definition: ARTempo.h:72
ARMusicalObject::isARChordComma
virtual const ARMusicalObject * isARChordComma() const
Definition: ARMusicalObject.h:98
ARMusicalObject::getDuration
virtual const TYPE_DURATION & getDuration() const
Definition: ARMusicalObject.h:45
ARMusicalObject::isEventClass
virtual bool isEventClass() const
Definition: ARMusicalObject.h:55
ARNote
Representation of a GUIDO note.
Definition: ARNote.h:30
ARMusicalObject::Copy
virtual ARMusicalObject * Copy() const
ARMusicalObject::isARStaff
virtual const ARMusicalObject * isARStaff() const
Definition: ARMusicalObject.h:95
ARMusicalObject::isARNaturalKey
virtual ARMusicalObject * isARNaturalKey()
Definition: ARMusicalObject.h:78
ARMusicalObject::relativeTimePosition
TYPE_TIMEPOSITION relativeTimePosition
Definition: ARMusicalObject.h:107
ARMusicalObject::isARTab
virtual ARTab * isARTab()
Definition: ARMusicalObject.h:71
ARMusicalObject::isARUserChordTag
virtual const ARMusicalObject * isARUserChordTag() const
Definition: ARMusicalObject.h:99
ARMusicalObject::isARTempo
virtual ARTempo * isARTempo()
Definition: ARMusicalObject.h:90
ARMusicalObject::setRelativeTimePosition
virtual void setRelativeTimePosition(const TYPE_TIMEPOSITION &newRelativeTimePosition)
ARMusicalObject::isARRepeatEnd
virtual ARMusicalObject * isARRepeatEnd()
Definition: ARMusicalObject.h:83
ARMusicalObject
The base class for all AR objects. It contains all musical information : duration and time position.
Definition: ARMusicalObject.h:33
ARMusicalObject::printGMNName
virtual void printGMNName(std::ostream &os) const
Definition: ARMusicalObject.h:58
operator<<
std::ostream & operator<<(std::ostream &os, const svgendl &eol)
ARMusicalObject::isARKey
virtual ARMusicalObject * isARKey()
Definition: ARMusicalObject.h:77
TimeUnwrap
Definition: TimeUnwrap.h:29
ARMusicalObject::IsPowerOfTwoDenom
static bool IsPowerOfTwoDenom(const TYPE_DURATION &dur)
ARMusicalObject::~ARMusicalObject
virtual ~ARMusicalObject()
Definition: ARMusicalObject.h:39
ARMusicalObject::isARNewSystem
virtual ARMusicalObject * isARNewSystem()
Definition: ARMusicalObject.h:76

Guido Project Copyright © 2019 Grame-CNCM