-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglwidget.h
executable file
·198 lines (169 loc) · 3.82 KB
/
glwidget.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#ifndef GLWIDGET_H
#define GLWIDGET_H
#include <QGLWidget>
#include <QDate>
#include <QTime>
#include <QString>
#include <QDateTime>
#include <QTextStream>
#include <iostream>
#include "./data_classes_files/Task.h"
#include "./data_classes_files/Milestone.h"
#include <QHash>
class GLcoordinate
{
public:
GLdouble x ;
GLdouble y ;
};
class GLrectangle
{
public:
GLcoordinate ll ;
GLcoordinate ur ;
};
class GLviewpoint : public GLcoordinate
{
public:
GLfloat zoom ;
GLfloat aspectRatio ;
};
class taskElement
{
public:
int taskID ;
int rootID ;
int level ;
int criticalParent ;
int duration ;
bool started ;
bool finished ;
QDateTime estimatedStart ;
QDateTime actualStart ;
QList<int> parents ;
QList<int> children ;
QString name ;
void addChild(int);
void addParent(int);
};
class GLWidget : public QGLWidget
{
Q_OBJECT
public:
GLWidget(QWidget *parent = 0);
~GLWidget();
QSize minimumSizeHint() const;
QSize sizeHint() const;
public slots:
void buildTasks(QList<Task>);
void buildMilestones(QList<Milestone>);
void pan(GLcoordinate);
void select(GLcoordinate);
void zoomFit();
void zoomIn();
void zoomOut();
void panUp();
void panDown();
void panLeft();
void panRight();
void panUpRight();
void panDownRight();
void panUpLeft();
void panDownLeft();
void ganttMode();
void pertMode();
signals:
void message(const QString &);
void mouseLocation(double, double);
void popupMenu(const QPoint &);
protected:
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void wheelEvent( QWheelEvent *m );
private:
QList<Milestone> milestones ;
QList<taskElement> taskGraph;
void buildTaskGraph(QList<Task>);
void findRootStartTimes();
void updateChildStart(int, QDateTime, int, int);
int getTaskPosition(int);
double addGanttTask(int, double);
double addPertTask(int, double);
QList<int> tasksGanttDrawn;
QList<int> tasksPertDrawn;
void drawTaskBox(double start, double end, double y, double height, bool hasParents, bool hasChildren, QString name);
int furthestTime ;
double furthestDistance ;
double offset ;
double pushOut ;
QDateTime measuredTime ;
void draw();
GLviewpoint view;
GLcoordinate worldMouse;
GLcoordinate center;
GLcoordinate increment;
GLcoordinate diff;
int atX;
int atY;
int diffX ;
int diffY ;
GLdouble shiftScale, zoomScale ;
GLfloat fadeThreshold ;
GLfloat axisThreshold ;
GLfloat brightness ;
GLfloat fade ;
GLfloat gamma ;
GLdouble baseGrid ;
GLdouble grid ;
double gridXMin, gridXMax, gridYMin, gridYMax;
double mouseGrid ;
GLrectangle window;
int windowX ;
int windowY ;
GLint viewport[4];
GLdouble mvmatrix[16], projmatrix[16];
GLrectangle world;
GLdouble wz;
GLdouble monthLineY ;
GLdouble dayLineY ;
GLdouble markerY ;
GLdouble markerDiff ;
GLdouble characterHeight ;
GLdouble ganttHeight ;
GLdouble pertHeight ;
GLrectangle ganttBoundary ;
GLrectangle pertBoundary ;
GLrectangle fitBoundary ;
int displayLists ;
GLuint displayListStart;
bool pert ;
void drawGanttChart();
void drawPertChart();
void drawGrid();
void drawAxis();
void drawGanttBackground();
void drawMilestones();
void drawCalendar();
void drawCalendarHeader();
void drawDateAxis();
void drawMilestoneMarker(GLfloat x);
void drawMilestoneTriangle(GLfloat x);
void drawDateMarker(GLfloat x);
void drawMarkerTriangle(GLfloat x);
void drawDayLabel(GLfloat x, GLfloat y, QDate date);
void drawMonthLabel(GLfloat x, GLfloat y, QDate date);
void drawToday();
void drawGanttGraph();
void drawPertGraph();
QDate today ;
QDateTime todayTime ;
QTime time ;
QDate graphMark ;
QDate graphStart ;
QDate graphStop ;
friend class Kernel;
};
#endif