/[projects]/queensgui/src/board.cpp
ViewVC logotype

Diff of /queensgui/src/board.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3 by torben, Thu Jul 19 21:34:15 2007 UTC revision 4 by torben, Thu Jul 19 23:44:01 2007 UTC
# Line 27  Line 27 
27  Board::Board(QWidget *parent, const char *name)  Board::Board(QWidget *parent, const char *name)
28   : QWidget(parent, name)   : QWidget(parent, name)
29  {  {
30          m_hasData = false;          m_sol = NULL;
31  }  }
32    
33    
34  Board::~Board()  Board::~Board()
35  {  {
36            if (m_sol != NULL)
37                    delete m_sol;
38  }  }
39    
40  void Board::setMatrix(Solution sol)  void Board::setMatrix(Solution* sol)
41  {  {
42          m_hasData = true;          if (sol != NULL)
43          m_sol = sol;                  m_sol = sol->copy();
44            
45          this->repaint(true);          this->repaint(true);
46  }  }
47    
48  void Board::setMatrix(IntSolution sol)  void Board::setMatrix(IntSolution sol)
49  {  {
50    #warning need a closer look
51    /*
52          m_hasData = true;          m_hasData = true;
53          m_sol = Solution();          m_sol = Solution();
54          for (int i=0;i<m_size;i++)          for (int i=0;i<m_size;i++)
55                  m_sol.matrix[i][ sol.imatrix[i] ] = true;                  m_sol.matrix[i][ sol.imatrix[i] ] = true;
56          this->repaint(true);          this->repaint(true);
57    */
58  }  }
59    
60    
# Line 60  void Board::paintEvent( QPaintEvent *eve Line 66  void Board::paintEvent( QPaintEvent *eve
66                  p.drawLine(i*30, 0, i*30, m_size*30);                  p.drawLine(i*30, 0, i*30, m_size*30);
67          }          }
68                    
69          if (m_hasData) {          if (m_sol != NULL) {
70                  QBrush brush( black);                  QBrush brush( black);
71                  p.setBrush( brush );                  p.setBrush( brush );
72                  for (int i=0; i<m_size; i++)                  for (int i=0; i<m_size; i++)
73                          for (int j=0; j<m_size; j++) {                          for (int j=0; j<m_size; j++) {
74                                  if (m_sol.matrix[i][j])                                  if (m_sol->getMatrix(i,j))
75                                          p.drawPie( (i*30)+10, (j*30)+10, 10, 10 ,0, 16*360);                                          p.drawPie( (i*30)+10, (j*30)+10, 10, 10 ,0, 16*360);
76                          }                          }
77          }          }
# Line 92  void Board::mousePressEvent( QMouseEvent Line 98  void Board::mousePressEvent( QMouseEvent
98                  starty = stopy = y;                  starty = stopy = y;
99                  startx = stopx = x;                  startx = stopx = x;
100                    
101                  // første skrå linie                  // f�rste skr� linie
102                  while (startx > 0 && starty > 0) {                  while (startx > 0 && starty > 0) {
103                          startx--;                          startx--;
104                          starty--;                          starty--;
# Line 104  void Board::mousePressEvent( QMouseEvent Line 110  void Board::mousePressEvent( QMouseEvent
110                  }                  }
111                  p.drawLine(QPoint( (startx*30)+5, (starty*30)+5), QPoint( (stopx*30)+25, (stopy*30)+25));                  p.drawLine(QPoint( (startx*30)+5, (starty*30)+5), QPoint( (stopx*30)+25, (stopy*30)+25));
112                    
113                  //næste skrå linie                  //n�ste skr� linie
114                  startx = stopx = x;                  startx = stopx = x;
115                  starty = stopy = y;                      starty = stopy = y;    
116                  while (startx > 0 && starty < (m_size-1) ) {                  while (startx > 0 && starty < (m_size-1) ) {
# Line 122  void Board::mousePressEvent( QMouseEvent Line 128  void Board::mousePressEvent( QMouseEvent
128    
129  void Board::setSize( int size )  void Board::setSize( int size )
130  {  {
131          m_hasData = false;          if (m_sol != NULL)
132            {
133                    delete m_sol;
134                    m_sol = NULL;
135            }
136          m_size = size;          m_size = size;
137          this->setMaximumSize( (size * 30)+1, (size * 30)+1 );          this->setMaximumSize( (size * 30)+1, (size * 30)+1 );
138          this->setMinimumSize( size * 30, size * 30);          this->setMinimumSize( size * 30, size * 30);
# Line 130  void Board::setSize( int size ) Line 140  void Board::setSize( int size )
140    
141  void Board::contextMenuEvent( QContextMenuEvent *event)  void Board::contextMenuEvent( QContextMenuEvent *event)
142  {  {
143            if (m_sol == NULL)
144                    return;
145            
146          QPopupMenu *contextMenu = new QPopupMenu( this );          QPopupMenu *contextMenu = new QPopupMenu( this );
147          contextMenu->setCheckable( false );          contextMenu->setCheckable( false );
148          contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) );          contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) );
# Line 143  void Board::contextMenuEvent( QContextMe Line 156  void Board::contextMenuEvent( QContextMe
156    
157  void Board::rotateLeft()  void Board::rotateLeft()
158  {  {
159          m_sol.rotate90();          m_sol->rotate90();
160          repaint( true );          repaint( true );
161  }  }
162    
163  void Board::rotateRight()  void Board::rotateRight()
164  {  {
165          m_sol.rotate90();          m_sol->rotate90();
166          m_sol.rotate90();          m_sol->rotate90();
167          m_sol.rotate90();          m_sol->rotate90();
168          repaint( true );          repaint( true );
169  }  }
170    
171  void Board::mirrorV()  void Board::mirrorV()
172  {  {
173          m_sol.mirror();          m_sol->mirror();
174          repaint( true );          repaint( true );
175  }  }
176    
177  void Board::mirrorH()  void Board::mirrorH()
178  {  {
179          m_sol.mirror();          m_sol->mirror();
180          m_sol.rotate90();          m_sol->rotate90();
181          m_sol.rotate90();          m_sol->rotate90();
182          repaint( true );          repaint( true );
183  }  }

Legend:
Removed from v.3  
changed lines
  Added in v.4

  ViewVC Help
Powered by ViewVC 1.1.20