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:
parent
cf8ecc1dd4
commit
dbba06d9e1
@ -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 */
|
||||
}
|
||||
|
||||
/****************************************************
|
||||
|
||||
12
src/sdl.c
12
src/sdl.c
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user