testspriteminimal: make standalone by embedding icon.bmp
parent
2a01f9dcb5
commit
4c3e84897f
|
@ -230,7 +230,31 @@ elseif(HAVE_X11)
|
||||||
target_link_libraries(testnative PRIVATE X11)
|
target_link_libraries(testnative PRIVATE X11)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(gamepad_images
|
find_package(Python3)
|
||||||
|
function(files2headers OUTPUT)
|
||||||
|
set(xxd "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/xxd.py")
|
||||||
|
set(inputs ${ARGN})
|
||||||
|
set(outputs )
|
||||||
|
foreach(input IN LISTS inputs)
|
||||||
|
get_filename_component(file_we "${input}" NAME_WE)
|
||||||
|
set(intermediate "${CMAKE_CURRENT_BINARY_DIR}/${file_we}.h")
|
||||||
|
set(output "${CMAKE_CURRENT_SOURCE_DIR}/${file_we}.h")
|
||||||
|
list(APPEND outputs "${output}")
|
||||||
|
if(Python3_FOUND AND Python3_VERSION VERSION_GREATER_EQUAL "3.2")
|
||||||
|
list(APPEND outputs "${intermediate}")
|
||||||
|
# Don't add the 'output' header to the output, to avoid marking them as GENERATED
|
||||||
|
# (generated files are removed when running the CLEAN target)
|
||||||
|
add_custom_command(OUTPUT "${intermediate}"
|
||||||
|
COMMAND Python3::Interpreter "${xxd}" -i "${CMAKE_CURRENT_SOURCE_DIR}/${input}" "-o" "${intermediate}"
|
||||||
|
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${intermediate}" "${output}"
|
||||||
|
DEPENDS "${xxd}" "${bmp}"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
set(${OUTPUT} "${outputs}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
files2headers(gamepad_image_headers
|
||||||
gamepad_axis_arrow.bmp
|
gamepad_axis_arrow.bmp
|
||||||
gamepad_axis.bmp
|
gamepad_axis.bmp
|
||||||
gamepad_back.bmp
|
gamepad_back.bmp
|
||||||
|
@ -249,24 +273,7 @@ set(gamepad_images
|
||||||
gamepad_front.bmp
|
gamepad_front.bmp
|
||||||
gamepad_touchpad.bmp
|
gamepad_touchpad.bmp
|
||||||
)
|
)
|
||||||
set(gamepad_image_headers)
|
files2headers(icon_bmp_header icon.bmp)
|
||||||
find_package(Python3)
|
|
||||||
if(Python3_FOUND AND Python3_VERSION VERSION_GREATER_EQUAL "3.2")
|
|
||||||
set(xxd "${CMAKE_CURRENT_SOURCE_DIR}/../cmake/xxd.py")
|
|
||||||
foreach(bmp ${gamepad_images})
|
|
||||||
get_filename_component(bmp_we "${bmp}" NAME_WE)
|
|
||||||
set(intermediate "${CMAKE_CURRENT_BINARY_DIR}/${bmp_we}.h")
|
|
||||||
set(final "${CMAKE_CURRENT_SOURCE_DIR}/${bmp_we}.h")
|
|
||||||
# Don't add the 'final' headers to the output, to avoid marking them as GENERATED
|
|
||||||
# (generated files are removed when running the CLEAN target)
|
|
||||||
add_custom_command(OUTPUT "${intermediate}"
|
|
||||||
COMMAND Python3::Interpreter "${xxd}" -i "${CMAKE_CURRENT_SOURCE_DIR}/${bmp}" "-o" "${intermediate}"
|
|
||||||
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${intermediate}" "${final}"
|
|
||||||
DEPENDS "${xxd}" "${bmp}"
|
|
||||||
)
|
|
||||||
list(APPEND gamepad_image_headers "${intermediate}" "${final}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_sdl_test_executable(testaudio NEEDS_RESOURCES TESTUTILS SOURCES testaudio.c)
|
add_sdl_test_executable(testaudio NEEDS_RESOURCES TESTUTILS SOURCES testaudio.c)
|
||||||
add_sdl_test_executable(testfile NONINTERACTIVE SOURCES testfile.c)
|
add_sdl_test_executable(testfile NONINTERACTIVE SOURCES testfile.c)
|
||||||
|
@ -306,7 +313,7 @@ add_sdl_test_executable(testsensor SOURCES testsensor.c)
|
||||||
add_sdl_test_executable(testshader NEEDS_RESOURCES TESTUTILS SOURCES testshader.c)
|
add_sdl_test_executable(testshader NEEDS_RESOURCES TESTUTILS SOURCES testshader.c)
|
||||||
add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c)
|
add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c)
|
||||||
add_sdl_test_executable(testsprite NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c)
|
add_sdl_test_executable(testsprite NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c)
|
||||||
add_sdl_test_executable(testspriteminimal NEEDS_RESOURCES TESTUTILS SOURCES testspriteminimal.c)
|
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_bmp_header})
|
||||||
add_sdl_test_executable(teststreaming NEEDS_RESOURCES TESTUTILS SOURCES teststreaming.c)
|
add_sdl_test_executable(teststreaming NEEDS_RESOURCES TESTUTILS SOURCES teststreaming.c)
|
||||||
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c)
|
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c)
|
||||||
add_sdl_test_executable(testurl SOURCES testurl.c)
|
add_sdl_test_executable(testurl SOURCES testurl.c)
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
unsigned char icon_bmp[] = {
|
||||||
|
0x42, 0x4d, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00,
|
||||||
|
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
|
||||||
|
0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
|
||||||
|
0x00, 0x00, 0x6d, 0x0b, 0x00, 0x00, 0x6d, 0x0b, 0x00, 0x00, 0x03, 0x00,
|
||||||
|
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22,
|
||||||
|
0x21, 0x11, 0x11, 0x12, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x12, 0x21, 0x11, 0x11, 0x11, 0x11, 0x12, 0x21, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||||
|
0x11, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x21, 0x11,
|
||||||
|
0x22, 0x22, 0x22, 0x22, 0x11, 0x12, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22,
|
||||||
|
0x22, 0x21, 0x12, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x22, 0x22, 0x22, 0x22, 0x21, 0x12, 0x22, 0x22, 0x22, 0x22, 0x10,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22,
|
||||||
|
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0x22, 0x22, 0x11, 0x11, 0x22, 0x22, 0x11, 0x11, 0x22, 0x22, 0x10,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x11, 0x01, 0x22, 0x22, 0x11,
|
||||||
|
0x01, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x11,
|
||||||
|
0x11, 0x22, 0x22, 0x11, 0x11, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22,
|
||||||
|
0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x22, 0x22, 0x22,
|
||||||
|
0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00
|
||||||
|
};
|
||||||
|
unsigned int icon_bmp_len = 578;
|
|
@ -20,7 +20,8 @@
|
||||||
|
|
||||||
#include <SDL3/SDL.h>
|
#include <SDL3/SDL.h>
|
||||||
#include <SDL3/SDL_main.h>
|
#include <SDL3/SDL_main.h>
|
||||||
#include "testutils.h"
|
|
||||||
|
#include "icon.h"
|
||||||
|
|
||||||
#define WINDOW_WIDTH 640
|
#define WINDOW_WIDTH 640
|
||||||
#define WINDOW_HEIGHT 480
|
#define WINDOW_HEIGHT 480
|
||||||
|
@ -35,6 +36,25 @@ static int sprite_w, sprite_h;
|
||||||
static SDL_Renderer *renderer;
|
static SDL_Renderer *renderer;
|
||||||
static int done;
|
static int done;
|
||||||
|
|
||||||
|
static SDL_Texture *CreateTexture(SDL_Renderer *r, unsigned char *data, unsigned int len, int *w, int *h) {
|
||||||
|
SDL_Texture *texture = NULL;
|
||||||
|
SDL_Surface *surface;
|
||||||
|
SDL_RWops *src = SDL_RWFromConstMem(data, len);
|
||||||
|
if (src) {
|
||||||
|
surface = SDL_LoadBMP_RW(src, SDL_TRUE);
|
||||||
|
if (surface) {
|
||||||
|
/* Treat white as transparent */
|
||||||
|
SDL_SetSurfaceColorKey(surface, SDL_TRUE, SDL_MapRGB(surface->format, 255, 255, 255));
|
||||||
|
|
||||||
|
texture = SDL_CreateTextureFromSurface(r, surface);
|
||||||
|
*w = surface->w;
|
||||||
|
*h = surface->h;
|
||||||
|
SDL_DestroySurface(surface);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return texture;
|
||||||
|
}
|
||||||
|
|
||||||
static void MoveSprites(void)
|
static void MoveSprites(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -111,9 +131,10 @@ int main(int argc, char *argv[])
|
||||||
SDL_Log("SDL_SetWindowTitle: %s", SDL_GetError());
|
SDL_Log("SDL_SetWindowTitle: %s", SDL_GetError());
|
||||||
}
|
}
|
||||||
|
|
||||||
sprite = LoadTexture(renderer, "icon.bmp", SDL_TRUE, &sprite_w, &sprite_h);
|
sprite = CreateTexture(renderer, icon_bmp, icon_bmp_len, &sprite_w, &sprite_h);
|
||||||
|
|
||||||
if (sprite == NULL) {
|
if (sprite == NULL) {
|
||||||
|
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture (%s)", SDL_GetError());
|
||||||
return_code = 3;
|
return_code = 3;
|
||||||
goto quit;
|
goto quit;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue