diff options
Diffstat (limited to 'kpacman/status.cpp')
-rw-r--r-- | kpacman/status.cpp | 353 |
1 files changed, 0 insertions, 353 deletions
diff --git a/kpacman/status.cpp b/kpacman/status.cpp deleted file mode 100644 index 12f01b7..0000000 --- a/kpacman/status.cpp +++ /dev/null @@ -1,353 +0,0 @@ -#include <kapp.h> -#include <kstddirs.h> - -#include <tdelocale.h> -#include <tqbitmap.h> -#include <tqstring.h> -#include <tqmsgbox.h> -#include <tqfileinfo.h> - -#include "status.h" - -Status::Status( TQWidget *parent, const char *name, int Scheme, int Mode ) : - TQWidget( parent, name ) -{ - actualLifes = 0; - actualLevel = 0; - - lifesPix = NULL; - levelPix = NULL; - - scheme = Scheme; - mode = Mode; - level = 0; - - confScheme(); -} - -TQPtrList<TQPixmap> *Status::loadPixmap(TQWidget *parent, TQString pixmapName, - TQPtrList<TQPixmap> *pixmaps) -{ - if (pixmaps == NULL) { - pixmaps = new TQPtrList<TQPixmap>; - pixmaps->setAutoDelete(TRUE); - } - - if (!pixmaps->isEmpty()) - pixmaps->clear(); - - TQPixmap PIXMAP(pixmapName); - if (PIXMAP.isNull() || PIXMAP.mask() == NULL) { - TQString msg = i18n("The pixmap could not be contructed.\n\n" - "The file '@PIXMAPNAME@' does not exist,\n" - "or is of an unknown format."); - msg.replace(TQRegExp("@PIXMAPNAME@"), pixmapName); - TQMessageBox::information(parent, i18n("Initialization Error"), msg); - return 0; - } - - int height = PIXMAP.height(); - int width = (height == 0) ? 0 : PIXMAP.width()/(PIXMAP.width()/height); - - TQBitmap BITMAP; - TQBitmap MASK; - - BITMAP = *PIXMAP.mask(); - MASK.resize(width, height); - - for (int x = 0; x < PIXMAP.width()/width; x++) { - TQPixmap *pixmap = new TQPixmap(width, height); - pixmaps->append(pixmap); - bitBlt(pixmap, 0, 0, &PIXMAP, x*width, 0, width, height, CopyROP, TRUE); - bitBlt(&MASK, 0, 0, &BITMAP, x*width, 0, width, height, CopyROP, TRUE); - pixmap->setMask(MASK); - } - - return pixmaps; -} - -void Status::paintEvent( TQPaintEvent *) -{ - for (int x = 0; x < actualLifes && !lifesPix->isEmpty(); x++) - bitBlt(this, lifesPix->at(0)->width()+(lifesPix->at(0)->width()*x), - (height()-lifesPix->at(0)->height())/2, - lifesPix->at(0), 0, 0, - lifesPix->at(0)->width(), lifesPix->at(0)->height()); - - for (int x = 0; x < actualLevel && !levelPix->isEmpty(); x++) { - erase((width()-levelPix->at(x)->width()*2)-(levelPix->at(x)->width()*levelPos[x]), - (height()-levelPix->at(x)->height())/2, - levelPix->at(x)->width(), levelPix->at(x)->height()); - bitBlt(this, (width()-levelPix->at(x)->width()*2)-(levelPix->at(x)->width()*levelPos[x]), - (height()-levelPix->at(x)->height())/2, - levelPix->at(x), 0, 0, - levelPix->at(x)->width(), levelPix->at(x)->height()); - } -} - -void Status::initPixmaps() -{ - if (lastLifesPixmapName != lifesPixmapName.at(level)) { - lifesPix = loadPixmap(this, lifesPixmapName.at(level), lifesPix); - lastLifesPixmapName = lifesPixmapName.at(level); - } - if (lastLevelPixmapName != levelPixmapName.at(level)) { - levelPix = loadPixmap(this, levelPixmapName.at(level), levelPix); - lastLevelPixmapName = levelPixmapName.at(level); - } -} - -TQString Status::decodeHexOctString(TQString s) -{ - TQString value; - TQString valids; - int pos, xpos = 0, opos = 0; - int v, len, leadin; - const char *ptr; - uchar c; - - while (((xpos = s.find(TQRegExp("\\\\x[0-9a-fA-F]+"), xpos)) != -1) || - ((opos = s.find(TQRegExp("\\\\[0-7]+"), opos)) != -1)) { - if (xpos != -1) { - valids = "0123456789abcdef"; - leadin = 2; - pos = xpos; - } else { - valids = "01234567"; - leadin = 1; - pos = opos; - } - - c = '\0'; - len = 0; - value = s.mid(pos+leadin, 3); - ptr = value.latin1(); - - while (*ptr != '\0' && (v = valids.find(*ptr++, 0, FALSE)) != -1) { - c = (c * valids.length()) + v; - len++; - } - - value.fill(c, 1); - s.replace(pos, len+leadin, value); - } - - return s; -} - -void Status::fillArray(TQMemArray<int> &array, TQString values, int max) -{ - array.resize(max); - int last = 0; - bool ok; - TQString value; - - for (uint i = 0; i < array.size(); i++) { - if (values.find(',') < 0 && values.length() > 0) { - value = values; - values = ""; - } - if (values.find(',') >= 0) { - value = values.left(values.find(',')); - values.remove(0,values.find(',')+1); - } - array[i] = value.toInt(&ok); - if (ok) - last = array[i]; - else - array[i] = last; - } -} - -void Status::fillStrList(TQStrList &list, TQString values, int max) -{ - if (!list.isEmpty()) - list.clear(); - - TQString last = ""; - TQString value; - - for (uint i = 0; i < (uint) max; i++) { - if (values.find(',') < 0 && values.length() > 0) { - value = values; - values = ""; - } - if (values.find(',') >= 0) { - value = values.left(values.find(',')); - values.remove(0,values.find(',')+1); - } - if (!value.isEmpty()) - last = decodeHexOctString(value); - list.append(last.latin1()); - } -} - -void Status::fillPixmapName(TQStrList &pixmapName) -{ - TQStrList list = pixmapName; - - if (!pixmapName.isEmpty()) - pixmapName.clear(); - - TQString pixmap; - - TQFileInfo fileInfo; - - for (uint i = 0; i < list.count(); i++) { - pixmap = list.at(i); - - if (pixmap.left(1) != "/" && pixmap.left(1) != "~") - pixmap = TDEGlobal::dirs()->findResource("appdata", pixmapDirectory+pixmap); - - fileInfo.setFile(pixmap); - if (!fileInfo.isReadable() || !fileInfo.isFile()) - pixmap = ""; - - pixmapName.append(pixmap.utf8()); - } -} - -void Status::confLevels(bool defGroup) -{ - if (defGroup || kapp->config()->hasKey("Levels")) - maxLevel = kapp->config()->readNumEntry("Levels", 13); -} - -void Status::confMisc(bool defGroup) -{ - if (defGroup || kapp->config()->hasKey("LevelPosition")) - fillArray(levelPos, kapp->config()->readEntry("LevelPosition", "0,1,2,3,,4,,5,,6,,7"), maxLevel); - - if (defGroup || kapp->config()->hasKey("PixmapDirectory")) { - pixmapDirectory = kapp->config()->readEntry("PixmapDirectory"); - - if (pixmapDirectory.left(1) != "/" && pixmapDirectory.left(1) != "~") - pixmapDirectory.insert(0, "pics/"); - if (pixmapDirectory.right(1) != "/") - pixmapDirectory.append("/"); - } - - if (defGroup || kapp->config()->hasKey("LifesPixmapName")) - fillStrList(lifesPixmapName, - kapp->config()->readEntry("LifesPixmapName", "lifes.xpm"), maxLevel+1); - if (defGroup || kapp->config()->hasKey("LevelPixmapName")) - fillStrList(levelPixmapName, - kapp->config()->readEntry("LevelPixmapName", "level.xpm"), maxLevel+1); - -} - -void Status::confScheme() -{ - TQString oldgroup = kapp->config()->group(); - TQString newgroup; - - // if not set, read mode and scheme from the configfile - if (mode == -1 && scheme == -1) { - scheme = kapp->config()->readNumEntry("Scheme", -1); - mode = kapp->config()->readNumEntry("Mode", -1); - - // if mode is not set in the defGroup-group, lookup the scheme group - if (scheme != -1 || mode == -1) { - newgroup.sprintf("Scheme %d", scheme); - kapp->config()->setGroup(newgroup); - - mode = kapp->config()->readNumEntry("Mode", -1); - kapp->config()->setGroup(oldgroup); - } - } - - confLevels(); - - if (mode != -1) { - newgroup.sprintf("Mode %d", mode); - kapp->config()->setGroup(newgroup); - - confLevels(FALSE); - } - - if (scheme != -1) { - newgroup.sprintf("Scheme %d", scheme); - kapp->config()->setGroup(newgroup); - - confLevels(FALSE); - } - - kapp->config()->setGroup(oldgroup); - - confMisc(); - - if (mode != -1) { - newgroup.sprintf("Mode %d", mode); - kapp->config()->setGroup(newgroup); - - confMisc(FALSE); - } - - if (scheme != -1) { - newgroup.sprintf("Scheme %d", scheme); - kapp->config()->setGroup(newgroup); - - confMisc(FALSE); - } - - fillPixmapName(lifesPixmapName); - fillPixmapName(levelPixmapName); - - initPixmaps(); - - setFixedHeight(minHeight()); - - kapp->config()->setGroup(oldgroup); -} - -void Status::setScheme(int Scheme, int Mode) -{ - mode = Mode; - scheme = Scheme; - - confScheme(); - - repaint(); -} - -int Status::minHeight() -{ - if (lifesPix->isEmpty() && levelPix->isEmpty()) - return 0; - if (levelPix->isEmpty()) - return lifesPix->at(0)->height(); - if (lifesPix->isEmpty()) - return levelPix->at(0)->height(); - return (lifesPix->at(0)->height() > levelPix->at(0)->height()) ? - lifesPix->at(0)->height() : levelPix->at(0)->height(); -} - -int Status::minWidth() -{ - if (lifesPix->isEmpty() && levelPix->isEmpty()) - return 0; - if (levelPix->isEmpty()) - return lifesPix->at(0)->width(); - if (lifesPix->isEmpty()) - return levelPix->at(0)->width(); - return (lifesPix->at(0)->width() > levelPix->at(0)->width()) ? - lifesPix->at(0)->width() : levelPix->at(0)->width(); -} - -void Status::setLifes(int lifes) -{ - actualLifes = lifes; - repaint(); -} - -void Status::setLevel(int Level) -{ - level = Level; - - initPixmaps(); - - actualLevel = (level > (int) levelPix->count()) ? (int) levelPix->count() : level; - repaint(); -} - -#include "status.moc" |