1 #include <lib/gdi/sdl.h>
3 #include <lib/base/init.h>
4 #include <lib/base/init_num.h>
10 if (SDL_Init(SDL_INIT_VIDEO) < 0)
12 eWarning("Could not initialize SDL: %s", SDL_GetError());
16 setResolution(720, 576);
18 CONNECT(m_pump.recv_msg, gSDLDC::pumpEvent);
21 m_surface.clut.colors=256;
22 m_surface.clut.data=new gRGB[m_surface.clut.colors];
24 m_pixmap = new gPixmap(&m_surface);
26 memset(m_surface.clut.data, 0, sizeof(*m_surface.clut.data)*m_surface.clut.colors);
34 void gSDLDC::setPalette()
36 if (!m_surface.clut.data)
39 /* for (int i=0; i<256; ++i)
41 fb->CMAP()->red[i]=ramp[m_surface.clut.data[i].r]<<8;
42 fb->CMAP()->green[i]=ramp[m_surface.clut.data[i].g]<<8;
43 fb->CMAP()->blue[i]=ramp[m_surface.clut.data[i].b]<<8;
44 fb->CMAP()->transp[i]=rampalpha[m_surface.clut.data[i].a]<<8;
45 if (!fb->CMAP()->red[i])
46 fb->CMAP()->red[i]=0x100;
51 void gSDLDC::exec(const gOpcode *o)
55 case gOpcode::setPalette:
71 void gSDLDC::setResolution(int xres, int yres)
73 m_screen = SDL_SetVideoMode(xres, yres, 32, SDL_HWSURFACE);
76 eWarning("Could not create SDL surface: %s", SDL_GetError());
80 m_surface.x = m_screen->w;
81 m_surface.y = m_screen->h;
82 m_surface.bpp = m_screen->format->BitsPerPixel;
83 m_surface.bypp = m_screen->format->BytesPerPixel;
84 m_surface.stride = m_screen->pitch;
85 m_surface.data = m_screen->pixels;
88 eAutoInitPtr<gSDLDC> init_gSDLDC(eAutoInitNumbers::graphic-1, "gSDLDC");