GUIDOLib  1.7.7
Guido Engine Internal Documentation
GRMeter.h
1 #ifndef GRMeter_H
2 #define GRMeter_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 <utility>
19 
20 #include "ARMeter.h"
21 #include "GRTagARNotationElement.h"
22 #include "GRDefine.h"
23 //#include "GRVisitor.h"
24 
25 class GRStaff;
26 
27 
31 {
32 
33  public:
34  GRMeter(const ARMeter * ar, GRStaff * curstaff, bool p_ownsAR = false);
35  virtual ~GRMeter() {}
36 
37  virtual void OnDraw(VGDevice & hdc ) const;
38  virtual bool checkCollisionWith() const { return true; }
39  virtual void accept (GRVisitor& visitor);
40  virtual void GetMap( GuidoElementSelector sel, MapCollector& f, MapInfos& infos ) const;
41  virtual void setHPosition( float inX );
42 
43  const ARMeter* getARMeter() const;
44 
45 
46  private:
47  ARMeter::metertype fType;
48  const std::vector<Fraction>& fMeters;
49  float fCurLSPACE;
50  float fNumericHeight; // height of a numeric glyph
51  bool fGroupComplex; // complex meter grouping flag
52 
53  typedef std::pair<std::string,std::string> TSingleMeter;
54 
55  const std::vector<Fraction>& getMeters() const { return fMeters; }
56  std::pair<float,float> GetXOffsets(VGDevice & hdc, const std::string& num, const std::string& dnum) const;
57  std::vector<TSingleMeter> meters2metersStr(const std::vector<Fraction>& meters) const;
58 
59  float DrawNumericSingle(VGDevice & hdc, const std::string& num, const std::string& dnum, float x ) const;
60  void DrawNumericSeveral(VGDevice & hdc ) const;
61  std::string makeNumeratorString (const std::vector<Fraction>& meters) const;
62  std::string makeDenominatorString (const std::vector<Fraction>& meters) const;
63  NVRect computeBoundingBox (VGDevice* hdc) const;
64  NVRect computeBoundingBox (VGDevice* hdc, const std::string& numStr) const;
65  NVRect computeBoundingBox (VGDevice* hdc, const std::string& numStr, const std::string& dnumStr) const;
66 };
67 
68 
69 #endif
70 
GRVisitor
Definition: GRVisitor.h:39
MapCollector
an abstract class to be provided by clients to collect mappings
Definition: GUIDOScoreMap.h:109
ARMeter
not yet documented
Definition: ARMeter.h:64
GRMeter::GRMeter
GRMeter(const ARMeter *ar, GRStaff *curstaff, bool p_ownsAR=false)
MapInfos
A class to propagate device related information.
Definition: GObject.h:42
GRMeter::OnDraw
virtual void OnDraw(VGDevice &hdc) const
GRStaff
A GRStaff represents a single line of music.
Definition: GRStaff.h:181
GRMeter::GetMap
virtual void GetMap(GuidoElementSelector sel, MapCollector &f, MapInfos &infos) const
GRMeter::checkCollisionWith
virtual bool checkCollisionWith() const
Definition: GRMeter.h:38
VGDevice
Generic platform independant drawing device.
Definition: VGDevice.h:68
GRMeter::accept
virtual void accept(GRVisitor &visitor)
GRMeter::setHPosition
virtual void setHPosition(float inX)
GRTagARNotationElement
GRTagARNotationElement.
Definition: GRTagARNotationElement.h:26
NVRect
Definition: NVRect.h:22
GuidoElementSelector
GuidoElementSelector
Definition: GUIDOScoreMap.h:40
GRMeter::getARMeter
const ARMeter * getARMeter() const
GRMeter
Meter notation tag.
Definition: GRMeter.h:30
ARMeter::metertype
metertype
Definition: ARMeter.h:67
GRMeter::~GRMeter
virtual ~GRMeter()
Definition: GRMeter.h:35

Guido Project Copyright © 2019 Grame-CNCM