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);
}
/*****************************************************************************/