/[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 5 by torben, Fri Jul 20 01:22:53 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    /*
49  void Board::setMatrix(IntSolution sol)  void Board::setMatrix(IntSolution sol)
50  {  {
51    #warning need a closer look
52    
53          m_hasData = true;          m_hasData = true;
54          m_sol = Solution();          m_sol = Solution();
55          for (int i=0;i<m_size;i++)          for (int i=0;i<m_size;i++)
56                  m_sol.matrix[i][ sol.imatrix[i] ] = true;                  m_sol.matrix[i][ sol.imatrix[i] ] = true;
57          this->repaint(true);          this->repaint(true);
58  }  
59    }*/
60    
61    
62  void Board::paintEvent( QPaintEvent *event )  void Board::paintEvent( QPaintEvent *event )
# Line 60  void Board::paintEvent( QPaintEvent *eve Line 67  void Board::paintEvent( QPaintEvent *eve
67                  p.drawLine(i*30, 0, i*30, m_size*30);                  p.drawLine(i*30, 0, i*30, m_size*30);
68          }          }
69                    
70          if (m_hasData) {          if (m_sol != NULL) {
71                  QBrush brush( black);                  QBrush brush( black);
72                  p.setBrush( brush );                  p.setBrush( brush );
73                  for (int i=0; i<m_size; i++)                  for (int i=0; i<m_size; i++)
74                          for (int j=0; j<m_size; j++) {                          for (int j=0; j<m_size; j++) {
75                                  if (m_sol.matrix[i][j])                                  if (m_sol->getMatrix(i,j))
76                                          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);
77                          }                          }
78          }          }
# Line 92  void Board::mousePressEvent( QMouseEvent Line 99  void Board::mousePressEvent( QMouseEvent
99                  starty = stopy = y;                  starty = stopy = y;
100                  startx = stopx = x;                  startx = stopx = x;
101                    
102                  // første skrå linie                  // f�rste skr� linie
103                  while (startx > 0 && starty > 0) {                  while (startx > 0 && starty > 0) {
104                          startx--;                          startx--;
105                          starty--;                          starty--;
# Line 104  void Board::mousePressEvent( QMouseEvent Line 111  void Board::mousePressEvent( QMouseEvent
111                  }                  }
112                  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));
113                    
114                  //næste skrå linie                  //n�ste skr� linie
115                  startx = stopx = x;                  startx = stopx = x;
116                  starty = stopy = y;                      starty = stopy = y;    
117                  while (startx > 0 && starty < (m_size-1) ) {                  while (startx > 0 && starty < (m_size-1) ) {
# Line 122  void Board::mousePressEvent( QMouseEvent Line 129  void Board::mousePressEvent( QMouseEvent
129    
130  void Board::setSize( int size )  void Board::setSize( int size )
131  {  {
132          m_hasData = false;          if (m_sol != NULL)
133            {
134                    delete m_sol;
135                    m_sol = NULL;
136            }
137          m_size = size;          m_size = size;
138          this->setMaximumSize( (size * 30)+1, (size * 30)+1 );          this->setMaximumSize( (size * 30)+1, (size * 30)+1 );
139          this->setMinimumSize( size * 30, size * 30);          this->setMinimumSize( size * 30, size * 30);
# Line 130  void Board::setSize( int size ) Line 141  void Board::setSize( int size )
141    
142  void Board::contextMenuEvent( QContextMenuEvent *event)  void Board::contextMenuEvent( QContextMenuEvent *event)
143  {  {
144            if (m_sol == NULL)
145                    return;
146            
147          QPopupMenu *contextMenu = new QPopupMenu( this );          QPopupMenu *contextMenu = new QPopupMenu( this );
148          contextMenu->setCheckable( false );          contextMenu->setCheckable( false );
149          contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) );          contextMenu->insertItem("Rotate left", this, SLOT( rotateLeft() ) );
# Line 143  void Board::contextMenuEvent( QContextMe Line 157  void Board::contextMenuEvent( QContextMe
157    
158  void Board::rotateLeft()  void Board::rotateLeft()
159  {  {
160          m_sol.rotate90();          m_sol->rotate90();
161          repaint( true );          repaint( true );
162  }  }
163    
164  void Board::rotateRight()  void Board::rotateRight()
165  {  {
166          m_sol.rotate90();          m_sol->rotate90();
167          m_sol.rotate90();          m_sol->rotate90();
168          m_sol.rotate90();          m_sol->rotate90();
169          repaint( true );          repaint( true );
170  }  }
171    
172  void Board::mirrorV()  void Board::mirrorV()
173  {  {
174          m_sol.mirror();          m_sol->mirror();
175          repaint( true );          repaint( true );
176  }  }
177    
178  void Board::mirrorH()  void Board::mirrorH()
179  {  {
180          m_sol.mirror();          m_sol->mirror();
181          m_sol.rotate90();          m_sol->rotate90();
182          m_sol.rotate90();          m_sol->rotate90();
183          repaint( true );          repaint( true );
184  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.20