Compilation with SDL2 (to be finalized) > API=sdl2 make
This commit is contained in:
		
							parent
							
								
									5c761ace2c
								
							
						
					
					
						commit
						d86efa58e4
					
				
							
								
								
									
										24
									
								
								src/Makefile
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								src/Makefile
									
									
									
									
									
								
							@ -457,17 +457,31 @@ endif
 | 
				
			|||||||
      else
 | 
					      else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Compiles a regular linux executable for the native platform
 | 
					        # Compiles a regular linux executable for the native platform
 | 
				
			||||||
        BIN = ../bin/grafx2
 | 
					        BIN = ../bin/grafx2-$(API)
 | 
				
			||||||
        COPT = -W -Wall -Wdeclaration-after-statement -std=c99 -g $(shell sdl-config --cflags) $(TTFCOPT) $(LUACOPT) $(JOYCOPT) -O$(OPTIM)
 | 
					        COPT = -W -Wall -Wdeclaration-after-statement -std=c99 -g
 | 
				
			||||||
 | 
					        ifeq ($(API),sdl)
 | 
				
			||||||
 | 
					          COPT += $(shell sdl-config --cflags)
 | 
				
			||||||
 | 
					        endif
 | 
				
			||||||
 | 
					        ifeq ($(API),sdl2)
 | 
				
			||||||
 | 
					          COPT += $(shell sdl2-config --cflags)
 | 
				
			||||||
 | 
					        endif
 | 
				
			||||||
 | 
					        COPT += $(TTFCOPT) $(LUACOPT) $(JOYCOPT) -O$(OPTIM)
 | 
				
			||||||
        COPT += $(shell pkg-config --cflags libpng)
 | 
					        COPT += $(shell pkg-config --cflags libpng)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ifneq ($(PLATFORM), FreeBSD)
 | 
					        ifneq ($(PLATFORM), FreeBSD)
 | 
				
			||||||
          COPT += -D_XOPEN_SOURCE=700
 | 
					          COPT += -D_XOPEN_SOURCE=700
 | 
				
			||||||
        endif
 | 
					        endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOPT = $(shell sdl-config --libs) -lSDL_image $(TTFLOPT)
 | 
					        LOPT = -lm
 | 
				
			||||||
 | 
					        ifeq ($(API),sdl)
 | 
				
			||||||
 | 
					          LOPT += $(shell sdl-config --libs) -lSDL_image
 | 
				
			||||||
 | 
					        endif
 | 
				
			||||||
 | 
					        ifeq ($(API),sdl2)
 | 
				
			||||||
 | 
					          LOPT += $(shell sdl2-config --libs) -lSDL2_image
 | 
				
			||||||
 | 
					        endif
 | 
				
			||||||
 | 
					        LOPT += $(TTFLOPT)
 | 
				
			||||||
        LOPT += $(shell pkg-config --libs libpng)
 | 
					        LOPT += $(shell pkg-config --libs libpng)
 | 
				
			||||||
        LOPT += $(LUALOPT) -lm
 | 
					        LOPT += $(LUALOPT)
 | 
				
			||||||
        OBJDIR = ../obj/unix
 | 
					        OBJDIR = ../obj/unix
 | 
				
			||||||
        FCLOPT = -lfontconfig
 | 
					        FCLOPT = -lfontconfig
 | 
				
			||||||
        COPT += -DUSE_FC
 | 
					        COPT += -DUSE_FC
 | 
				
			||||||
