Show messagebox.cpp syntax highlighted
/***************************************************************************
messagebox.cpp - description
-------------------
begin : Fri Sep 27 2002
copyright : (C) 2002 by Brendon Higgins
email : freepop-devel@lists.sourceforge.net
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <messagebox.h>
#include <client.h>
MessageBox::MessageBox(const CL_Rect& pos, CL_Component* parent,
const CL_Font& f, unsigned int d, unsigned int t):
CL_Component(pos, parent),
isMoving(false),
startedMoving(0),
duration(d),
removeTime(t),
font(f),
slotDraw(sig_paint().connect(this, &MessageBox::onPaint)) {
}
void MessageBox::addLine(const std::string& s) {
lines.push_back(std::make_pair(s, app.getTempo().getStamp()));
}
// void MessageBox::addPermLine(const char* s) {
// SetTextChar(s, lines + permLines);
// permLines++;
// }
// void MessageBox::changePermLine(const char* s, const int n) {
// SetTextChar(s, lines + n);
// }
void MessageBox::removeTopLine() {
lines.pop_front();
yPos = 0;
isMoving = false;
}
void MessageBox::step() {
if (lines.size() > 0 &&
(app.getTempo().getStamp() - lines.front().second) > duration) {
if (isMoving) {
if (app.getTempo().getStamp() - startedMoving > removeTime) {
removeTopLine();
} else {
yPos = -int((app.getTempo().getStamp() - startedMoving) *
font.get_height() / removeTime);
}
} else {
startedMoving = app.getTempo().getStamp();
isMoving = true;
}
}
}
void MessageBox::onPaint() {
step();
int y = yPos;
for (ListType::iterator i = lines.begin(); i != lines.end(); ++i) {
font.draw(0, y, i->first);
y += font.get_height();
}
}
See more files for this project here