GUIDOLib  1.7.7
Guido Engine Internal Documentation
GRArticulation.h
1 #ifndef GRArticulation_H
2 #define GRArticulation_H
3 
4 /*
5  GUIDO Library
6  Copyright (C) 2002 Holger Hoos, Juergen Kilian, Kai Renz
7  Copyright (C) 2004 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 <map>
19 
20 #include "GRTagARNotationElement.h"
21 #include "GRVisitor.h"
22 #include "NVPoint.h"
23 
24 
25 class ARBow;
26 class ARMusicalTag;
27 class GREvent;
28 class GRStaff;
29 
30 
36 {
37  public:
38  enum { kFlagStaccato = 1, kFlagStaccmo = 2, kFlagTenuto = 4,
41  kFlagBreathMark = 512, kFlagPizz = 1024, kFlagHarmonic = 2048, kFlagBow = 4096 };
42 
43 
44  GRArticulation( const ARMusicalTag * inTag, float curLSPACE, bool ownsar = false );
45  virtual ~GRArticulation() {}
46 
47  virtual const NVPoint & getReferencePosition() const;
48  virtual void setPosition(const NVPoint & point);
49 
50  // this will be done by the event to which
51  // the staccato belongs ....
52  virtual void tellPosition(GObject * caller, const NVPoint & inPos);
53 
54  virtual void accept (GRVisitor& visitor);
55  virtual void OnDraw( VGDevice & hdc ) const;
56 
57  int getArticulationType() const { return mArticulationFlag; }
58  void print(std::ostream& os) const;
59 
60  static bool compare (GRArticulation* i, GRArticulation* j) { return (i->getArticulationOrder() < j->getArticulationOrder()); }
61 
62  protected:
63  void placeStaccato( const GREvent * inParent, NVPoint & ioPos );
64  void placeStaccmo ( const GREvent * inParent, NVPoint & ioPos);
65  void placePizz ( const GREvent * inParent, NVPoint & ioPos);
66 
67  void placeAccent ( const GREvent * inParent, NVPoint & ioPos );
68  void placeAccentAbove( const GREvent * inParent, NVPoint & ioPos );
69  void placeAccentBelow( const GREvent * inParent, NVPoint & ioPos );
70 
71  void placeMarcato ( const GREvent * inParent, NVPoint & ioPos );
72  void placeMarcatoAbove( const GREvent * inParent, NVPoint & ioPos );
73  void placeMarcatoBelow( const GREvent * inParent, NVPoint & ioPos );
74 
75  void placeTenuto ( const GREvent * inParent, NVPoint & ioPos );
76  void placeFermataAbove( const GREvent * inParent, NVPoint & ioPos );
77  void placeFermataBelow( const GREvent * inParent, NVPoint & ioPos );
78  void placeHarmonic ( const GREvent * inParent, NVPoint & ioPos);
79  void placeBow ( const GREvent * inParent, NVPoint & ioPos );
80  void placeBowBelow ( const GREvent * inParent, NVPoint & ioPos );
81  void placeBowAbove ( const GREvent * inParent, NVPoint & ioPos );
82 
83  int getPlacement( const GREvent * inParent ) const; // gives an ARArticulation placement
84 
86 
87  static std::map<int,int> sOrdering;
88 
89  private:
90  unsigned int getSymbol ( const ARMusicalTag * inTag ) const;
91  int getArticulationFlag ( const ARMusicalTag * inTag ) const;
92  NVPoint getReferencePosition ( unsigned int symbol) const;
93  float getSymbolHeight ( unsigned int symbol) const;
94  void setArticulationSymbol ( unsigned int symbol );
95  int getArticulationOrder() const { return sOrdering[mArticulationFlag]; }
96  int getARPlacement() const; // gives the ARArticulation position
97 
98  double resolveCollisionAbove ( const GREvent * inParent, double currentpos, float minspace, int skiptypes) const;
99  double resolveCollisionBelow ( const GREvent * inParent, double currentpos, float minspace, int skiptypes) const;
100  double staffBottom (const GRStaff * staff) const;
101  bool onStaffLine (const GRStaff * staff, double pos) const;
102  void initOrder ();
103 
104  NVPoint fRefPos;
105 };
106 
107 #endif
GRArticulation::placeAccentBelow
void placeAccentBelow(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::kFlagTenuto
Definition: GRArticulation.h:38
GRArticulation::placeMarcatoBelow
void placeMarcatoBelow(const GREvent *inParent, NVPoint &ioPos)
GRVisitor
Definition: GRVisitor.h:39
GRArticulation::kFlagAccent
Definition: GRArticulation.h:39
GRArticulation::placeFermataBelow
void placeFermataBelow(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::kFlagBow
Definition: GRArticulation.h:41
GRArticulation::placeBow
void placeBow(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::placeBowBelow
void placeBowBelow(const GREvent *inParent, NVPoint &ioPos)
GObject
The base class for all graphic objects.
Definition: GObject.h:54
GRArticulation::getPlacement
int getPlacement(const GREvent *inParent) const
GRArticulation::placeFermataAbove
void placeFermataAbove(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::getReferencePosition
virtual const NVPoint & getReferencePosition() const
Retrieves the Symbol-reference-position with respect to the GUIDO-reference-position.
ARBow
String specific: bowing.
Definition: ARBow.h:43
GREvent
Graphical representation for an event (= has duration).
Definition: GREvent.h:61
GRArticulation::kFlagMarcatoUp
Definition: GRArticulation.h:39
GRArticulation::compare
static bool compare(GRArticulation *i, GRArticulation *j)
Definition: GRArticulation.h:60
NVPoint
Definition: NVPoint.h:20
GRArticulation::tellPosition
virtual void tellPosition(GObject *caller, const NVPoint &inPos)
GRArticulation::placeBowAbove
void placeBowAbove(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::print
void print(std::ostream &os) const
GRArticulation::placeMarcato
void placeMarcato(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::placeStaccato
void placeStaccato(const GREvent *inParent, NVPoint &ioPos)
GRStaff
A GRStaff represents a single line of music.
Definition: GRStaff.h:181
GRArticulation::kFlagHarmonic
Definition: GRArticulation.h:41
GRArticulation::kFlagMarcatoDown
Definition: GRArticulation.h:40
GRArticulation::OnDraw
virtual void OnDraw(VGDevice &hdc) const
GRArticulation::placeAccentAbove
void placeAccentAbove(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::placeHarmonic
void placeHarmonic(const GREvent *inParent, NVPoint &ioPos)
VGDevice
Generic platform independant drawing device.
Definition: VGDevice.h:68
GRArticulation::sOrdering
static std::map< int, int > sOrdering
Definition: GRArticulation.h:87
GRArticulation::accept
virtual void accept(GRVisitor &visitor)
GRArticulation::kFlagStaccmo
Definition: GRArticulation.h:38
GRArticulation::kFlagPizz
Definition: GRArticulation.h:41
GRArticulation::kFlagFermataUp
Definition: GRArticulation.h:40
GRArticulation::getArticulationType
int getArticulationType() const
Definition: GRArticulation.h:57
GRTagARNotationElement
GRTagARNotationElement.
Definition: GRTagARNotationElement.h:26
GRArticulation::placePizz
void placePizz(const GREvent *inParent, NVPoint &ioPos)
ARMusicalTag
The base class for all musical tag classes.
Definition: ARMusicalTag.h:34
GRArticulation::kFlagBreathMark
Definition: GRArticulation.h:41
GRArticulation::kFlagMarcato
Definition: GRArticulation.h:39
GRArticulation::~GRArticulation
virtual ~GRArticulation()
Definition: GRArticulation.h:45
GRArticulation::GRArticulation
GRArticulation(const ARMusicalTag *inTag, float curLSPACE, bool ownsar=false)
GRArticulation
Articulations: staccato, accent, marcato, tenuto, fermata, breath-mark, harmonics.
Definition: GRArticulation.h:35
GRArticulation::placeStaccmo
void placeStaccmo(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::kFlagStaccato
Definition: GRArticulation.h:38
GRArticulation::mArticulationFlag
int mArticulationFlag
Definition: GRArticulation.h:85
GRArticulation::placeAccent
void placeAccent(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::placeTenuto
void placeTenuto(const GREvent *inParent, NVPoint &ioPos)
GRArticulation::kFlagFermataDown
Definition: GRArticulation.h:40
GRArticulation::setPosition
virtual void setPosition(const NVPoint &point)
GRArticulation::placeMarcatoAbove
void placeMarcatoAbove(const GREvent *inParent, NVPoint &ioPos)

Guido Project Copyright © 2019 Grame-CNCM