@ -549,7 +563,7 @@ ifeq ($(API),sdl)
 | 
				
			|||||||
  COPT += -DUSE_SDL
 | 
					  COPT += -DUSE_SDL
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
ifeq ($(API),sdl2)
 | 
					ifeq ($(API),sdl2)
 | 
				
			||||||
  #APIOBJ = sdlscreen.o
 | 
					  APIOBJ = sdlscreen.o
 | 
				
			||||||
  COPT += -DUSE_SDL2
 | 
					  COPT += -DUSE_SDL2
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -452,7 +452,11 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "Around. What gets out from a side",
 | 
					  "Around. What gets out from a side",
 | 
				
			||||||
  "reappears on the other.",
 | 
					  "reappears on the other.",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  SDLK_KP5, // Kpad5
 | 
					  SDLK_KP5, // Kpad5
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  SDLK_KP_5, // Kpad5
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  0},
 | 
					  0},
 | 
				
			||||||
  {48,
 | 
					  {48,
 | 
				
			||||||
  "Picture effects",
 | 
					  "Picture effects",
 | 
				
			||||||
@ -460,7 +464,11 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "",
 | 
					  "",
 | 
				
			||||||
  "",
 | 
					  "",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  SDLK_KP5|MOD_SHIFT, // Shift + Kpad5
 | 
					  SDLK_KP5|MOD_SHIFT, // Shift + Kpad5
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  SDLK_KP_5|MOD_SHIFT, // Shift + Kpad5
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  0},
 | 
					  0},
 | 
				
			||||||
  {49,
 | 
					  {49,
 | 
				
			||||||
  "Drawing effects",
 | 
					  "Drawing effects",
 | 
				
			||||||
@ -1100,7 +1108,11 @@ T_Key_config ConfigKey[NB_SHORTCUTS] = {
 | 
				
			|||||||
  "user-defined brush to its center.",
 | 
					  "user-defined brush to its center.",
 | 
				
			||||||
  "",
 | 
					  "",
 | 
				
			||||||
  true,
 | 
					  true,
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  SDLK_KP5|MOD_CTRL, // Ctrl + 5 (pavé numérique)
 | 
					  SDLK_KP5|MOD_CTRL, // Ctrl + 5 (pavé numérique)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  SDLK_KP_5|MOD_CTRL, // Ctrl + 5 (pavé numérique)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  0},
 | 
					  0},
 | 
				
			||||||
  {113,
 | 
					  {113,
 | 
				
			||||||
  "Top-left brush attachment point",
 | 
					  "Top-left brush attachment point",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										48
									
								
								src/init.c
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								src/init.c
									
									
									
									
									
								
							@ -44,9 +44,11 @@
 | 
				
			|||||||
#include <stdlib.h>
 | 
					#include <stdlib.h>
 | 
				
			||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
#if defined(USE_SDL) || defined(USE_SDL2)
 | 
					#if defined(USE_SDL) || defined(USE_SDL2)
 | 
				
			||||||
#include <SDL_byteorder.h>
 | 
					 | 
				
			||||||
#include <SDL_image.h>
 | 
					#include <SDL_image.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
 | 
					#include <SDL_byteorder.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#if defined(__WIN32__)
 | 
					#if defined(__WIN32__)
 | 
				
			||||||
  #include <windows.h> // GetLogicalDrives(), GetDriveType(), DRIVE_*
 | 
					  #include <windows.h> // GetLogicalDrives(), GetDriveType(), DRIVE_*
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@ -1918,10 +1920,10 @@ void Init_operations(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  // Définition d'un mode:
 | 
					  // Définition d'un mode:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Set_video_mode(short  width,
 | 
					static void Set_video_mode(short  width,
 | 
				
			||||||
                        short  height,
 | 
					                           short  height,
 | 
				
			||||||
                        byte   mode,
 | 
					                           byte   mode,
 | 
				
			||||||
                        word   fullscreen)
 | 
					                           word   fullscreen)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  byte supported = 0;
 | 
					  byte supported = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1932,19 +1934,21 @@ void Set_video_mode(short  width,
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
  if (!fullscreen)
 | 
					  if (!fullscreen)
 | 
				
			||||||
    supported = 128; // Prefere, non modifiable
 | 
					    supported = 128; // Prefere, non modifiable
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  else if (SDL_VideoModeOK(width, height, 8, SDL_FULLSCREEN))
 | 
					  else if (SDL_VideoModeOK(width, height, 8, SDL_FULLSCREEN))
 | 
				
			||||||
    supported = 1; // supported
 | 
					    supported = 1; // supported
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    // Non supporte : on ne le prend pas
 | 
					    // Non supporte : on ne le prend pas
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Video_mode[Nb_video_modes].Width          = width;
 | 
					  Video_mode[Nb_video_modes].Width      = width;
 | 
				
			||||||
  Video_mode[Nb_video_modes].Height          = height;
 | 
					  Video_mode[Nb_video_modes].Height     = height;
 | 
				
			||||||
  Video_mode[Nb_video_modes].Mode             = mode;
 | 
					  Video_mode[Nb_video_modes].Mode       = mode;
 | 
				
			||||||
  Video_mode[Nb_video_modes].Fullscreen       = fullscreen;
 | 
					  Video_mode[Nb_video_modes].Fullscreen = fullscreen;
 | 
				
			||||||
  Video_mode[Nb_video_modes].State                   = supported;
 | 
					  Video_mode[Nb_video_modes].State      = supported;
 | 
				
			||||||
  Nb_video_modes ++;
 | 
					  Nb_video_modes ++;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1966,7 +1970,9 @@ int Compare_video_modes(const void *p1, const void *p2)
 | 
				
			|||||||
// Initializes the list of available video modes
 | 
					// Initializes the list of available video modes
 | 
				
			||||||
void Set_all_video_modes(void)
 | 
					void Set_all_video_modes(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  SDL_Rect** Modes;
 | 
					  SDL_Rect** Modes;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  Nb_video_modes=0;
 | 
					  Nb_video_modes=0;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // The first mode will have index number 0.
 | 
					  // The first mode will have index number 0.
 | 
				
			||||||
@ -2044,6 +2050,7 @@ void Set_all_video_modes(void)
 | 
				
			|||||||
  Set_video_mode( 800,600,0, 1);
 | 
					  Set_video_mode( 800,600,0, 1);
 | 
				
			||||||
  Set_video_mode(1024,768,0, 1);
 | 
					  Set_video_mode(1024,768,0, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  Modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
 | 
					  Modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
 | 
				
			||||||
  if ((Modes != (SDL_Rect**)0) && (Modes!=(SDL_Rect**)-1))
 | 
					  if ((Modes != (SDL_Rect**)0) && (Modes!=(SDL_Rect**)-1))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@ -2074,6 +2081,17 @@ void Set_all_video_modes(void)
 | 
				
			|||||||
    // Note that we voluntarily omit the first entry: the default mode.
 | 
					    // Note that we voluntarily omit the first entry: the default mode.
 | 
				
			||||||
    qsort(&Video_mode[1], Nb_video_modes - 1, sizeof(T_Video_mode), Compare_video_modes);
 | 
					    qsort(&Video_mode[1], Nb_video_modes - 1, sizeof(T_Video_mode), Compare_video_modes);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(USE_SDL2)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    SDL_DisplayMode dm;
 | 
				
			||||||
 | 
					    if (SDL_GetDesktopDisplayMode(0, &dm) == 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      // Set the native desktop video mode
 | 
				
			||||||
 | 
					      Set_video_mode(dm.w, dm.h, 0, 1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//---------------------------------------------------------------------------
 | 
					//---------------------------------------------------------------------------
 | 
				
			||||||
@ -3196,9 +3214,13 @@ void Define_icon(void)
 | 
				
			|||||||
      if (icon->format->BitsPerPixel == 8)
 | 
					      if (icon->format->BitsPerPixel == 8)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        // 8bit image: use color key
 | 
					        // 8bit image: use color key
 | 
				
			||||||
        
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
        SDL_SetColorKey(icon, SDL_SRCCOLORKEY, pink);
 | 
					        SDL_SetColorKey(icon, SDL_SRCCOLORKEY, pink);
 | 
				
			||||||
        SDL_WM_SetIcon(icon,NULL);
 | 
					        SDL_WM_SetIcon(icon,NULL);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        SDL_SetColorKey(icon, SDL_TRUE, pink);
 | 
				
			||||||
 | 
					        //SDL_SetWindowIcon(SDL_Window*  window, icon);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -3213,7 +3235,11 @@ void Define_icon(void)
 | 
				
			|||||||
          for (x=0;x<32;x++)
 | 
					          for (x=0;x<32;x++)
 | 
				
			||||||
            if (Get_SDL_pixel_hicolor(icon, x, y) != pink)
 | 
					            if (Get_SDL_pixel_hicolor(icon, x, y) != pink)
 | 
				
			||||||
              icon_mask[(y*32+x)/8] |=0x80>>(x&7);
 | 
					              icon_mask[(y*32+x)/8] |=0x80>>(x&7);
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
        SDL_WM_SetIcon(icon,icon_mask);
 | 
					        SDL_WM_SetIcon(icon,icon_mask);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        //SDL_SetWindowIcon(SDL_Window*  window, icon);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
        free(icon_mask);
 | 
					        free(icon_mask);
 | 
				
			||||||
        icon_mask = NULL;
 | 
					        icon_mask = NULL;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										42
									
								
								src/input.c
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								src/input.c
									
									
									
									
									
								
							@ -47,7 +47,9 @@
 | 
				
			|||||||
// generic defaults like "Right Amiga+Q = Quit".
 | 
					// generic defaults like "Right Amiga+Q = Quit".
 | 
				
			||||||
// In case this is annoying for some platforms, disable it.
 | 
					// In case this is annoying for some platforms, disable it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
void Handle_window_resize(SDL_ResizeEvent event);
 | 
					void Handle_window_resize(SDL_ResizeEvent event);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
void Handle_window_exit(SDL_QuitEvent event);
 | 
					void Handle_window_exit(SDL_QuitEvent event);
 | 
				
			||||||
static int Color_cycling(void);
 | 
					static int Color_cycling(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -292,11 +294,13 @@ int Move_cursor_with_constraints()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// WM events management
 | 
					// WM events management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
void Handle_window_resize(SDL_ResizeEvent event)
 | 
					void Handle_window_resize(SDL_ResizeEvent event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    Resize_width = event.w;
 | 
					    Resize_width = event.w;
 | 
				
			||||||
    Resize_height = event.h;
 | 
					    Resize_height = event.h;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Handle_window_exit(SDL_QuitEvent event)
 | 
					void Handle_window_exit(SDL_QuitEvent event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -338,6 +342,9 @@ int Handle_mouse_click(SDL_MouseButtonEvent event)
 | 
				
			|||||||
            // TODO: repeat system maybe?
 | 
					            // TODO: repeat system maybe?
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // In SDL 2.0 the mousewheel is no longer a button.
 | 
				
			||||||
 | 
					        // Look for SDL_MOUSEWHEEL events.
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
        case SDL_BUTTON_WHEELUP:
 | 
					        case SDL_BUTTON_WHEELUP:
 | 
				
			||||||
            Key = KEY_MOUSEWHEELUP|Key_modifiers(SDL_GetModState());
 | 
					            Key = KEY_MOUSEWHEELUP|Key_modifiers(SDL_GetModState());
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
@ -345,6 +352,7 @@ int Handle_mouse_click(SDL_MouseButtonEvent event)
 | 
				
			|||||||
        case SDL_BUTTON_WHEELDOWN:
 | 
					        case SDL_BUTTON_WHEELDOWN:
 | 
				
			||||||
            Key = KEY_MOUSEWHEELDOWN|Key_modifiers(SDL_GetModState());
 | 
					            Key = KEY_MOUSEWHEELDOWN|Key_modifiers(SDL_GetModState());
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
@ -376,6 +384,7 @@ int Handle_mouse_release(SDL_MouseButtonEvent event)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Keyboard management
 | 
					// Keyboard management
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
int Handle_key_press(SDL_KeyboardEvent event)
 | 
					int Handle_key_press(SDL_KeyboardEvent event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    //Appui sur une touche du clavier
 | 
					    //Appui sur une touche du clavier
 | 
				
			||||||
@ -468,6 +477,7 @@ int Handle_key_press(SDL_KeyboardEvent event)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int Release_control(int key_code, int modifier)
 | 
					int Release_control(int key_code, int modifier)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -543,6 +553,7 @@ int Release_control(int key_code, int modifier)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
int Handle_key_release(SDL_KeyboardEvent event)
 | 
					int Handle_key_release(SDL_KeyboardEvent event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    int modifier;
 | 
					    int modifier;
 | 
				
			||||||
@ -583,6 +594,7 @@ int Handle_key_release(SDL_KeyboardEvent event)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return Release_control(released_key, modifier);
 | 
					    return Release_control(released_key, modifier);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Joystick management
 | 
					// Joystick management
 | 
				
			||||||
@ -610,7 +622,11 @@ int Handle_joystick_press(SDL_JoyButtonEvent event)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    if (event.button == Joybutton_alt)
 | 
					    if (event.button == Joybutton_alt)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
      SDL_SetModState(SDL_GetModState() | (KMOD_ALT|KMOD_META));
 | 
					      SDL_SetModState(SDL_GetModState() | (KMOD_ALT|KMOD_META));
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					      SDL_SetModState(SDL_GetModState() | (KMOD_ALT|KMOD_GUI));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
      if (Config.Swap_buttons == MOD_ALT && Button_inverter==0)
 | 
					      if (Config.Swap_buttons == MOD_ALT && Button_inverter==0)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        Button_inverter=1;
 | 
					        Button_inverter=1;
 | 
				
			||||||
@ -699,7 +715,11 @@ int Handle_joystick_release(SDL_JoyButtonEvent event)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    if (event.button == Joybutton_alt)
 | 
					    if (event.button == Joybutton_alt)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
      SDL_SetModState(SDL_GetModState() & ~(KMOD_ALT|KMOD_META));
 | 
					      SDL_SetModState(SDL_GetModState() & ~(KMOD_ALT|KMOD_META));
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					      SDL_SetModState(SDL_GetModState() & ~(KMOD_ALT|KMOD_GUI));
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
      return Release_control(0,MOD_ALT);
 | 
					      return Release_control(0,MOD_ALT);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (event.button == Joybutton_left_click)
 | 
					    if (event.button == Joybutton_left_click)
 | 
				
			||||||
@ -869,14 +889,20 @@ int Get_input(int sleep_time)
 | 
				
			|||||||
    // Process as much events as possible without redrawing the screen.
 | 
					    // Process as much events as possible without redrawing the screen.
 | 
				
			||||||
    // This mostly allows us to merge mouse events for people with an high
 | 
					    // This mostly allows us to merge mouse events for people with an high
 | 
				
			||||||
    // resolution mouse
 | 
					    // resolution mouse
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
    while(!user_feedback_required && SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_ALLEVENTS)==1)
 | 
					    while(!user_feedback_required && SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_ALLEVENTS)==1)
 | 
				
			||||||
 | 
					#elif defined(USE_SDL2)
 | 
				
			||||||
 | 
					    while(!user_feedback_required && SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT)==1)
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      switch(event.type)
 | 
					      switch(event.type)
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
          case SDL_VIDEORESIZE:
 | 
					          case SDL_VIDEORESIZE:
 | 
				
			||||||
              Handle_window_resize(event.resize);
 | 
					              Handle_window_resize(event.resize);
 | 
				
			||||||
              user_feedback_required = 1;
 | 
					              user_feedback_required = 1;
 | 
				
			||||||
              break;
 | 
					              break;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          case SDL_QUIT:
 | 
					          case SDL_QUIT:
 | 
				
			||||||
              Handle_window_exit(event.quit);
 | 
					              Handle_window_exit(event.quit);
 | 
				
			||||||
@ -897,13 +923,25 @@ int Get_input(int sleep_time)
 | 
				
			|||||||
              user_feedback_required = 1;
 | 
					              user_feedback_required = 1;
 | 
				
			||||||
              break;
 | 
					              break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL2)
 | 
				
			||||||
 | 
					          //case SDL_MOUSEWHEEL:
 | 
				
			||||||
 | 
					          //    break;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          case SDL_KEYDOWN:
 | 
					          case SDL_KEYDOWN:
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
              Handle_key_press(event.key);
 | 
					              Handle_key_press(event.key);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					              //TODO SDL2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
              user_feedback_required = 1;
 | 
					              user_feedback_required = 1;
 | 
				
			||||||
              break;
 | 
					              break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          case SDL_KEYUP:
 | 
					          case SDL_KEYUP:
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
              Handle_key_release(event.key);
 | 
					              Handle_key_release(event.key);
 | 
				
			||||||
 | 
					              //TODO SDL2
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
              break;
 | 
					              break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          // Start of Joystik handling
 | 
					          // Start of Joystik handling
 | 
				
			||||||
@ -1064,7 +1102,11 @@ void Adjust_mouse_sensitivity(word fullscreen)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void Set_mouse_position(void)
 | 
					void Set_mouse_position(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
    SDL_WarpMouse(Mouse_X*Pixel_width, Mouse_Y*Pixel_height);
 | 
					    SDL_WarpMouse(Mouse_X*Pixel_width, Mouse_Y*Pixel_height);
 | 
				
			||||||
 | 
					#elif defined(USE_SDL2)
 | 
				
			||||||
 | 
					    //SDL_WarpMouseInWindow(Window_SDL, Mouse_X*Pixel_width, Mouse_Y*Pixel_height);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int Color_cycling(void)
 | 
					static int Color_cycling(void)
 | 
				
			||||||
 | 
				
			|||||||
@ -39,12 +39,13 @@
 | 
				
			|||||||
  #define META_KEY_PREFIX "Super+"
 | 
					  #define META_KEY_PREFIX "Super+"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
// Table de correspondance des scancode de clavier IBM PC AT vers
 | 
					// Table de correspondance des scancode de clavier IBM PC AT vers
 | 
				
			||||||
// les symboles de touches SDL (sym).
 | 
					// les symboles de touches SDL (sym).
 | 
				
			||||||
// La correspondance est bonne si le clavier est QWERTY US, ou si
 | 
					// La correspondance est bonne si le clavier est QWERTY US, ou si
 | 
				
			||||||
// l'utilisateur est sous Windows.
 | 
					// l'utilisateur est sous Windows.
 | 
				
			||||||
// Dans l'ordre des colonnes: Normal, +Shift, +Control, +Alt
 | 
					// Dans l'ordre des colonnes: Normal, +Shift, +Control, +Alt
 | 
				
			||||||
const word Scancode_to_sym[256][4] =
 | 
					static const word Scancode_to_sym[256][4] =
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
/* 00  ???   */ { SDLK_UNKNOWN     ,SDLK_UNKNOWN     ,SDLK_UNKNOWN     ,SDLK_UNKNOWN     },
 | 
					/* 00  ???   */ { SDLK_UNKNOWN     ,SDLK_UNKNOWN     ,SDLK_UNKNOWN     ,SDLK_UNKNOWN     },
 | 
				
			||||||
/* 01  Esc   */ { SDLK_ESCAPE      ,SDLK_ESCAPE      ,SDLK_ESCAPE      ,SDLK_ESCAPE      },
 | 
					/* 01  Esc   */ { SDLK_ESCAPE      ,SDLK_ESCAPE      ,SDLK_ESCAPE      ,SDLK_ESCAPE      },
 | 
				
			||||||
@ -749,3 +750,18 @@ word Keysym_to_ANSI(SDL_keysym keysym)
 | 
				
			|||||||
 // Sinon c'est une touche spéciale, on retourne son scancode
 | 
					 // Sinon c'est une touche spéciale, on retourne son scancode
 | 
				
			||||||
  return keysym.sym;
 | 
					  return keysym.sym;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					// SDL2 TODO
 | 
				
			||||||
 | 
					word Key_for_scancode(word scancode)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return scancode;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					const char * Key_name(word key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return "Unknown";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					word Key_modifiers(SDL_Keymod mod)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -43,7 +43,9 @@
 | 
				
			|||||||
  This is used to type text and numeric values in input boxes.
 | 
					  This is used to type text and numeric values in input boxes.
 | 
				
			||||||
  @param keysym SDL symbol to convert
 | 
					  @param keysym SDL symbol to convert
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
word Keysym_to_ANSI(SDL_keysym keysym);
 | 
					word Keysym_to_ANSI(SDL_keysym keysym);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*!
 | 
					/*!
 | 
				
			||||||
  Convert an SDL keysym to an internal keycode number.
 | 
					  Convert an SDL keysym to an internal keycode number.
 | 
				
			||||||
@ -52,7 +54,9 @@ word Keysym_to_ANSI(SDL_keysym keysym);
 | 
				
			|||||||
  See the notice at the beginning of keyboard.h for the format of a keycode.
 | 
					  See the notice at the beginning of keyboard.h for the format of a keycode.
 | 
				
			||||||
  @param keysym SDL symbol to convert
 | 
					  @param keysym SDL symbol to convert
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
word Keysym_to_keycode(SDL_keysym keysym);
 | 
					word Keysym_to_keycode(SDL_keysym keysym);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*!
 | 
					/*!
 | 
				
			||||||
    Helper function to convert between SDL system and the old coding for PC keycodes.
 | 
					    Helper function to convert between SDL system and the old coding for PC keycodes.
 | 
				
			||||||
@ -73,5 +77,9 @@ const char * Key_name(word key);
 | 
				
			|||||||
  Returns a combination of ::MOD_SHIFT, ::MOD_ALT, ::MOD_CTRL
 | 
					  Returns a combination of ::MOD_SHIFT, ::MOD_ALT, ::MOD_CTRL
 | 
				
			||||||
  @param mod SDL modifiers state
 | 
					  @param mod SDL modifiers state
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
word Key_modifiers(SDLMod mod);
 | 
					word Key_modifiers(SDLMod mod);
 | 
				
			||||||
 | 
					#elif defined(USE_SDL2)
 | 
				
			||||||
 | 
					word Key_modifiers(SDL_Keymod mod);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -38,14 +38,15 @@
 | 
				
			|||||||
#ifndef _MSC_VER
 | 
					#ifndef _MSC_VER
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#if defined(USE_SDL) || defined(USE_SDL2)
 | 
				
			||||||
#include <SDL.h>
 | 
					#include <SDL.h>
 | 
				
			||||||
#include <SDL_image.h>
 | 
					#include <SDL_image.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
// There is no WM on the GP2X...
 | 
					// There is no WM on the GP2X...
 | 
				
			||||||
#if !defined(__GP2X__) && !defined(__WIZ__) && !defined(__CAANOO__) && !defined(GCWZERO)
 | 
					#if !defined(__GP2X__) && !defined(__WIZ__) && !defined(__CAANOO__) && !defined(GCWZERO)
 | 
				
			||||||
    #include <SDL_syswm.h>
 | 
					    #include <SDL_syswm.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "const.h"
 | 
					#include "const.h"
 | 
				
			||||||
#include "struct.h"
 | 
					#include "struct.h"
 | 
				
			||||||
@ -623,6 +624,7 @@ int Init_program(int argc,char * argv[])
 | 
				
			|||||||
  Spare.time_of_safety_backup = 0;
 | 
					  Spare.time_of_safety_backup = 0;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL) || defined(USE_SDL2)
 | 
				
			||||||
  // SDL
 | 
					  // SDL
 | 
				
			||||||
  if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0)
 | 
					  if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@ -630,11 +632,14 @@ int Init_program(int argc,char * argv[])
 | 
				
			|||||||
    printf("Couldn't initialize SDL.\n");
 | 
					    printf("Couldn't initialize SDL.\n");
 | 
				
			||||||
    return(0);
 | 
					    return(0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  //Joystick = SDL_JoystickOpen(0);
 | 
					  //Joystick = SDL_JoystickOpen(0);
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  SDL_EnableKeyRepeat(250, 32);
 | 
					  SDL_EnableKeyRepeat(250, 32);
 | 
				
			||||||
  SDL_EnableUNICODE(SDL_ENABLE);
 | 
					  SDL_EnableUNICODE(SDL_ENABLE);
 | 
				
			||||||
  SDL_WM_SetCaption("GrafX2","GrafX2");
 | 
					  SDL_WM_SetCaption("GrafX2","GrafX2");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  Define_icon();
 | 
					  Define_icon();
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Texte
 | 
					  // Texte
 | 
				
			||||||
 | 
				
			|||||||
@ -65,6 +65,11 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SDL_Surface * Screen_SDL = NULL;
 | 
					static SDL_Surface * Screen_SDL = NULL;
 | 
				
			||||||
 | 
					#if defined(USE_SDL2)
 | 
				
			||||||
 | 
					static SDL_Window * Window_SDL = NULL;
 | 
				
			||||||
 | 
					static SDL_Renderer * Renderer_SDL = NULL;
 | 
				
			||||||
 | 
					static SDL_Texture * Texture_SDL = NULL;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
volatile int Allow_colorcycling=1;
 | 
					volatile int Allow_colorcycling=1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -114,6 +119,7 @@ void Set_mode_SDL(int *width, int *height, int fullscreen)
 | 
				
			|||||||
  static SDL_Cursor* cur = NULL;
 | 
					  static SDL_Cursor* cur = NULL;
 | 
				
			||||||
  static byte cursorData = 0;
 | 
					  static byte cursorData = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
#ifdef GCWZERO
 | 
					#ifdef GCWZERO
 | 
				
			||||||
  Screen_SDL=SDL_SetVideoMode(*width,*height,8,SDL_HWSURFACE|SDL_TRIPLEBUF|(fullscreen?SDL_FULLSCREEN:0)|SDL_RESIZABLE);
 | 
					  Screen_SDL=SDL_SetVideoMode(*width,*height,8,SDL_HWSURFACE|SDL_TRIPLEBUF|(fullscreen?SDL_FULLSCREEN:0)|SDL_RESIZABLE);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
@ -134,6 +140,14 @@ void Set_mode_SDL(int *width, int *height, int fullscreen)
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    DEBUG("Error: Unable to change video mode!",0);
 | 
					    DEBUG("Error: Unable to change video mode!",0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  // SDL2
 | 
				
			||||||
 | 
					  Window_SDL = SDL_CreateWindow("GrafX2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
 | 
				
			||||||
 | 
					                                *width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
 | 
				
			||||||
 | 
					  Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
 | 
				
			||||||
 | 
					  Texture_SDL = SDL_CreateTexture(Renderer_SDL, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, *width, *height);
 | 
				
			||||||
 | 
					  Screen_SDL = SDL_CreateRGBSurface(0, *width, *height, 8, 0, 0, 0, 0);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Trick borrowed to Barrage (http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg737265.html) :
 | 
					  // Trick borrowed to Barrage (http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg737265.html) :
 | 
				
			||||||
  // Showing the cursor but setting it to fully transparent allows us to get absolute mouse coordinates,
 | 
					  // Showing the cursor but setting it to fully transparent allows us to get absolute mouse coordinates,
 | 
				
			||||||
@ -153,6 +167,40 @@ void Set_mode_SDL(int *width, int *height, int fullscreen)
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(USE_SDL2)
 | 
				
			||||||
 | 
					static void GFX2_UpdateRect(int x, int y, int width, int height)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  byte * pixels;
 | 
				
			||||||
 | 
					  int pitch;
 | 
				
			||||||
 | 
					  int line;
 | 
				
			||||||
 | 
					  static SDL_Surface *RGBcopy = NULL;
 | 
				
			||||||
 | 
					  SDL_Rect source_rect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  source_rect.x = x;
 | 
				
			||||||
 | 
					  source_rect.y = y;
 | 
				
			||||||
 | 
					  source_rect.w = width;
 | 
				
			||||||
 | 
					  source_rect.h = height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if  (RGBcopy == NULL)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    RGBcopy = SDL_CreateRGBSurface(0,
 | 
				
			||||||
 | 
					    Screen_SDL->w, Screen_SDL->h,
 | 
				
			||||||
 | 
					    32, 0, 0, 0, 0);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  // conversion ARGB
 | 
				
			||||||
 | 
					  SDL_BlitSurface(Screen_SDL, &source_rect, RGBcopy, &source_rect);
 | 
				
			||||||
 | 
					  // upload texture
 | 
				
			||||||
 | 
					  SDL_LockTexture(Texture_SDL, &source_rect, (void **)(&pixels), &pitch );
 | 
				
			||||||
 | 
					  for (line = 0; line < source_rect.h; line++)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					     memcpy(pixels + line * pitch, RGBcopy->pixels + source_rect.x * 4 + (source_rect.y+line)* RGBcopy->pitch, source_rect.w * 4 );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  SDL_UnlockTexture(Texture_SDL);
 | 
				
			||||||
 | 
					  SDL_RenderCopy(Renderer_SDL, Texture_SDL, &source_rect, &source_rect);
 | 
				
			||||||
 | 
					  SDL_RenderPresent(Renderer_SDL);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if (UPDATE_METHOD == UPDATE_METHOD_CUMULATED)
 | 
					#if (UPDATE_METHOD == UPDATE_METHOD_CUMULATED)
 | 
				
			||||||
short Min_X=0;
 | 
					short Min_X=0;
 | 
				
			||||||
short Min_Y=0;
 | 
					short Min_Y=0;
 | 
				
			||||||
@ -174,8 +222,10 @@ void Flush_update(void)
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
#ifdef GCWZERO
 | 
					#ifdef GCWZERO
 | 
				
			||||||
    SDL_Flip(Screen_SDL);
 | 
					    SDL_Flip(Screen_SDL);
 | 
				
			||||||
#else
 | 
					#elif defined(USE_SDL)
 | 
				
			||||||
    SDL_UpdateRect(Screen_SDL, 0, 0, 0, 0);
 | 
					    SDL_UpdateRect(Screen_SDL, 0, 0, 0, 0);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    GFX2_UpdateRect(0, 0, 0, 0);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    update_is_required=0;
 | 
					    update_is_required=0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -191,14 +241,22 @@ void Flush_update(void)
 | 
				
			|||||||
      Min_X=0;
 | 
					      Min_X=0;
 | 
				
			||||||
    if (Min_Y<0)
 | 
					    if (Min_Y<0)
 | 
				
			||||||
      Min_Y=0;
 | 
					      Min_Y=0;
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
    SDL_UpdateRect(Screen_SDL, Min_X*Pixel_width, Min_Y*Pixel_height, Min(Screen_width-Min_X, Max_X-Min_X)*Pixel_width, Min(Screen_height-Min_Y, Max_Y-Min_Y)*Pixel_height);
 | 
					    SDL_UpdateRect(Screen_SDL, Min_X*Pixel_width, Min_Y*Pixel_height, Min(Screen_width-Min_X, Max_X-Min_X)*Pixel_width, Min(Screen_height-Min_Y, Max_Y-Min_Y)*Pixel_height);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    GFX2_UpdateRect(Min_X*Pixel_width, Min_Y*Pixel_height, Min(Screen_width-Min_X, Max_X-Min_X)*Pixel_width, Min(Screen_height-Min_Y, Max_Y-Min_Y)*Pixel_height);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Min_X=Min_Y=10000;
 | 
					    Min_X=Min_Y=10000;
 | 
				
			||||||
    Max_X=Max_Y=0;
 | 
					    Max_X=Max_Y=0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (Status_line_dirty_end)
 | 
					  if (Status_line_dirty_end)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
    SDL_UpdateRect(Screen_SDL, (18+(Status_line_dirty_begin*8))*Menu_factor_X*Pixel_width,Menu_status_Y*Pixel_height,(Status_line_dirty_end-Status_line_dirty_begin)*8*Menu_factor_X*Pixel_width,8*Menu_factor_Y*Pixel_height);
 | 
					    SDL_UpdateRect(Screen_SDL, (18+(Status_line_dirty_begin*8))*Menu_factor_X*Pixel_width,Menu_status_Y*Pixel_height,(Status_line_dirty_end-Status_line_dirty_begin)*8*Menu_factor_X*Pixel_width,8*Menu_factor_Y*Pixel_height);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    GFX2_UpdateRect((18+(Status_line_dirty_begin*8))*Menu_factor_X*Pixel_width,Menu_status_Y*Pixel_height,(Status_line_dirty_end-Status_line_dirty_begin)*8*Menu_factor_X*Pixel_width,8*Menu_factor_Y*Pixel_height);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  Status_line_dirty_begin=25;
 | 
					  Status_line_dirty_begin=25;
 | 
				
			||||||
  Status_line_dirty_end=0;
 | 
					  Status_line_dirty_end=0;
 | 
				
			||||||
@ -210,7 +268,11 @@ void Flush_update(void)
 | 
				
			|||||||
void Update_rect(short x, short y, unsigned short width, unsigned short height)
 | 
					void Update_rect(short x, short y, unsigned short width, unsigned short height)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  #if (UPDATE_METHOD == UPDATE_METHOD_MULTI_RECTANGLE)
 | 
					  #if (UPDATE_METHOD == UPDATE_METHOD_MULTI_RECTANGLE)
 | 
				
			||||||
 | 
					    #if defined(USE_SDL)
 | 
				
			||||||
    SDL_UpdateRect(Screen_SDL, x*Pixel_width, y*Pixel_height, width*Pixel_width, height*Pixel_height);
 | 
					    SDL_UpdateRect(Screen_SDL, x*Pixel_width, y*Pixel_height, width*Pixel_width, height*Pixel_height);
 | 
				
			||||||
 | 
					    #else
 | 
				
			||||||
 | 
					    GFX2_UpdateRect(x*Pixel_width, y*Pixel_height, width*Pixel_width, height*Pixel_height);
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #if (UPDATE_METHOD == UPDATE_METHOD_CUMULATED)
 | 
					  #if (UPDATE_METHOD == UPDATE_METHOD_CUMULATED)
 | 
				
			||||||
@ -242,7 +304,11 @@ void Update_rect(short x, short y, unsigned short width, unsigned short height)
 | 
				
			|||||||
void Update_status_line(short char_pos, short width)
 | 
					void Update_status_line(short char_pos, short width)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  #if (UPDATE_METHOD == UPDATE_METHOD_MULTI_RECTANGLE)
 | 
					  #if (UPDATE_METHOD == UPDATE_METHOD_MULTI_RECTANGLE)
 | 
				
			||||||
 | 
					  #if defined(USE_SDL)
 | 
				
			||||||
  SDL_UpdateRect(Screen_SDL, (18+char_pos*8)*Menu_factor_X*Pixel_width,Menu_status_Y*Pixel_height,width*8*Menu_factor_X*Pixel_width,8*Menu_factor_Y*Pixel_height);
 | 
					  SDL_UpdateRect(Screen_SDL, (18+char_pos*8)*Menu_factor_X*Pixel_width,Menu_status_Y*Pixel_height,width*8*Menu_factor_X*Pixel_width,8*Menu_factor_Y*Pixel_height);
 | 
				
			||||||
 | 
					  #else
 | 
				
			||||||
 | 
					  GFX2_UpdateRect((18+char_pos*8)*Menu_factor_X*Pixel_width,Menu_status_Y*Pixel_height,width*8*Menu_factor_X*Pixel_width,8*Menu_factor_Y*Pixel_height);
 | 
				
			||||||
 | 
					  #endif
 | 
				
			||||||
  #endif
 | 
					  #endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  #if (UPDATE_METHOD == UPDATE_METHOD_CUMULATED)
 | 
					  #if (UPDATE_METHOD == UPDATE_METHOD_CUMULATED)
 | 
				
			||||||
@ -304,7 +370,11 @@ SDL_Color Color_to_SDL_color(byte index)
 | 
				
			|||||||
  color.r = Main.palette[index].R;
 | 
					  color.r = Main.palette[index].R;
 | 
				
			||||||
  color.g = Main.palette[index].G;
 | 
					  color.g = Main.palette[index].G;
 | 
				
			||||||
  color.b = Main.palette[index].B;
 | 
					  color.b = Main.palette[index].B;
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  color.unused = 255;
 | 
					  color.unused = 255;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  color.a = 255;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  return color;
 | 
					  return color;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -373,7 +443,11 @@ int SetPalette(const T_Components * colors, int firstcolor, int ncolors)
 | 
				
			|||||||
    PaletteSDL[i].g = colors[i].G;
 | 
					    PaletteSDL[i].g = colors[i].G;
 | 
				
			||||||
    PaletteSDL[i].b = colors[i].B;
 | 
					    PaletteSDL[i].b = colors[i].B;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  return SDL_SetPalette(Screen_SDL, SDL_PHYSPAL | SDL_LOGPAL, PaletteSDL, firstcolor, ncolors);
 | 
					  return SDL_SetPalette(Screen_SDL, SDL_PHYSPAL | SDL_LOGPAL, PaletteSDL, firstcolor, ncolors);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  return SDL_SetPaletteColors(Screen_SDL->format->palette, PaletteSDL, firstcolor, ncolors);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Clear_border(byte color)
 | 
					void Clear_border(byte color)
 | 
				
			||||||
@ -396,7 +470,11 @@ void Clear_border(byte color)
 | 
				
			|||||||
    r.h=Screen_SDL->h;
 | 
					    r.h=Screen_SDL->h;
 | 
				
			||||||
    r.w=width;
 | 
					    r.w=width;
 | 
				
			||||||
    SDL_FillRect(Screen_SDL,&r,color);
 | 
					    SDL_FillRect(Screen_SDL,&r,color);
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
    SDL_UpdateRect(Screen_SDL, r.x, r.y, r.w, r.h);
 | 
					    SDL_UpdateRect(Screen_SDL, r.x, r.y, r.w, r.h);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    //SDL_RenderPresent(
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (height)
 | 
					  if (height)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@ -406,7 +484,11 @@ void Clear_border(byte color)
 | 
				
			|||||||
    r.h=height;
 | 
					    r.h=height;
 | 
				
			||||||
    r.w=Screen_SDL->w - height;
 | 
					    r.w=Screen_SDL->w - height;
 | 
				
			||||||
    SDL_FillRect(Screen_SDL,&r,color);
 | 
					    SDL_FillRect(Screen_SDL,&r,color);
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
    SDL_UpdateRect(Screen_SDL, r.x, r.y, r.w, r.h);
 | 
					    SDL_UpdateRect(Screen_SDL, r.x, r.y, r.w, r.h);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					// TODO
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  }  
 | 
					  }  
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								src/text.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/text.c
									
									
									
									
									
								
							@ -432,7 +432,11 @@ byte *Render_text_TTF(const char *str, int font_number, int size, int antialias,
 | 
				
			|||||||
  fg_color.r=fg_color.g=fg_color.b=255;
 | 
					  fg_color.r=fg_color.g=fg_color.b=255;
 | 
				
			||||||
  bg_color.r=bg_color.g=bg_color.b=0;
 | 
					  bg_color.r=bg_color.g=bg_color.b=0;
 | 
				
			||||||
  // The following is alpha, supposedly unused
 | 
					  // The following is alpha, supposedly unused
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  bg_color.unused=fg_color.unused=255;
 | 
					  bg_color.unused=fg_color.unused=255;
 | 
				
			||||||
 | 
					#elif defined(USE_SDL2)
 | 
				
			||||||
 | 
					  bg_color.a=fg_color.a=255;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  // Text rendering: creates a 8bit surface with its dedicated palette
 | 
					  // Text rendering: creates a 8bit surface with its dedicated palette
 | 
				
			||||||
  #ifdef __ANDROID__
 | 
					  #ifdef __ANDROID__
 | 
				
			||||||
@ -576,7 +580,11 @@ byte *Render_text_SFont(const char *str, int font_number, int *width, int *heigh
 | 
				
			|||||||
      rgb.r=((color & 0xE0)>>5)<<5;
 | 
					      rgb.r=((color & 0xE0)>>5)<<5;
 | 
				
			||||||
      rgb.g=((color & 0x1C)>>2)<<5;
 | 
					      rgb.g=((color & 0x1C)>>2)<<5;
 | 
				
			||||||
      rgb.b=((color & 0x03)>>0)<<6;
 | 
					      rgb.b=((color & 0x03)>>0)<<6;
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
      SDL_SetColors(reduced_surface, &rgb, color, 1);
 | 
					      SDL_SetColors(reduced_surface, &rgb, color, 1);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					      //SDL_SetPaletteColors
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Perform reduction
 | 
					    // Perform reduction
 | 
				
			||||||
    for (y=0; y<font_surface->h; y++)
 | 
					    for (y=0; y<font_surface->h; y++)
 | 
				
			||||||
@ -606,7 +614,11 @@ byte *Render_text_SFont(const char *str, int font_number, int *width, int *heigh
 | 
				
			|||||||
  // Allocation d'une surface SDL
 | 
					  // Allocation d'une surface SDL
 | 
				
			||||||
  text_surface=SDL_CreateRGBSurface(SDL_SWSURFACE, *width, *height, 8, 0, 0, 0, 0);
 | 
					  text_surface=SDL_CreateRGBSurface(SDL_SWSURFACE, *width, *height, 8, 0, 0, 0, 0);
 | 
				
			||||||
  // Copy palette
 | 
					  // Copy palette
 | 
				
			||||||
 | 
					#if defined(USE_SDL)
 | 
				
			||||||
  SDL_SetPalette(text_surface, SDL_LOGPAL, font_surface->format->palette->colors, 0, 256);
 | 
					  SDL_SetPalette(text_surface, SDL_LOGPAL, font_surface->format->palette->colors, 0, 256);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  //SDL_SetPaletteColors(
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
  // Fill with transparent color
 | 
					  // Fill with transparent color
 | 
				
			||||||
  rectangle.x=0;
 | 
					  rectangle.x=0;
 | 
				
			||||||
  rectangle.y=0;
 | 
					  rectangle.y=0;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user