GUIDOLib  1.7.7
Guido Engine Internal Documentation
GRText.h
1 #ifndef GRText_H
2 #define GRText_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 <string>
19 #include <vector>
20 
21 #include "GRVisitor.h"
22 #include "GRPTagARNotationElement.h"
23 
24 class ARText;
25 class GRStaff;
26 class GRRod;
27 class VGFont;
28 
35 {
36  FloatRect fTextRect;
37 
38  public:
40  {
41  public:
43  virtual ~GRTextSaveStruct() {};
44 
47  std::string text;
48  };
49 
50  GRText( GRStaff *, const ARText * abstractRepresentationOfText );
51  virtual ~GRText();
52 
53  virtual void accept (GRVisitor& visitor);
54  virtual void removeAssociation( GRNotationElement * el );
55  virtual void tellPosition( GObject * caller, const NVPoint & inPosition );
56  virtual void addAssociation( GRNotationElement * el );
57 
58  virtual void OnDraw( VGDevice & hdc ) const;
59 
60  virtual FloatRect getTextMetrics(VGDevice & hdc, const GRStaff* staff) const;
61  virtual float getLineHeight(VGDevice & hdc) const;
62  const ARText * getARText() const;
63 
64  virtual unsigned int getTextAlign() const { return mTextAlign; }
65 
66  virtual float getLeftSpace() const;
67  virtual float getRightSpace() const;
68 
69  virtual void setPosition(const NVPoint & inPosition );
70  virtual void setHPosition( float nx );
71  void mustFollowPitch( bool flag ) { mMustFollowPitch = flag; }
72 
73  virtual bool checkCollisionWith() const { return true; }
74  virtual bool isLyrics() const;
75  virtual const GRText* isText() const { return this; }
76 
77  protected:
78  virtual const VGColor startDraw( VGDevice & hdc, unsigned int& fontalign ) const;
79  virtual void endDraw( VGDevice & hdc, const VGColor, unsigned int fontalign) const;
80 
82  { return new GRTextSaveStruct; }
83 
84  unsigned int mTextAlign;
85  bool mMustFollowPitch; // (when the text tag has a range)
86  float mStaffBottom;
87  float fLineHeight = 0.f;
88 
89  private:
90  std::vector<std::string> fSubstrings;
91  const VGFont* fFont;
92 };
93 
94 #endif
95 
GRText::setHPosition
virtual void setHPosition(float nx)
GRVisitor
Definition: GRVisitor.h:39
GRText::mStaffBottom
float mStaffBottom
Definition: GRText.h:86
GRText::getNewGRSaveStruct
virtual GRPositionTag::GRSaveStruct * getNewGRSaveStruct()
Definition: GRText.h:81
GRText::mustFollowPitch
void mustFollowPitch(bool flag)
Definition: GRText.h:71
GRText::getTextAlign
virtual unsigned int getTextAlign() const
Definition: GRText.h:64
GRText::tellPosition
virtual void tellPosition(GObject *caller, const NVPoint &inPosition)
GRText::removeAssociation
virtual void removeAssociation(GRNotationElement *el)
GObject
The base class for all graphic objects.
Definition: GObject.h:54
GRText::GRTextSaveStruct::~GRTextSaveStruct
virtual ~GRTextSaveStruct()
Definition: GRText.h:43
GRText::checkCollisionWith
virtual bool checkCollisionWith() const
Definition: GRText.h:73
GRText::GRTextSaveStruct::GRTextSaveStruct
GRTextSaveStruct()
Definition: GRText.h:42
GRText::getLeftSpace
virtual float getLeftSpace() const
GRNotationElement
parent class for all notation elements.
Definition: GRNotationElement.h:54
GRRod
Used with springs and space-force functions.
Definition: GRRod.h:33
NVPoint
Definition: NVPoint.h:20
GRText::accept
virtual void accept(GRVisitor &visitor)
GRText::getRightSpace
virtual float getRightSpace() const
GRText::addAssociation
virtual void addAssociation(GRNotationElement *el)
GRPositionTag::GRSaveStruct
Definition: GRPositionTag.h:68
GRText
A text string.
Definition: GRText.h:34
GRText::GRTextSaveStruct
Definition: GRText.h:39
GRStaff
A GRStaff represents a single line of music.
Definition: GRStaff.h:181
GRText::getTextMetrics
virtual FloatRect getTextMetrics(VGDevice &hdc, const GRStaff *staff) const
GRPTagARNotationElement
not yet documented
Definition: GRPTagARNotationElement.h:25
GRText::startDraw
virtual const VGColor startDraw(VGDevice &hdc, unsigned int &fontalign) const
GRText::fLineHeight
float fLineHeight
Definition: GRText.h:87
GRText::GRTextSaveStruct::boundingBox
NVRect boundingBox
Definition: GRText.h:46
VGDevice
Generic platform independant drawing device.
Definition: VGDevice.h:68
VGColor
Generic class to manipulate device independant colors.
Definition: VGColor.h:34
GRText::setPosition
virtual void setPosition(const NVPoint &inPosition)
GRText::mTextAlign
unsigned int mTextAlign
Definition: GRText.h:84
GRText::OnDraw
virtual void OnDraw(VGDevice &hdc) const
GRText::isLyrics
virtual bool isLyrics() const
GRText::~GRText
virtual ~GRText()
GRText::GRTextSaveStruct::text
std::string text
Definition: GRText.h:47
GRText::getLineHeight
virtual float getLineHeight(VGDevice &hdc) const
GRText::GRTextSaveStruct::position
NVPoint position
Definition: GRText.h:43
NVRect
Definition: NVRect.h:22
GRText::getARText
const ARText * getARText() const
GRText::endDraw
virtual void endDraw(VGDevice &hdc, const VGColor, unsigned int fontalign) const
VGFont
Generic pure virtual & device-independant font class.
Definition: VGFont.h:36
GRText::mMustFollowPitch
bool mMustFollowPitch
Definition: GRText.h:85
ARText
The text tag.
Definition: ARText.h:49
TRect< float >
GRText::GRText
GRText(GRStaff *, const ARText *abstractRepresentationOfText)
GRText::isText
virtual const GRText * isText() const
Definition: GRText.h:75

Guido Project Copyright © 2019 Grame-CNCM