diff options
Diffstat (limited to 'kpacman/painter.h')
-rw-r--r-- | kpacman/painter.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/kpacman/painter.h b/kpacman/painter.h new file mode 100644 index 0000000..7e63b96 --- /dev/null +++ b/kpacman/painter.h @@ -0,0 +1,144 @@ +#ifndef PAINTER_H +#define PAINTER_H + +#include <kapp.h> +#include <klocale.h> + +#include <qpixmap.h> +#include <qbitmap.h> +#include <qlabel.h> +#include <qcolor.h> +#include <qlist.h> +#include <qstrlist.h> +#include <qregexp.h> + +#include "board.h" +#include "bitfont.h" +#include "colors.h" + +enum PixMap { PacmanPix, DyingPix, MonsterPix, EyesPix, FruitPix, + PointPix, EnergizerPix, WallPix, PrisonPix, + FruitScorePix, MonsterScorePix }; +enum DrawWidget { Widget, RoomPix, BackPix }; + +class Painter +{ +public: + Painter (Board *, QWidget *parent=0, int scheme=-1, int mode=-1,Bitfont *font=0); + QPixmap levelPix() { return roomPix; } + + void setScheme(int scheme=-1, int mode=-1, Bitfont *font=0); + void setLevel(int level=0); + + QRect rect(int pos, PixMap pix, uint i = 0); + QRect rect(int pos, QString str, int align = QLabel::AlignCenter ); + QRect rect(QRect r1, QRect r2); + + void draw(QPoint point, DrawWidget where, QPixmap pix); + void draw(QRect rect, DrawWidget where, QPixmap pix); + void draw(int pos, DrawWidget where, PixMap pix, uint i = 0); + QPixmap draw(int pos, DrawWidget where, QString str, + QColor fg, QColor bg = QColor(), int align = QLabel::AlignCenter); + QRect draw(int col, int row, DrawWidget where, QString str, + QColor fg, QColor bg = QColor(), int align = QLabel::AlignCenter); + + void drawBrick(int pos); + void drawPrison(int pos); + void drawPoint(int pos); + + void erase(int pos, PixMap pix, uint i = 0); + + int maxPixmaps(PixMap pix); + +protected: + QString decodeHexOctString(QString str); + + void fillScoreString(QStrList &, QArray<int> &); + void fillArray(QArray<int> &, QString, int); + void fillStrList(QStrList &, QString, int); + void fillPixmapName(QStrList &); + + void confScheme(); + void confLevels(bool defGroup=TRUE); + void confMisc(bool defGroup=TRUE); + void confScoring(bool defGroup=TRUE); + + void initPixmaps(); + void initRoomPixmap(); + void initbackPixmaps(); + +private: + QWidget *w; + Board *board; + Bitfont *bitfont; + + int BlockWidth; + int BlockHeight; + + QArray<int> fruitScore; + QStrList fruitScoreString; + QArray<int> monsterScore; + QStrList monsterScoreString; + + QString pixmapDirectory; + + QStrList pointPixmapName; + QStrList wallPixmapName; + QStrList prisonPixmapName; + QStrList energizerPixmapName; + QStrList fruitPixmapName; + QStrList pacmanPixmapName; + QStrList dyingPixmapName; + QStrList eyesPixmapName; + QStrList monsterPixmapName; + QStrList fruitScorePixmapName; + QStrList monsterScorePixmapName; + + QString lastPointPixmapName; + QString lastWallPixmapName; + QString lastPrisonPixmapName; + QString lastEnergizerPixmapName; + QString lastFruitPixmapName; + QString lastPacmanPixmapName; + QString lastDyingPixmapName; + QString lastEyesPixmapName; + QString lastMonsterPixmapName; + QString lastFruitScorePixmapName; + QString lastMonsterScorePixmapName; + + QList<QPixmap> *loadPixmap(QWidget *parent, QString pixmapName, + QList<QPixmap> *pixmaps=0); + QList<QPixmap> *textPixmap(QStrList &, QList<QPixmap> *pixmaps=0, + QColor fg = BLACK, QColor bg = QColor()); + QList<QPixmap> *textPixmap(QString str, QList<QPixmap> *pixmaps=0, + QColor fg = BLACK, QColor bg = QColor()); + + QPoint point(int pos); + int checkRange(int value, int max, int min=0); + + QList<QPixmap> *wallPix; + QList<QPixmap> *prisonPix; + QList<QPixmap> *pointPix; + QList<QPixmap> *energizerPix; + QList<QPixmap> *fruitPix; + QList<QPixmap> *pacmanPix; + QList<QPixmap> *dyingPix; + QList<QPixmap> *eyesPix; + QList<QPixmap> *monsterPix; + QList<QPixmap> *fruitScorePix; + QList<QPixmap> *monsterScorePix; + + QPixmap roomPix; + QPixmap backPix; + + bool plainColor; + QColor backgroundColor; + + int maxLevel; + int level; + + int scheme; + int mode; +}; + +#endif // PAINTER_H |