00001 #ifndef PAINTER_H
00002 #define PAINTER_H
00003
00004 #include "portable.h"
00005
00006 #if defined( KDE2_PORT )
00007 #include <kapp.h>
00008 #include <klocale.h>
00009 #endif
00010
00011 #include <qpixmap.h>
00012 #include <qbitmap.h>
00013 #include <qlabel.h>
00014 #include <qcolor.h>
00015 #include <qlist.h>
00016 #include <qstrlist.h>
00017 #include <qregexp.h>
00018
00019 #include "board.h"
00020 #include "bitfont.h"
00021 #include "colors.h"
00022
00023 enum PixMap { PacmanPix, DyingPix, MonsterPix, EyesPix, FruitPix,
00024 PointPix, EnergizerPix, WallPix, PrisonPix,
00025 FruitScorePix, MonsterScorePix };
00026 enum DrawWidget { Widget, RoomPix, BackPix };
00027
00028 class Painter
00029 {
00030 public:
00031 Painter (Board *, QWidget *parent=0, int scheme=-1, int mode=-1,Bitfont *font=0);
00032 QPixmap levelPix() { return roomPix; }
00033
00034 void setScheme(int scheme=-1, int mode=-1, Bitfont *font=0);
00035 void setLevel(int level=0);
00036
00037 QRect rect(int pos, PixMap pix, uint i = 0);
00038 QRect rect(int pos, QString str, int align = QLabel::AlignCenter );
00039 QRect rect(QRect r1, QRect r2);
00040
00041 void draw(QPoint point, DrawWidget where, QPixmap pix);
00042 void draw(QRect rect, DrawWidget where, QPixmap pix);
00043 void draw(int pos, DrawWidget where, PixMap pix, uint i = 0);
00044 QPixmap draw(int pos, DrawWidget where, QString str,
00045 QColor fg, QColor bg = QColor(), int align = QLabel::AlignCenter);
00046 QRect draw(int col, int row, DrawWidget where, QString str,
00047 QColor fg, QColor bg = QColor(), int align = QLabel::AlignCenter);
00048
00049 void drawBrick(int pos);
00050 void drawPrison(int pos);
00051 void drawPoint(int pos);
00052
00053 void erase(int pos, PixMap pix, uint i = 0);
00054
00055 int maxPixmaps(PixMap pix);
00056
00057 protected:
00058 QString decodeHexOctString(QString str);
00059
00060 void fillScoreString(QStrList &, QArray<int> &);
00061 void fillArray(QArray<int> &, QString, int);
00062 void fillStrList(QStrList &, QString, int);
00063 void fillPixmapName(QStrList &);
00064
00065 void confScheme();
00066 void confLevels(bool defGroup=TRUE);
00067 void confMisc(bool defGroup=TRUE);
00068 void confScoring(bool defGroup=TRUE);
00069
00070 void initPixmaps();
00071 void initRoomPixmap();
00072 void initbackPixmaps();
00073
00074 private:
00075 QWidget *w;
00076 Board *board;
00077 Bitfont *bitfont;
00078
00079 int BlockWidth;
00080 int BlockHeight;
00081
00082 QArray<int> fruitScore;
00083 QStrList fruitScoreString;
00084 QArray<int> monsterScore;
00085 QStrList monsterScoreString;
00086
00087 QString pixmapDirectory;
00088
00089 QStrList pointPixmapName;
00090 QStrList wallPixmapName;
00091 QStrList prisonPixmapName;
00092 QStrList energizerPixmapName;
00093 QStrList fruitPixmapName;
00094 QStrList pacmanPixmapName;
00095 QStrList dyingPixmapName;
00096 QStrList eyesPixmapName;
00097 QStrList monsterPixmapName;
00098 QStrList fruitScorePixmapName;
00099 QStrList monsterScorePixmapName;
00100
00101 QString lastPointPixmapName;
00102 QString lastWallPixmapName;
00103 QString lastPrisonPixmapName;
00104 QString lastEnergizerPixmapName;
00105 QString lastFruitPixmapName;
00106 QString lastPacmanPixmapName;
00107 QString lastDyingPixmapName;
00108 QString lastEyesPixmapName;
00109 QString lastMonsterPixmapName;
00110 QString lastFruitScorePixmapName;
00111 QString lastMonsterScorePixmapName;
00112
00113 QList<QPixmap> *loadPixmap(QWidget *parent, QString pixmapName,
00114 QList<QPixmap> *pixmaps=0);
00115 QList<QPixmap> *textPixmap(QStrList &, QList<QPixmap> *pixmaps=0,
00116 QColor fg = BLACK, QColor bg = QColor());
00117 QList<QPixmap> *textPixmap(QString str, QList<QPixmap> *pixmaps=0,
00118 QColor fg = BLACK, QColor bg = QColor());
00119
00120 QPoint point(int pos);
00121 int checkRange(int value, int max, int min=0);
00122
00123 QList<QPixmap> *wallPix;
00124 QList<QPixmap> *prisonPix;
00125 QList<QPixmap> *pointPix;
00126 QList<QPixmap> *energizerPix;
00127 QList<QPixmap> *fruitPix;
00128 QList<QPixmap> *pacmanPix;
00129 QList<QPixmap> *dyingPix;
00130 QList<QPixmap> *eyesPix;
00131 QList<QPixmap> *monsterPix;
00132 QList<QPixmap> *fruitScorePix;
00133 QList<QPixmap> *monsterScorePix;
00134
00135 QPixmap roomPix;
00136 QPixmap backPix;
00137
00138 bool plainColor;
00139 QColor backgroundColor;
00140
00141 int maxLevel;
00142 int level;
00143
00144 int scheme;
00145 int mode;
00146 };
00147
00148 #endif // PAINTER_H