#ifdef DREAMCAST
#include<kos.h>
#endif
#include<stdio.h>
#include<stdlib.h>
#include<SDL.h>
#include<SDL_image.h>
#include<SFont.h>
#ifdef DREAMCAST
#include <SDL_dreamcast.h>
#endif
/* cursor and font PNGs image files */
#include "cursor.h"
#include "font.h"
#define WIDTH 640
#define HEIGHT 480
SDL_Surface *screen=NULL,*font_surface,*cursor_surface;
SFont_FontInfo font;
unsigned posx=0, posy=0;
void clearevents(void)
{
SDL_Event event;
SDL_Delay(100);
while(SDL_PollEvent(&event))
SDL_Delay(20);
}
int getpos(void)
{
SDL_Event event;
int ret=0;
while(SDL_PollEvent(&event))
switch(event.type){
/* If press ESCAPE or mouse button or window close then exit application */
case SDL_KEYDOWN:
if (event.key.keysym.sym!=SDLK_ESCAPE)
break;
case SDL_QUIT:
case SDL_MOUSEBUTTONUP:
ret=-1;
case SDL_MOUSEMOTION:
posx=event.motion.x;
posy=event.motion.y;
break;
}
return ret;
}
int main(int narg,char**arg)
{
Uint32 flags=SDL_HWSURFACE|SDL_DOUBLEBUF;
char *msg=calloc(1,1024);
SDL_Surface *tmp;
unsigned col;
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK);
#ifdef DREAMCAST
SDL_DC_ShowAskHz(SDL_FALSE);
/* Map all START buttons as ESCAPE key */
SDL_DC_MapKey(0, SDL_DC_START, SDLK_ESCAPE);
SDL_DC_MapKey(1, SDL_DC_START, SDLK_ESCAPE);
SDL_DC_MapKey(2, SDL_DC_START, SDLK_ESCAPE);
SDL_DC_MapKey(3, SDL_DC_START, SDLK_ESCAPE);
flags|=SDL_FULLSCREEN;
#endif
screen=SDL_SetVideoMode(WIDTH,HEIGHT,0,flags);
/* Enable joystick/pad 0 for keyboard and mouse emulation */
SDL_JoystickEventState(SDL_ENABLE);
SDL_JoystickOpen(0);
SDL_ShowCursor(0);
col=SDL_MapRGB(screen->format,16,16,32);
tmp=IMG_Load_RW(SDL_RWFromMem((void *)&cursor_png,CURSOR_LEN),0);
cursor_surface=SDL_DisplayFormat(tmp);
SDL_FreeSurface(tmp);
tmp=IMG_Load_RW(SDL_RWFromMem((void*)&font_png, FONT_PNG_SIZE),0);
font_surface=SDL_DisplayFormat(tmp);
SDL_FreeSurface(tmp);
font.Surface=font_surface;
SFont_InitFontInfo(&font);
clearevents();
while(!getpos())
{
SDL_Rect r;
SDL_FillRect(screen,NULL,col);
r.x=posx; r.y=posy; r.w=cursor_surface->w; r.h=cursor_surface->h;
SDL_BlitSurface(cursor_surface,NULL,screen,&r);
sprintf(msg,"(%i,%i)",posx,posy);
SFont_XCenteredStringInfo(screen,&font,(screen->h+font_surface->h)>>1,msg);
SDL_Flip(screen);
SDL_Delay(20);
}
SDL_FreeSurface(font_surface);
SDL_Quit();
free(msg);
return 0;
}