annotate data/model/SDLWidget.cpp @ 144:f3dce7a985cf

result display is better now.
author benoitrigolleau
date Tue, 13 Nov 2007 11:09:57 +0000
parents 2d883a374b79
children e63e8272dcb0
rev   line source
benoitrigolleau@132 1 #include <vector>
benoitrigolleau@132 2 #include <cstdlib>
benoitrigolleau@132 3 #include <ctime>
benoitrigolleau@132 4 #include "SDLWidget.h"
ivand_qmul@138 5 extern int Videow;
ivand_qmul@138 6 extern int Videoh;
benoitrigolleau@132 7
benoitrigolleau@139 8 #define MIN_WIDTH 320
benoitrigolleau@139 9 #define MIN_HEIGHT 240
benoitrigolleau@139 10
benoitrigolleau@132 11 SDLWidget::SDLWidget()
benoitrigolleau@132 12 :windowInitialized(false), screen(0)
benoitrigolleau@132 13 {
benoitrigolleau@132 14 setAttribute(Qt::WA_PaintOnScreen);
benoitrigolleau@132 15 setAttribute(Qt::WA_NoSystemBackground);
benoitrigolleau@139 16 zoomFactor = 1;
benoitrigolleau@139 17 setMinimumSize( MIN_WIDTH*zoomFactor,MIN_HEIGHT*zoomFactor );
benoitrigolleau@139 18
benoitrigolleau@132 19 }
benoitrigolleau@132 20
benoitrigolleau@132 21 SDLWidget::~SDLWidget()
benoitrigolleau@132 22 {
benoitrigolleau@132 23 SDL_Quit();
benoitrigolleau@132 24 }
benoitrigolleau@132 25
benoitrigolleau@139 26 void SDLWidget::setZoomFactor( float f )
benoitrigolleau@139 27 {
benoitrigolleau@139 28 int w, h;
benoitrigolleau@139 29
benoitrigolleau@139 30 if( f == zoomFactor )
benoitrigolleau@139 31 return;
benoitrigolleau@139 32
benoitrigolleau@139 33 zoomFactor = f;
benoitrigolleau@139 34
benoitrigolleau@139 35 w = MIN_WIDTH*zoomFactor;
benoitrigolleau@139 36 h = MIN_HEIGHT*zoomFactor;
benoitrigolleau@139 37 setMinimumSize( w, h );
benoitrigolleau@139 38 emit(sizeChanged(w,h));
benoitrigolleau@139 39
benoitrigolleau@139 40 /*QWidget *p = dynamic_cast<QWidget*>( parent() );
benoitrigolleau@139 41 if( p ){
benoitrigolleau@139 42 resize( p->width(), p->height() );
benoitrigolleau@139 43 }*/
benoitrigolleau@139 44 }
benoitrigolleau@139 45
benoitrigolleau@139 46 void SDLWidget::wheelEvent( QWheelEvent *event )
benoitrigolleau@139 47 {
benoitrigolleau@139 48 float f;
benoitrigolleau@139 49
benoitrigolleau@139 50 f = zoomFactor + 0.001*event->delta();
benoitrigolleau@139 51 if( f < 32.0/MIN_WIDTH ){
benoitrigolleau@139 52 f = 32.0/MIN_WIDTH;
benoitrigolleau@139 53 }
benoitrigolleau@139 54
benoitrigolleau@139 55 setZoomFactor( f );
benoitrigolleau@139 56 }
benoitrigolleau@139 57
benoitrigolleau@139 58
benoitrigolleau@132 59 void SDLWidget::showEvent(QShowEvent *e)
benoitrigolleau@132 60 {
benoitrigolleau@132 61 (void)e;
ivand_qmul@138 62
benoitrigolleau@132 63 if(!windowInitialized)
benoitrigolleau@132 64 {
benoitrigolleau@132 65 // it's here the link between SDL and QT
benoitrigolleau@132 66 char windowid[64];
benoitrigolleau@132 67 #ifdef Q_WS_WIN
benoitrigolleau@132 68 sprintf(windowid, "SDL_WINDOWID=0x%lx", reinterpret_cast<qlonglong>(winId()));
benoitrigolleau@132 69 #elif defined Q_WS_X11
benoitrigolleau@132 70 sprintf(windowid, "SDL_WINDOWID=0x%lx", winId());
benoitrigolleau@132 71 #else
benoitrigolleau@132 72 qFatal("uncorrect window ID");
benoitrigolleau@132 73 #endif
benoitrigolleau@132 74 SDL_putenv(windowid);
benoitrigolleau@132 75
benoitrigolleau@132 76 //SDL_Init(SDL_INIT_VIDEO);
benoitrigolleau@132 77 //screen = SDL_SetVideoMode(width(), height(), 32, SDL_SWSURFACE);
benoitrigolleau@132 78 windowInitialized = true;
benoitrigolleau@132 79 }
benoitrigolleau@139 80 }
benoitrigolleau@139 81