Note: binaries for xuni-0.3.0-svn-92 released. http://sourceforge.net/project/showf...roup_id=223060
While I have a project, I need team experience too. I'd love to have your help.
Your first assignment: convert xuni to OpenGL.
Just kidding. Like I said, it would be a pretty big job. xuni uses a lot of SDL-specific functions.
Code:
=== SDL (note: includes SDL_framerate functions from SDL_gfx)
SDL_CreateCursor SDL_CreateRGBSurface SDL_DisplayFormatAlpha SDL_EnableKeyRepeat
SDL_EnableUNICODE SDL_EnableUNICODE SDL_FillRect SDL_FillRect SDL_framerateDelay
SDL_FreeCursor SDL_FreeSurface SDL_FreeSurface SDL_FreeSurface SDL_GetAppState
SDL_GetCursor SDL_GetError SDL_GetError SDL_GetMouseState SDL_GetMouseState
SDL_GetMouseState SDL_GetRelativeMouseState SDL_GetRGBA SDL_Init
SDL_initFramerate SDL_ListModes SDL_LoadFunction SDL_LoadObject SDL_LockSurface
SDL_MapRGB SDL_MapRGB SDL_PollEvent SDL_Quit SDL_RWFromFile SDL_SaveBMP_RW
SDL_SetColorKey SDL_SetCursor SDL_setFramerate SDL_SetVideoMode SDL_ShowCursor
SDL_UnloadObject SDL_UnlockSurface SDL_UpdateRect SDL_UpperBlit SDL_WaitEvent
SDL_WarpMouse SDL_WarpMouse SDL_WM_GrabInput SDL_WM_IconifyWindow
SDL_WM_SetCaption SDL_WM_SetIcon SDL_WM_ToggleFullScreen
=== SDL_gfx
gfxPrimitivesSetFont gfxPrimitivesSetFont rotozoomSurface SDL_framerateDelay
SDL_initFramerate SDL_setFramerate stringRGBA vlineRGBA zoomSurface
=== SDL_image
IMG_Load
=== SDL_ttf
TTF_CloseFont TTF_CloseFont TTF_FontHeight TTF_Init TTF_OpenFont TTF_Quit
TTF_RenderText_Blended TTF_SetFontStyle TTF_SizeText
(I'm sorry for the duplicate functions. Blame ld, not me.)
And then there's all of the SDL macros/constants used throughout the code, i.e. SDLK_ESCAPE and so on.
I know very little about OpenGL, but I think it would be possible to convert all of xuni's SDL dependencies into OpenGL ones. A good start would be reviewing the prototypes in graphics.h (the names are reasonably descriptive) to see if OpenGL has an equivalent.
You're right about there not being very many GUI toolkits for OpenGL, though. Agar is pretty nice, and there are others out there, but they are nearly all C++.
By the way, do you have any experience with git or Mercurial or bzr? (I have very little experience with any VCSs outside of Subversion, and a bit of CVS.) If someone else were to help me with xuni, it would probably have to use a distributed version control system instead of SVN. The main reason for this is that I'm using a local SVN repository as the "master" one that I commit to and everything, because I so rarely get online. I then replace the SVN repository on Sourceforge with mine whenever I get around to it. So this wouldn't work very well with multiple developers.
BTW, in a modified version of SVN 92, I made xuni only rescale images when they need to be painted. It just means it's a bit slow when you switch to a menu for the first time, for example. It helps xuni's memory consumption, assuming you don't visit all of the menus, and speeds up rescaling immensely.
I'm considering keeping xuni this way. Or maybe make another thread to do rescaling, so that xuni is repainted at a reasonable rate. On slower computers xuni was taking several seconds (sometimes five or six) to rescale everything, especially since the addition of the new theme glowbox, which has very big images.
You should see glowbox, by the way. I think it's quite neat, but not neat enough to make it xuni's default theme.