GUIDOLib  1.7.7
Guido Engine Internal Documentation
GRPositionTag.h
1 #ifndef GRPositionTag_H
2 #define GRPositionTag_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 "GRTag.h"
19 #include "kf_ilist.h"
20 
21 class GRSystem;
22 class GRNotationElement;
23 
33 {
34  public:
36 
38  virtual ~GRSystemStartEndStruct();
39 
43 
46 
47  // these give the position in the associated lists ...
48  // so that the tag later knows, where it's sub-parts start and end.
49  GuidoPos startpos = 0;
50  GuidoPos endpos = 0;
51  void * p = 0;
52 };
53 
55 
56 // the position tag owns this list.
57 
65 class GRPositionTag : public GRTag
66 {
67  public:
68  class GRSaveStruct
69  {
70  public:
72  virtual ~GRSaveStruct() {};
73  };
74 
75  GRPositionTag(const ARMusicalTag * armt = 0);
76  GRPositionTag(GuidoPos p_ep, const ARMusicalTag * armt = 0);
77  virtual ~GRPositionTag() {}
78 
79 
80  virtual void ResumeTag(GRStaff * grstaff, GuidoPos assocpos);
81  virtual void BreakTag(GRStaff * grstaff, GuidoPos & assocpos);
82  virtual void StaffBegin(GRStaff * grstaff = 0);
83  virtual void StaffFinished(GRStaff * grstaff = 0);
84  virtual void FinishPTag (GRStaff *) {}
85  virtual void RangeEnd(GRStaff * grstaff = 0);
86  virtual bool DeleteStaff(GRStaff * grstaff);
87 
88  void changeCurrentSystem(GRSystem * psystem);
89  void DeleteAllSSEs();
90 
91  GuidoPos getEndPos() const { return fEndPos; }
92 
95 
96  protected:
97 
98  virtual void setStartElement(const GRStaff * grstaff, GRNotationElement * n_element);
99  virtual void setEndElement(const GRStaff * grstaff, GRNotationElement * n_element);
100  virtual void addAssociation(GRNotationElement * grnot);
101  virtual void removeAssociation(GRNotationElement * grnot);
102 
104 
105  SSEList mStartEndList; // the Range tag Start-End List
106 
109  GuidoPos lastendpos;
110 
111  private:
112  GuidoPos fEndPos = nullptr;
113 
114 };
115 
116 
117 #endif
GRSystemStartEndStruct::startElement
GRNotationElement * startElement
Definition: GRPositionTag.h:41
GRPositionTag::lastendpos
GuidoPos lastendpos
Definition: GRPositionTag.h:109
GRSystemStartEndStruct::setflag
setflag
Definition: GRPositionTag.h:35
GRPositionTag::~GRPositionTag
virtual ~GRPositionTag()
Definition: GRPositionTag.h:77
GRPositionTag::addSystemStartEndStruct
void addSystemStartEndStruct(GRSystemStartEndStruct *sse)
Definition: GRPositionTag.h:94
GRSystemStartEndStruct
This class is used to determine when a position tag ends.
Definition: GRPositionTag.h:32
KF_List::AddTail
GuidoPos AddTail(TYPE data)
Definition: kf_list.h:78
GRSystemStartEndStruct::startpos
GuidoPos startpos
Definition: GRPositionTag.h:49
GRSystemStartEndStruct::~GRSystemStartEndStruct
virtual ~GRSystemStartEndStruct()
GRPositionTag::DeleteStaff
virtual bool DeleteStaff(GRStaff *grstaff)
GRPositionTag::setStartElement
virtual void setStartElement(const GRStaff *grstaff, GRNotationElement *n_element)
GRPositionTag::DeleteAllSSEs
void DeleteAllSSEs()
GRSystemStartEndStruct::p
void * p
Definition: GRPositionTag.h:51
GRPositionTag::RangeEnd
virtual void RangeEnd(GRStaff *grstaff=0)
GRNotationElement
parent class for all notation elements.
Definition: GRNotationElement.h:54
GRPositionTag::GRSaveStruct::GRSaveStruct
GRSaveStruct()
Definition: GRPositionTag.h:71
GRSystemStartEndStruct::GRSystemStartEndStruct
GRSystemStartEndStruct()
Definition: GRPositionTag.h:37
GRSystemStartEndStruct::RIGHTMOST
Definition: GRPositionTag.h:35
GRSystemStartEndStruct::LEFTMOST
Definition: GRPositionTag.h:35
GRPositionTag::GRSaveStruct
Definition: GRPositionTag.h:68
GRStaff
A GRStaff represents a single line of music.
Definition: GRStaff.h:181
GRPositionTag::FinishPTag
virtual void FinishPTag(GRStaff *)
Definition: GRPositionTag.h:84
GRPositionTag::GRSaveStruct::~GRSaveStruct
virtual ~GRSaveStruct()
Definition: GRPositionTag.h:72
KF_IPointerList< GRSystemStartEndStruct >
GRSystemStartEndStruct::endpos
GuidoPos endpos
Definition: GRPositionTag.h:50
GRPositionTag::changeCurrentSystem
void changeCurrentSystem(GRSystem *psystem)
GRSystemStartEndStruct::OPENLEFT
Definition: GRPositionTag.h:35
GRPositionTag
The GRPositionTag is the base class for representing range tags.
Definition: GRPositionTag.h:65
GRPositionTag::StaffBegin
virtual void StaffBegin(GRStaff *grstaff=0)
GRSystemStartEndStruct::grsystem
GRSystem * grsystem
Definition: GRPositionTag.h:40
GRSystemStartEndStruct::NOTKNOWN
Definition: GRPositionTag.h:35
GRPositionTag::getNewGRSaveStruct
virtual GRPositionTag::GRSaveStruct * getNewGRSaveStruct()
Definition: GRPositionTag.h:103
GRPositionTag::GRPositionTag
GRPositionTag(const ARMusicalTag *armt=0)
GRPositionTag::StaffFinished
virtual void StaffFinished(GRStaff *grstaff=0)
GRSystemStartEndStruct::startflag
setflag startflag
Definition: GRPositionTag.h:44
ARMusicalTag
The base class for all musical tag classes.
Definition: ARMusicalTag.h:34
GRPositionTag::lastendflag
GRSystemStartEndStruct::setflag lastendflag
Definition: GRPositionTag.h:107
GRPositionTag::getEndPos
GuidoPos getEndPos() const
Definition: GRPositionTag.h:91
GRSystemStartEndStruct::endElement
GRNotationElement * endElement
Definition: GRPositionTag.h:42
GRTag
The GRTag class is the base class for all GUIDO tags.
Definition: GRTag.h:37
GRPositionTag::addAssociation
virtual void addAssociation(GRNotationElement *grnot)
GRPositionTag::ResumeTag
virtual void ResumeTag(GRStaff *grstaff, GuidoPos assocpos)
GRPositionTag::lastendElement
GRNotationElement * lastendElement
Definition: GRPositionTag.h:108
GRSystem
Manages a number of staffs and has a given start and end timeposition. GRSystem is the grafical repre...
Definition: GRSystem.h:52
GRPositionTag::setEndElement
virtual void setEndElement(const GRStaff *grstaff, GRNotationElement *n_element)
GRPositionTag::removeAssociation
virtual void removeAssociation(GRNotationElement *grnot)
GRSystemStartEndStruct::endflag
setflag endflag
Definition: GRPositionTag.h:45
GRPositionTag::getSystemStartEndStruct
GRSystemStartEndStruct * getSystemStartEndStruct(const GRSystem *grsystem) const
GRPositionTag::mStartEndList
SSEList mStartEndList
Definition: GRPositionTag.h:105
GRSystemStartEndStruct::OPENRIGHT
Definition: GRPositionTag.h:35
GRPositionTag::BreakTag
virtual void BreakTag(GRStaff *grstaff, GuidoPos &assocpos)

Guido Project Copyright © 2019 Grame-CNCM