My Project
grid.h
1 /***************************************************************************
2 ** **
3 ** GridView, a simple GridView made with Qt4 **
4 ** Copyright (C) 2013 Sacha Schutz **
5 ** **
6 ** This program is free software: you can redistribute it and/or modify **
7 ** it under the terms of the GNU General Public License as published by **
8 ** the Free Software Foundation, either version 3 of the License, or **
9 ** (at your option) any later version. **
10 ** **
11 ** This program is distributed in the hope that it will be useful, **
12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of **
13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the **
14 ** GNU General Public License for more details. **
15 ** **
16 ** You should have received a copy of the GNU General Public License **
17 ** along with this program. If not, see http://www.gnu.org/licenses/. **
18 ** **
19 ****************************************************************************
20 ** Author : Sacha Schutz **
21 ** Website: http://www.labsquare.org **
22 ** Email : sacha@labsquare.org **
23 ** Date : 12.03.12 **
24 ****************************************************************************/
25 
26 #ifndef GRIDVIEW_H
27 #define GRIDVIEW_H
28 
29 #include <QtGui>
30 #include <QWidget>
31 #include <QScrollArea>
32 #include <QVector>
33 
34 class GridWidget;
35 
42 class GridWidget : public QWidget
43 {
44  Q_OBJECT
45 public:
46 
58  explicit GridWidget(int rowCount = 100, int columnCount =100,QWidget *parent = 0);
59 
80  GridWidget(QWidget *parent);
81 
91  void setGridSize(int rowCount, int columnCount);
92 
106  void switchOn(int x,int y, const QColor& color);
107 
119  QColor getCellColor(int x, int y) ;
120 
121 
133  void switchOff(int x, int y);
134 
135 
143  int getGridColumns() ;
144 
152  int getGridRows() ;
153 
159  void clear();
160 
168  void setCellSize(int size);
169 
177  void setTool(QString tool);
178 
186  void setFront(QString front);
187 
195  void setBack(QString back);
196 
204  void setToolSize(int size);
205 
223  void identifyTool(QString tool, int x, int y);
224 
238  void Dot(int x, int y, QColor colorSelected);
239 
257  void RowMajorFill(int x, int y, QColor colorClicked, QColor toolColor);
258 
276  void ColMajorFill(int x, int y, QColor colorClicked, QColor toolColor);
277 
295  void DiagonalLeft(int x, int y, QColor colorClicked, QColor toolColor);
296 
314  void DiagonalRight(int x, int y, QColor colorClicked, QColor toolColor);
315 
331  void square(int x, int y, QColor toolColor, int toolSize);
332 
348  void triangle(int x, int y, QColor toolColor, int toolSize);
349 
365  void circle(int x, int y, QColor toolColor, int toolSize);
366 
376  void undo();
377 
378 
387  void redo();
388 
389 protected:
390 
402  void drawGrid(QPaintDevice * device);
403 
413  virtual void paintEvent(QPaintEvent *);
414 
425  virtual void mousePressEvent(QMouseEvent *);
426 
427 signals:
428 
429  void cellClicked(QPoint pos);
430 
431  void canUndo(bool can);
432 
433  void canRedo(bool can);
434 
435 private:
436 
437  int mCellSize;
439  int mRowCount;
443  QPixmap mGridPix;
445  QHash<int, QColor > mColors;
448  QString Tool;
450  int ToolSize;
452  QColor frontColor;
454  QColor backColor;
456  QColor background;
458  QVector < QHash<int, QColor > > oldStates;
460  QVector < QHash<int, QColor > > newStates;
462 };
463 #endif // GRIDVIEW_H
QColor frontColor
Definition: grid.h:452
void Dot(int x, int y, QColor colorSelected)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta la celda con el color del tool...
Definition: tools.cpp:17
int mCellSize
Definition: grid.h:437
void circle(int x, int y, QColor toolColor, int toolSize)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta un circulo de el tamano y colo...
Definition: tools.cpp:243
int mColumnCount
Definition: grid.h:441
int getGridColumns()
Devuelve el numero de columnas en la cuadricula.
Definition: grid.cpp:302
QHash< int, QColor > mColors
Definition: grid.h:445
void setGridSize(int rowCount, int columnCount)
Ajusta el numero de columnas y fileas de la cuadricula.
Definition: grid.cpp:155
int ToolSize
Definition: grid.h:450
void DiagonalLeft(int x, int y, QColor colorClicked, QColor toolColor)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta (desde ese punto diagonal) la ...
Definition: tools.cpp:111
void triangle(int x, int y, QColor toolColor, int toolSize)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta un triangulo de el tamano y co...
Definition: tools.cpp:213
int getGridRows()
Devuelve el numero de filas en la cuadricula.
Definition: grid.cpp:313
void DiagonalRight(int x, int y, QColor colorClicked, QColor toolColor)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta (desde ese punto diagonal) la ...
Definition: tools.cpp:147
QVector< QHash< int, QColor > > oldStates
Definition: grid.h:458
int mRowCount
Definition: grid.h:439
QPixmap mGridPix
Definition: grid.h:443
void switchOn(int x, int y, const QColor &color)
Guarda el color y la posicion dados en el vector que representa las celdas pintadas en la cuadricula...
Definition: grid.cpp:271
void ColMajorFill(int x, int y, QColor colorClicked, QColor toolColor)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta (desde ese punto hacia la arri...
Definition: tools.cpp:75
void drawGrid(QPaintDevice *device)
Funcion que primero ajusta el tamano del widget de la cuadricula, luego pinta las celdas con el color...
Definition: grid.cpp:370
QColor backColor
Definition: grid.h:454
void switchOff(int x, int y)
Remueve la posicion dada del vector que representa las celdas pintadas en la cuadricula.
Definition: grid.cpp:328
void redo()
Definition: grid.cpp:245
QColor getCellColor(int x, int y)
Devuelve el color de la celda en la posicion (x,y)
Definition: grid.cpp:289
QString Tool
Definition: grid.h:448
void setTool(QString tool)
Ajusta la herramienta.
Definition: grid.cpp:109
void clear()
Limpa la cuadricula y la pone en su estado inicial.
Definition: grid.cpp:339
virtual void mousePressEvent(QMouseEvent *)
Cuando el raton (mouse) is marcada en una celda de la cuadricula obtiene las coordenadas x...
Definition: grid.cpp:186
QVector< QHash< int, QColor > > newStates
Definition: grid.h:460
void setFront(QString front)
Ajusta el color de la brocha.
Definition: grid.cpp:120
void square(int x, int y, QColor toolColor, int toolSize)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta un cuadrado de el tamano y col...
Definition: tools.cpp:181
void setToolSize(int size)
Ajusta el tamano de la herramienta.
Definition: grid.cpp:142
void setBack(QString back)
Ajusta el color del fondo.
Definition: grid.cpp:131
void setCellSize(int size)
Ajusta el tamano de las celdas de la cuadricula.
Definition: grid.cpp:354
void RowMajorFill(int x, int y, QColor colorClicked, QColor toolColor)
Recibe las coordenadas de la cuadricula donde el usuario marco y pinta (desde ese punto hacia la izq ...
Definition: tools.cpp:40
Definition: grid.h:42
QColor background
Definition: grid.h:456
void identifyTool(QString tool, int x, int y)
Esta funcion es llamada en cada evento de el mouse presionado dentro de la cuadricula. Identifica la forma en que el grid va a ser pintado llamando la funcion del tool recibido en los parametros (dot, rowfill, column fill, diagonal, square, triangles and circles).
Definition: grid.cpp:424
void undo()
Cuando el boton es apretado el estado acutual es empujado en el vector(newStates) de redo y el ultimo...
Definition: grid.cpp:214
virtual void paintEvent(QPaintEvent *)
Esta funcion es invocada automaticmente cada ves que el widget o el padre recibe una senal de repinta...
Definition: grid.cpp:170