/[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 1 by torben, Thu Jul 19 21:34:15 2007 UTC revision 6 by torben, Fri Jul 20 09:54:09 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  {  {
         m_hasData = true;  
         m_sol = sol;  
         this->repaint(true);  
 }  
42    
43  void Board::setMatrix(IntSolution sol)          if (m_sol != NULL)
44  {          {
45          m_hasData = true;                  delete m_sol;
46          m_sol = Solution();                  m_sol = NULL;
47          for (int i=0;i<m_size;i++)          }
48                  m_sol.matrix[i][ sol.imatrix[i] ] = true;          
49            if (sol != NULL)
50                    m_sol = sol->copy();
51            
52          this->repaint(true);          this->repaint(true);
53  }  }
54    
55    
56    
57  void Board::paintEvent( QPaintEvent *event )  void Board::paintEvent( QPaintEvent *event )
58  {  {
59          QPainter p (this);          QPainter p (this);
# Line 60  void Board::paintEvent( QPaintEvent *eve Line 62  void Board::paintEvent( QPaintEvent *eve
62                  p.drawLine(i*30, 0, i*30, m_size*30);                  p.drawLine(i*30, 0, i*30, m_size*30);
63          }          }
64                    
65          if (m_hasData) {          if (m_sol != NULL) {
66                  QBrush brush( black);                  QBrush brush( black);
67                  p.setBrush( brush );                  p.setBrush( brush );
68                  for (int i=0; i<m_size; i++)                  for (int i=0; i<m_size; i++)
69                          for (int j=0; j<m_size; j++) {                          for (int j=0; j<m_size; j++) {
70                                  if (m_sol.matrix[i][j])                                  if (m_sol->getMatrix(i,j))
71                                          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);
72                          }                          }
73          }          }
# Line 92  void Board::mousePressEvent( QMouseEvent Line 94  void Board::mousePressEvent( QMouseEvent
94                  starty = stopy = y;                  starty = stopy = y;
95                  startx = stopx = x;                  startx = stopx = x;
96                    
97                  // første skrå linie                  // f�rste skr� linie
98                  while (startx > 0 && starty > 0) {                  while (startx > 0 && starty > 0) {
99                          startx--;                          startx--;
100                          starty--;                          starty--;
# Line 104  void Board::mousePressEvent( QMouseEvent Line 106  void Board::mousePressEvent( QMouseEvent
106                  }                  }
107                  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));
108                    
109                  //næste skrå linie                  //n�ste skr� linie
110                  startx = stopx = x;                  startx = stopx = x;
111                  starty = stopy = y;                      starty = stopy = y;    
112                  while (startx > 0 && starty < (m_size-1) ) {                  while (startx > 0 && starty < (m_size-1) ) {
# Line 122  void Board::mousePressEvent( QMouseEvent Line 124  void Board::mousePressEvent( QMouseEvent
124    
125  void Board::setSize( int size )  void Board::setSize( int size )
126  {  {
127          m_hasData = false;          if (m_sol != NULL)
128            {
129                    delete m_sol;
130                    m_sol = NULL;
131            }
132            
133          m_size = size;          m_size = size;
134          this->setMaximumSize( (size * 30)+1, (size * 30)+1 );          this->setMaximumSize( (size * 30)+1, (size * 30)+1 );
135          this->setMinimumSize( size * 30, size * 30);          this->setMinimumSize( size * 30, size * 30);
# Line 130  void Board::setSize( int size ) Line 137  void Board::setSize( int size )
137    
138  void Board::contextMenuEvent( QContextMenuEvent *event)  void Board::contextMenuEvent( QContextMenuEvent *event)
139  {  {
140            if (m_sol == NULL)
141                    return;
142            
143          QPopupMenu *contextMenu = new QPopupMenu( this );          QPopupMenu *contextMenu = new QPopupMenu( this );
144          contextMenu->setCheckable( false );          contextMenu->setCheckable( false );
145          contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) );          contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) );
# Line 143  void Board::contextMenuEvent( QContextMe Line 153  void Board::contextMenuEvent( QContextMe
153    
154  void Board::rotateLeft()  void Board::rotateLeft()
155  {  {
156          m_sol.rotate90();          m_sol->rotate90();
157          repaint( true );          repaint( true );
158  }  }
159    
160  void Board::rotateRight()  void Board::rotateRight()
161  {  {
162          m_sol.rotate90();          m_sol->rotate90();
163          m_sol.rotate90();          m_sol->rotate90();
164          m_sol.rotate90();          m_sol->rotate90();
165          repaint( true );          repaint( true );
166  }  }
167    
168  void Board::mirrorV()  void Board::mirrorV()
169  {  {
170          m_sol.mirror();          m_sol->mirror();
171          repaint( true );          repaint( true );
172  }  }
173    
174  void Board::mirrorH()  void Board::mirrorH()
175  {  {
176          m_sol.mirror();          m_sol->mirror();
177          m_sol.rotate90();          m_sol->rotate90();
178          m_sol.rotate90();          m_sol->rotate90();
179          repaint( true );          repaint( true );
180  }  }

Legend:
Removed from v.1  
changed lines
  Added in v.6

  ViewVC Help
Powered by ViewVC 1.1.20