X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=222b6f609a19d9d1fb899891b064e6f0dfa14f8e;hp=7dc231a864ce04186dfe8dc023e5a6d9b936fa83;hb=a1fabab3e5db1baab46a95a318b27fdf33d470cc;hpb=4ccec4f3adc1eb08fd5c3fe08d4168803b9f8e6c diff --git a/src/libgame/system.c b/src/libgame/system.c index 7dc231a8..222b6f60 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -386,6 +386,12 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen) video.frame_delay = 0; video.frame_delay_value = GAME_FRAME_DELAY; + video.shifted_up = FALSE; + video.shifted_up_pos = 0; + video.shifted_up_pos_last = 0; + video.shifted_up_delay = 0; + video.shifted_up_delay_value = ONE_SECOND_DELAY / 4; + SDLInitVideoBuffer(fullscreen); video.initialized = TRUE; @@ -977,30 +983,9 @@ void ReloadCustomImage(Bitmap *bitmap, char *basename) free(new_bitmap); } -Bitmap *ZoomBitmap(Bitmap *src_bitmap, int zoom_width, int zoom_height) +static Bitmap *ZoomBitmap(Bitmap *src_bitmap, int zoom_width, int zoom_height) { - Bitmap *dst_bitmap = SDLZoomBitmap(src_bitmap, zoom_width, zoom_height); - - return dst_bitmap; -} - -static void SetMaskedBitmapSurface(Bitmap *bitmap) -{ - if (bitmap == NULL) - return; - - SDL_Surface *surface = bitmap->surface; - - if (bitmap->surface_masked) - SDL_FreeSurface(bitmap->surface_masked); - - SDL_SetColorKey(surface, SET_TRANSPARENT_PIXEL, - SDL_MapRGB(surface->format, 0x00, 0x00, 0x00)); - - if ((bitmap->surface_masked = SDLGetNativeSurface(surface)) == NULL) - Error(ERR_EXIT, "SDL_DisplayFormat() failed"); - - SDL_SetColorKey(surface, UNSET_TRANSPARENT_PIXEL, 0); + return SDLZoomBitmap(src_bitmap, zoom_width, zoom_height); } void ReCreateGameTileSizeBitmap(Bitmap **bitmaps) @@ -1027,8 +1012,6 @@ void ReCreateGameTileSizeBitmap(Bitmap **bitmaps) bitmaps[IMG_BITMAP_CUSTOM] = bitmap_new; bitmaps[IMG_BITMAP_GAME] = bitmap_new; - - SetMaskedBitmapSurface(bitmap_new); } static void CreateScaledBitmaps(Bitmap **bitmaps, int zoom_factor, @@ -1196,12 +1179,6 @@ static void CreateScaledBitmaps(Bitmap **bitmaps, int zoom_factor, bitmaps[IMG_BITMAP_32x32] = tmp_bitmap_1; } - // create corresponding bitmaps for masked blitting - for (i = 0; i < NUM_IMG_BITMAPS; i++) - if (bitmaps[i] != NULL && - bitmaps[i] != old_bitmap) - SetMaskedBitmapSurface(bitmaps[i]); - UPDATE_BUSY_STATE(); print_timestamp_done("CreateScaledBitmaps"); @@ -1424,16 +1401,6 @@ void SetAudioMode(boolean enabled) /* event functions */ /* ========================================================================= */ -void InitEventFilter(EventFilter filter_function) -{ - /* set event filter to filter out certain events */ -#if defined(TARGET_SDL2) - SDL_SetEventFilter(filter_function, NULL); -#else - SDL_SetEventFilter(filter_function); -#endif -} - boolean PendingEvent(void) { return (SDL_PollEvent(NULL) ? TRUE : FALSE); @@ -1540,6 +1507,38 @@ KeyMod GetKeyModStateFromEvents() return HandleKeyModState(KSYM_UNDEFINED, 0); } +void StartTextInput(int x, int y, int width, int height) +{ +#if defined(TARGET_SDL2) + SDL_StartTextInput(); + +#if defined(HAS_SCREEN_KEYBOARD) + if (y + height > SCREEN_KEYBOARD_POS(video.height)) + { + video.shifted_up_pos = y + height - SCREEN_KEYBOARD_POS(video.height); + video.shifted_up_delay = SDL_GetTicks(); + video.shifted_up = TRUE; + } +#endif +#endif +} + +void StopTextInput() +{ +#if defined(TARGET_SDL2) + SDL_StopTextInput(); + +#if defined(HAS_SCREEN_KEYBOARD) + if (video.shifted_up) + { + video.shifted_up_pos = 0; + video.shifted_up_delay = SDL_GetTicks(); + video.shifted_up = FALSE; + } +#endif +#endif +} + boolean CheckCloseWindowEvent(ClientMessageEvent *event) { if (event->type != EVENT_CLIENTMESSAGE)