Source Code (Use browser search to find items of interest.)

Class Index

ksirtet'Shadow (./kdegames/ksirtet/misc_ui.h:29)

class Shadow : public QWidget
{
 Q_OBJECT

 public:
    Shadow(const Board *board, int xOffset,
		   QWidget *parent, const char *name=0);

	QSize sizeHint() const;
	QSizePolicy sizePolicy() const;

	void reveal(bool reveal = TRUE);
	
 public slots:
    void redraw(bool clear);
	
 protected:
	void paintEvent(QPaintEvent *e);

 private:
	bool         _shown;
	QPainter     _p;
	int         _xOffset;
	const Board *_board;
	QArray<bool> _state;

	void draw(bool hide, bool smart);
	void drawBlock(uint i, bool erase);
};

/****************************************************************************/

ksirtet'Shadow::Shadow() (./kdegames/ksirtet/misc_ui.cpp:32)

Shadow::Shadow(const Board *board, int xOffset,
			   QWidget *parent, const char *name)
: QWidget(parent, name), _shown(FALSE), _p(this),
  _xOffset(xOffset), _board(board)
{
	_state.resize(_board->matrix().width());
	_state.fill(FALSE);
}


ksirtet'Shadow::sizeHint() (./kdegames/ksirtet/misc_ui.cpp:41)

QSize Shadow::sizeHint() const
{
	return QSize(_xOffset + _board->matrix().width() * _board->blockWidth(),
				 SHADOW_HEIGHT);
}


ksirtet'Shadow::sizePolicy() (./kdegames/ksirtet/misc_ui.cpp:47)

QSizePolicy Shadow::sizePolicy() const
{
	return QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
}


ksirtet'Shadow::reveal() (./kdegames/ksirtet/misc_ui.cpp:52)

void Shadow::reveal(bool reveal)
{
	if ( _shown==reveal ) return;
	_shown = reveal;
	draw(!_shown, FALSE);
}


ksirtet'Shadow::redraw() (./kdegames/ksirtet/misc_ui.cpp:59)

void Shadow::redraw(bool clear)
{
	if (clear) return; // the state is saved so no clearing needed
	if (_shown) draw(FALSE, TRUE);
}


ksirtet'Shadow::paintEvent() (./kdegames/ksirtet/misc_ui.cpp:65)

void Shadow::paintEvent(QPaintEvent *)
{
	if (_shown) draw(FALSE, FALSE);
}


ksirtet'Shadow::draw() (./kdegames/ksirtet/misc_ui.cpp:70)

void Shadow::draw(bool erase, bool smart)
{
	const Piece *piece = _board->currentPiece();
	uint pf = piece->minX() + _board->currentCol();
	uint pl = pf + piece->width() - 1;

	for (uint i=0; i<_board->matrix().width(); i++) {
		if ( (i<pf || i>pl) || erase ) {
			if (_state[i]) {   // need deletion
			_state[i] = FALSE;
			drawBlock(i, TRUE);
			}
		} else if ( !_state[i] || !smart ) { // need drawing
				_state[i] = TRUE;
				drawBlock(i, FALSE);
		}
	}
}


ksirtet'Shadow::drawBlock() (./kdegames/ksirtet/misc_ui.cpp:89)

void Shadow::drawBlock(uint i, bool erase)
{
	QRect r(_xOffset + i * _board->blockWidth() + 1 , 0,
			_board->blockWidth() - 2, SHADOW_HEIGHT);
	QColor col = (erase ? backgroundColor() : black);
	_p.setBrush(col);
	_p.setPen(col);
	_p.drawRect(r);
}

/*****************************************************************************/