diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-24 01:49:02 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-24 01:49:02 +0000 |
commit | 5de3dd4762ca33a0f92e79ffa4fe2ff67069d531 (patch) | |
tree | bad482b7afa4cdf47422d60a5dd2c61c7e333b09 /src/cells.h | |
download | ktechlab-5de3dd4762ca33a0f92e79ffa4fe2ff67069d531.tar.gz ktechlab-5de3dd4762ca33a0f92e79ffa4fe2ff67069d531.zip |
Added KDE3 version of ktechlab
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/ktechlab@1095338 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'src/cells.h')
-rw-r--r-- | src/cells.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/cells.h b/src/cells.h new file mode 100644 index 0000000..c8c739c --- /dev/null +++ b/src/cells.h @@ -0,0 +1,91 @@ +/*************************************************************************** + * 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. * + ***************************************************************************/ + +#ifndef CELLS_H +#define CELLS_H + +#include <map> + +class Point +{ +public: + Point(); + + short x; + short y; + short prevX; + short prevY; +}; + +// Key = cell, data = previous cell, compare = score +typedef std::multimap< unsigned short, Point > TempLabelMap; + +// Used for mapping out connections +const int cellSize = 8; +class Cell +{ +public: + Cell(); + /** + * Resets bestScore, prevX, prevY, addedToLabels, it, permanent for each cell + */ + void reset(); + + 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 + short prevX, prevY; // Which cell this came from, (-1,-1) if originating cell + 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 + Point *point; // Pointer to the point in the TempLabelMap + unsigned short numCon; // Number of connectors through that point +}; + + +/** +@author David Saxton +*/ + +typedef unsigned int uint; + +class Cells +{ +public: + Cells( const uint w, const uint h ); + ~Cells(); + /** + * Resets bestScore, prevX, prevY, addedToLabels, it, permanent for each cell + */ + void reset(); + + inline Cell* operator[] ( const uint x ) const + { + if ( x<m_w ) return m_cells[x]; + return 0l; + } + + const uint width() const { return m_w; } + const uint height() const { return m_h; } + + const Cell &cell( const uint x, const uint y ) const { return m_cells[x][y]; } + +private: + Cells( const Cells & ); + Cells & operator= ( const Cells & ); + void init( const uint w, const uint h ); + + uint m_w; + uint m_h; + + Cell **m_cells; +}; + +#endif + |