Logo Search packages:      
Sourcecode: ktechlab version File versions

cells.cpp

/***************************************************************************
 *   Copyright (C) 2003-2004 by David Saxton                               *
 *   david@bluehaze.org                                                    *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 ***************************************************************************/

#include "cells.h"



#if 0
class CellSmall
{
      public:
            /**
       * Resets bestScore, prevX, prevY, addedToLabels, it, permanent for each cell
             */
            void reset();
      
//          Point *point; // Pointer to the point in the TempLabelMap
            short prevX, prevY; // Which cell this came from, (-1,-1) if originating cell
            unsigned short CIpenalty; // 'Penalty' of using the cell from CNItem
            unsigned short Cpenalty; // 'Penalty' of using the cell from Connector
            unsigned short bestScore; // Best (lowest) score so far, _the_ best if it is permanent
            unsigned char numCon; // Number of connectors through that point
            bool permanent:1; // Whether the score can be improved on
            bool addedToLabels:1; // Whether the cell has already been added to the list of cells to check
};

class CellBig
{
      public:
            /**
       * Resets bestScore, prevX, prevY, addedToLabels, it, permanent for each cell
             */
            void reset();
      
            Point *point; // Pointer to the point in the TempLabelMap
            short prevX, prevY; // Which cell this came from, (-1,-1) if originating cell
            unsigned short CIpenalty; // 'Penalty' of using the cell from CNItem
            unsigned short Cpenalty; // 'Penalty' of using the cell from Connector
            unsigned short bestScore; // Best (lowest) score so far, _the_ best if it is permanent
            unsigned char numCon; // Number of connectors through that point
            bool permanent:1; // Whether the score can be improved on
            bool addedToLabels:1; // Whether the cell has already been added to the list of cells to check
};
#endif


Cells::Cells( const uint w, const uint h )
{
#if 0
      kdDebug() << "sizeof(CellSmall)="<<sizeof(CellSmall)<<endl;
      kdDebug() << "sizeof(CellBig)="<<sizeof(Cell)<<endl;
      kdDebug() << "sizeof(unsigned short)="<<sizeof(unsigned short)<<endl;
      kdDebug() << "sizeof(short)="<<sizeof(short)<<endl;
      kdDebug() << "sizeof(Point*)="<<sizeof(Point*)<<endl;
      kdDebug() << "sizeof(bool)="<<sizeof(bool)<<endl;
      kdDebug() << "sizeof(char)="<<sizeof(char)<<endl;
#endif
      init( w, h );
}


Cells::~Cells()
{
      for ( uint i=0; i<m_w; ++i )
      {
            delete [] m_cells[i];
      }
      delete [] m_cells;
}

Cells::Cells( const Cells &c )
{
      init( c.width(), c.height() );
      for ( uint x=0; x<m_w; x++ )
      {
            for ( uint y=0; y<m_h; y++ )
            {
                  m_cells[x][y] = c.cell( x, y );
            }
      }
}


void Cells::init( const uint w, const uint h )
{
      m_w = w;
      m_h = h;
      
      typedef Cell* cellptr;
      m_cells = new cellptr[m_w];
      for ( uint i=0; i<m_w; ++i )
      {
            m_cells[i] = new Cell[m_h];
      }
}


00105 void Cells::reset()
{
      for ( uint x=0; x<m_w; x++ )
      {
            for ( uint y=0; y<m_h; y++ )
            {
                  m_cells[x][y].reset();
            }
      }
}


Point::Point()
{
      x = y = prevX = prevY = -1;
}

Cell::Cell()
{
      addedToLabels = false;
      permanent = false;
      CIpenalty = 0;
      numCon = 0;
      Cpenalty = 0;
      bestScore = (int)1e9; // Nice large value
}

void Cell::reset()
{
      addedToLabels = false;
      permanent = false;
      bestScore = (int)1e9; // Nice large value
}




Generated by  Doxygen 1.6.0   Back to index