diff --git a/qt/aigoqt.cpp b/qt/aigoqt.cpp index db3fcc6..40181fe 100644 --- a/qt/aigoqt.cpp +++ b/qt/aigoqt.cpp @@ -3,29 +3,53 @@ #include #include "image.h" +#define USESTATICIMAGE + +SDL_Surface *getSurface( void ) +{ + static SDL_Surface *newSurface = NULL; + if (newSurface == NULL) + { + qDebug() << "Now loading bmp..."; + SDL_Surface *surface = SDL_LoadBMP("data/bilde.bmp"); + + newSurface = SDL_CreateRGBSurface(SDL_SWSURFACE, surface->w, surface->h, + 8, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000); + SDL_BlitSurface(surface, 0, newSurface, 0); + delete surface; + } + return newSurface; +} + AigoQt::AigoQt(QWidget *parent) : QMainWindow(parent) { setupUi(this); +#ifndef USESTATICIMAGE cam = new Quickcam("/dev/video0"); +#endif timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(on_buttonDrawPoints_clicked())); timer->start(10); - copy = Image::copySurface(cam->getSurface()); + copy = Image::copySurface(getSurface()); } AigoQt::~AigoQt( void ) { +#ifndef USESTATICIMAGE delete cam; +#endif } void AigoQt::updateImage( void ) { +#ifndef USESTATICIMAGE cam->update(); - SDL_Surface *s = cam->getSurface(); +#endif + SDL_Surface *s = getSurface(); if (checkThreshold->isChecked()) Image::threshold(s, blackImageThreshold->value(), whiteImageThreshold->value()); SDL_BlitSurface(s, NULL, copy, NULL); @@ -51,7 +75,7 @@ void AigoQt::on_buttonSetCorners_clicked( void ) void AigoQt::on_buttonGenerateState_clicked( void ) { - State state = State::generateState(cam->getSurface(), settings); + State state = State::generateState(getSurface(), settings); state.printState(); } @@ -75,10 +99,10 @@ void AigoQt::on_buttonDrawPoints_clicked( void ) for (int j = 0; j < 19; j++) { point p = State::positionPoint(i, j, settings); - ((uint32_t*)cam->getSurface()->pixels)[p.y*640 + p.x] = 0xffff0000; + ((uint32_t*)getSurface()->pixels)[p.y*640 + p.x] = 0xffff0000; } } - SDL_Surface *s = cam->getSurface(); + SDL_Surface *s = getSurface(); image->setPixmap(QPixmap::fromImage(QImage((uchar*)s->pixels, s->w, s->h, QImage::Format_RGB32))); } diff --git a/qt/data/bilde.bmp b/qt/data/bilde.bmp new file mode 100644 index 0000000..a05feb7 Binary files /dev/null and b/qt/data/bilde.bmp differ