1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-13 23:27:12 +00:00

Add support for inverting video and setting mouse position.

Use (IL:VIDEOCOLOR T/NIL) to change inversion.
This commit is contained in:
Peter 2021-10-25 21:11:00 +02:00 committed by Nick Briggs
parent cf8ecc1dd4
commit dbba06d9e1
2 changed files with 21 additions and 3 deletions

View File

@ -69,6 +69,13 @@ LispPTR DSP_VideoColor(LispPTR *args) /* args[0] : black flag */
return ATOM_T;
else
return NIL;
#elif defined(SDL)
invert = args[0] & 0xFFFF;
sdl_set_invert(invert);
if (invert)
return ATOM_T;
else
return NIL;
#else
return NIL;
#endif
@ -114,6 +121,11 @@ void DSP_SetMousePos(LispPTR *args)
if (Mouse_Included)
set_Xmouseposition((int)(GetSmalldata(args[0])), (int)(GetSmalldata(args[1])));
#endif /* XWINDOW */
#ifdef SDL
int x = (int)(GetSmalldata(args[0]));
int y = (int)(GetSmalldata(args[1]));
sdl_setMousePosition(x, y);
#endif /* SDL */
}
/****************************************************

View File

@ -210,7 +210,7 @@ int should_update_texture = 0;
void sdl_notify_damage(int x, int y, int w, int h) {
should_update_texture = 1;
}
int do_invert = 0;
void sdl_bitblt_to_screen(int _x, int _y, int _w, int _h) {
//printf("bitblting\n");
int before = SDL_GetTicks();
@ -228,9 +228,9 @@ void sdl_bitblt_to_screen(int _x, int _y, int _w, int _h) {
//printf("%d/%d %d\n", x, y, b);
int px = 0;
if(w & (1 << (bpw - 1 - b))) {
px = 0xff000000;
px = do_invert ? 0xffffffff : 0xff000000;
} else {
px = 0xffffffff;
px = do_invert ? 0xff000000 : 0xffffffff;
}
//printf("px is %x\n", px);
int xx = thex + b;
@ -333,6 +333,12 @@ static int last_keystate[512] = { 0 };
/* } */
/* } */
/* } */
void sdl_set_invert(int flag) {
do_invert = flag;
}
void sdl_setMousePosition(int x, int y) {
SDL_WarpMouseInWindow(sdl_window, x, y);
}
int process_events_time = 0;
void process_SDLevents() {
// printf("processing events delta %dms\n", SDL_GetTicks() - process_events_time);