This repository was archived by the owner on Apr 25, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmainscene.h
98 lines (83 loc) · 2.65 KB
/
mainscene.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
/****************************************************************************
** Aplicação utilizando algoritmos genéticos, foi utilizada como critério
** de avaliação para a disciplina de Inteligẽncia Artificial
**
** Ciência da Computação
** Universidade Federal do Tocantins - UFT/Palmas
**
** MapColorGA foi desenvolvido para a demonstração de algoritmos genéticos
** para resolver o problema de coloração de grafos.
** A parte interativa foi baseada no exemplo que a Nokia disponibiliza
** juntamente com o Qt e pode ser acessada neste link:
** http://doc.qt.nokia.com/4.7-snapshot/graphicsview-diagramscene.html
**
** Peço se você for utilizar este software mantenha o nome dos autores.
** Se for alterá-lo, adicione um issue no projeto contendo as alterações.
**
**
** Desenvolvido por: @herodrigues
** @marcos_raylan
**
**
**
****************************************************************************/
#ifndef MAINSCENE_H
#define MAINSCENE_H
#include <QGraphicsScene>
#include "ellipseitem.h"
#include <vector>
#include <string>
#include <map>
#include <utility>
using namespace std;
QT_BEGIN_NAMESPACE
class QGraphicsSceneMouseEvent;
class QMenu;
class QPointF;
class QGraphicsLineItem;
class QFont;
class QGraphicsTextItem;
class QColor;
QT_END_NAMESPACE
class MainScene : public QGraphicsScene
{
Q_OBJECT
public:
enum Mode { InsertItem, InsertLine, MoveItem, SendToFront, SendToBack };
MainScene(QMenu *itemMenu, QObject *parent = 0);
static multimap<int, int> myAdjMatrix;
static multimap<int, int> getAdjMatrix()
{ return myAdjMatrix; }
void setTotalVertices(int v)
{ totalVertices = v; }
void setTotalEdges(int e)
{ totalEdges = e; }
int getTotalEdges() const
{ return (myAdjMatrix.size() % 2) ? myAdjMatrix.size()/2 +1 : myAdjMatrix.size()/2 ; }
int getTotalVertices() const
{ return totalVertices; }
QColor itemColor() const
{ return myItemColor; }
void setItemColor(int numColor);
public slots:
void setMode(Mode mode);
signals:
void itemInserted(EllipseItem *item);
void itemSelected(QGraphicsItem *item);
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent);
void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent);
private:
void insertConnectionAdjMatrix(int id1, int id2);
bool isItemChange(int type);
QMenu *myItemMenu;
Mode myMode;
bool leftButtonDown;
QPointF startPoint;
QGraphicsLineItem *line;
QColor myItemColor;
int totalVertices;
int totalEdges;
};
#endif // MAINSCENE_H