diff options
Diffstat (limited to 'kblackbox/kbbgfx.h')
-rw-r--r-- | kblackbox/kbbgfx.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/kblackbox/kbbgfx.h b/kblackbox/kbbgfx.h new file mode 100644 index 00000000..ae4d207c --- /dev/null +++ b/kblackbox/kbbgfx.h @@ -0,0 +1,120 @@ +// +// +// KBlackBox +// +// A simple game inspired by an emacs module +// +// File: kbbgfx.h +// +// The definition of the KBBGraphic widget +// + +#ifndef KBBGFX_H +#define KBBGFX_H + +#include <qwidget.h> +#include <qpixmap.h> + +#include "util.h" + +/* + Default size of a cell +*/ + +#define CELLW 32 +#define CELLH 32 + +/* + Graphical types of the boxes +*/ + +#define OUTERBBG 0 +#define INNERBBG 1 +#define LASERBBG 2 +#define FBALLBBG 3 +#define TBALLBBG 4 +#define WBALLBBG 5 +#define MARK1BBG 6 +#define LFIREBBG 7 + +/* + These have the same pixmaps as some of those above... +*/ + +#define RLASERBBG 8 +#define HLASERBBG 9 + +#define NROFTYPES 8 + +/* + Negative numbers are deflected lasers... +*/ + +class KBBGraphic : public QWidget +{ + Q_OBJECT +public: + KBBGraphic( QPixmap** p=0, QWidget* parent=0, const char* name=0 ); + ~KBBGraphic(); + + friend class KBBGame; + + void setSize( int w, int h ); + RectOnArray *getGraphicBoard(); + int numC(); + int numR(); + int width(); + int height(); + int wHint() const; + int hHint() const; + void setCellWidth( int w ); + void setCellHeight( int h ); + void setNumRows( int rows ); + void setNumCols( int cols ); + +public slots: + void setInputAccepted( bool b ); + void updateElement( int col, int row ); + void slotUp(); + void slotDown(); + void slotLeft(); + void slotRight(); + void slotInput(); + +signals: + void sizeChanged(); + void inputAt( int, int, int ); + void endMouseClicked(); + +protected: + virtual QSize sizeHint() const; + void paintEvent( QPaintEvent* ); + void mousePressEvent( QMouseEvent* ); + void mouseMoveEvent( QMouseEvent* ); + void focusInEvent( QFocusEvent* ); + void focusOutEvent( QFocusEvent* ); + void resizeEvent( QResizeEvent* e ); + + void moveSelection(int drow, int dcol); + +private: + void paintCell( QPainter* p, int row, int col ); + void paintCellDefault( QPainter*, int row, int col ); + void paintCellPixmap( QPainter*, int row, int col ); + void scalePixmaps( int w, int h ); + RectOnArray *graphicBoard; + int curRow; + int curCol; + bool inputAccepted; + int minW; + int minH; + int cellW; + int cellH; + int numCols; + int numRows; + QPixmap **pix; + QPixmap **pixScaled; + QPixmap *drawBuffer; +}; + +#endif // KBBGFX_H |