Urbanisme  1.3.0
Projet visant à l'optimisation du placement de routes sur une surface. https://flodavid.github.io/Urbanisme
fieldview.hpp
1 #pragma once
2 
3 #include <QtWidgets/QWidget>
4 #include <QtWidgets/QRubberBand>
5 #include <QtWidgets/QProgressBar>
6 #include <QtGui/QImage>
7 #include <QtGui/QPainter>
8 #include <QtGui/QColor>
9 #include <QtGui/qevent.h>
10 
11 #include <vector>
12 #include <fstream>
13 
14 // Macros
15 #include "../debug.h"
16 #include "../stdafx.h"
17 
18 // Classes
19 #include "fieldevaluation.h"
20 #include "loadwindow.h"
21 
22 enum Colors{Black, Gray, Red, White, LightBlue, DarkBlue};
23 //enum Actions{};
24 
31 class FieldWidget : public QWidget {
32 // Q_OBJECT
33 private:
34  Field* field;
35  unsigned serveDistance;
36 
37  QImage* buffer;
38  QColor* color;
39  QPainter* bufferPainter;
40  QRubberBand* rubber;
41 
42 // QPoint origin;
43 
44  // Points de départ et d'arrivée de la zone de selection (redondance pour origine mais normal pour l'instant)
45 // QPoint depart;
46 // QPoint arrivee;
47 
48  qreal tailleCell;
49 // long temps;
50 // bool running;
51 
52  std::list<Coordinates> selecteds;
53 
54  // FLAGS
55  bool modified_ES;
56  bool has_evaluation;
57 
58 private:
59  void initRubber(QMouseEvent* event);
60 
61 public:
62  /* Constructeur et desctructeur */
69  FieldWidget(Field *_field, unsigned _serveDistance);
70  virtual ~FieldWidget();
71 
72  /* Getters */
78  { return field; }
79 
84  bool has_modified_ES() const { return modified_ES; }
85 
86  /* Setters */
91  void set_field(Field* _field)
92  { field= _field; has_evaluation= false;}
99  { field= _field; has_evaluation= true;}
100 
104  void set_unmodified_ES();
105 
106 private:
111  void setColor(Colors colorIndice);
119  void setColor(int r, int g, int b, int a = 255);
120 
121  /* Affichage */
122 private:
127  void drawCell(int colonne, int ligne);
132  void drawList(const std::list< Coordinates>& list_coordinates);
133 
137  void drawField();
138 public:
142  void drawHotmapField();
146  void drawChanged();
150  void drawSelecteds();
154  void redraw();
155 
156  /* Initialisations */
157 private:
158  LoadWindow* createProgressWindow() const;
159 
160  /* Gestion Sauvegardes */
166  bool trySaveImage(QString filename) const;
167 
168  /* Events */
169 private:
176  bool tryAddRoadOnParcel(const Coordinates& pos);
177 
182  void clicInOut(const Coordinates& pos);
188  void clicRoad(const Coordinates& pos);
193  void moveRoad(const Coordinates& pos);
201  void selectParcel(const Coordinates& pos);
202 
203 public slots:
207  void razRubber() { delete rubber; rubber= NULL; }
208 
209 protected:
210  void mousePressEvent(QMouseEvent *event);
211  void mouseMoveEvent(QMouseEvent *event);
212 // void mouseReleaseEvent(QMouseEvent *event);
213  void resizeEvent(QResizeEvent * event);
214  void paintEvent(QPaintEvent* event);
215 
216 public slots:
221 // void actionReceived(int x);
222 
223 signals:
227 // void releaseSignal(); // Vers ...
228 
229 };
La classe permettant de stocker une surface et de calculer et mettre à jour son évaluation.
Definition: fieldevaluation.h:12
void drawSelecteds()
void set_unmodified_ES()
Definition: fieldview.cpp:69
void update_field(FieldEvaluation *_field)
Definition: fieldview.hpp:98
Field * get_field()
Definition: fieldview.hpp:77
Permet d&#39;afficher une fenêtre avec une barre de progression pour les chargements Utilise la classe ab...
Definition: loadwindow.h:14
void drawChanged()
Definition: fieldview.cpp:248
Classe représentant la surface -le terrain- et contenant les opérations que l&#39;on effectue sur celui-c...
Definition: field.h:15
Widget d&#39;affichage de l&#39;automate cellulaire. Ce composant permet de suivre graphiquement l&#39;évolution ...
Definition: fieldview.hpp:31
bool has_modified_ES() const
Definition: fieldview.hpp:84
FieldWidget(Field *_field, unsigned _serveDistance)
Definition: fieldview.cpp:14
void razRubber()
Definition: fieldview.hpp:207
void redraw()
Definition: fieldview.cpp:263
void set_field(Field *_field)
Definition: fieldview.hpp:91
void drawHotmapField()
Definition: fieldview.cpp:142
Représentation et opérations simple sur des coordonnées dans un plan.
Definition: Coordinates.h:13
void mousePressEvent(QMouseEvent *event)
Definition: fieldview.cpp:450