00001 #ifndef MEASUREGR_H
00002 #define MEASUREGR_H
00003 #include <qptrlist.h>
00004 #include <qvaluelist.h>
00005 #include "../MS/MusicSymbol.h"
00006 #include "../kernel/MeasureMC.h"
00007 #include "../config.h"
00008 #include "Collision.h"
00009 #include "StaffSection.h"
00010 #include "Constraint.h"
00011 #include "AssoMCMS.h"
00012 #include "Container.h"
00013 #include "Graphical.h"
00014 #define BEFOREFIRSTPASS 0
00015 #define AFTERFIRSTPASS 1
00016 #define AFTERSECONDPASS 2
00017
00027 class
00028 MeasureGr: public Graphical{
00029 MeasureMusic * measure;
00030 bool firstOfLine;
00031 bool isFirstPass;
00032 int status;
00033 QList<StaffSectionGr> staffSections;
00034 Constraint *constraint;
00035 AssoMCMS * assoMCMS;
00036 StemGroupsMC stemGroups;
00037 AttributesMusic * attributes;
00038
00039
00040 QList<MusicSymbol> * symbols;
00041
00042
00043 #ifdef DEBUGCOLLISION
00044 QList<MusicSymbol> collisionSymbols;
00045 #endif
00046
00047 int partIndex;
00048 int lineIndex;
00049 int pageNumber;
00050 int measureSectionIndex;
00051 QString partName;
00052 QList<Collision> collisions;
00053
00054
00055 void buildStemGroups();
00056 void buildDecorations();
00057 void buildSimpleStems();
00058 void buildNotes();
00059 void buildDirections();
00060 void buildAlterations();
00061 void buildStaffAttributes(StaffSectionGr *);
00062 void buildTimedStaffAttributes(AttributesMusic *);
00063 void buildStaffSymbol(StaffSectionGr *);
00064
00065 public:
00066 MeasureMusic * getMeasureMC();
00067 void firstPass();
00068 void secondPass();
00069
00070 MeasureGr(Constraint *,Container * container,MeasureMusic *,AssoMCMS *,int measureSectionIndex,int partIndex,int lineIndex,int pgnb);
00071 double getHeight();
00072 void computeCollision();
00073 void alterationCollisionDetection(MusicSymbol *);
00074 void collisionFix();
00075 void closeMeasure();
00076 void paint();
00077 };
00078 #endif