From 4d92fb9e2d049dc6290c94d44b80a1f8aef839a4 Mon Sep 17 00:00:00 2001 From: Fred Date: Wed, 18 Jun 2025 21:49:18 +1000 Subject: [PATCH 1/7] Adds SDL3_ttf port --- test/test_sdl3_ttf.c | 27 ++++++++++++++++++ tools/ports/sdl3_ttf.py | 63 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 test/test_sdl3_ttf.c create mode 100644 tools/ports/sdl3_ttf.py diff --git a/test/test_sdl3_ttf.c b/test/test_sdl3_ttf.c new file mode 100644 index 0000000000000..cc8f0250ccd06 --- /dev/null +++ b/test/test_sdl3_ttf.c @@ -0,0 +1,27 @@ +/* + * Copyright 2013 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include +#include +#include + +int main() { + SDL_Init(SDL_INIT_VIDEO); + + if (!TTF_Init()) { + printf("TTF_Init: %s\n", SDL_GetError()); + return 1; + } + + TTF_Quit(); + SDL_Quit(); + + return 0; +} diff --git a/tools/ports/sdl3_ttf.py b/tools/ports/sdl3_ttf.py new file mode 100644 index 0000000000000..2f35d7590a04c --- /dev/null +++ b/tools/ports/sdl3_ttf.py @@ -0,0 +1,63 @@ +# Copyright 2015 The Emscripten Authors. All rights reserved. +# Emscripten is available under two separate licenses, the MIT license and the +# University of Illinois/NCSA Open Source License. Both these licenses can be +# found in the LICENSE file. + +import os + +TAG = 'release-3.2.2' +HASH = 'c5f34d1b79492e0341c91687cde9ec315f5d6544c7ebaa7ef5d092e77ccfc363a0e702ba9c43bfa0926c54420843ccfb98b81362985fd7b4a67d09a7852b90ba' + +deps = ['freetype', 'sdl3', 'harfbuzz'] + +variants = {'sdl3_ttf-mt': {'PTHREADS': 1}} + + +def needed(settings): + return settings.USE_SDL_TTF == 3 + + +def get_lib_name(settings): + return 'libSDL3_ttf' + ('-mt' if settings.PTHREADS else '') + '.a' + + +def get(ports, settings, shared): + ports.fetch_project('sdl3_ttf', f'https://github.com/libsdl-org/SDL_ttf/archive/{TAG}.zip', sha512hash=HASH) + + def create(final): + src_root = ports.get_dir('sdl3_ttf', 'SDL_ttf-' + TAG) + ports.install_header_dir(os.path.join(src_root, 'include'), target='.') + flags = ['-DTTF_USE_HARFBUZZ=1', '-sUSE_SDL=3', '-sUSE_FREETYPE', '-sUSE_HARFBUZZ'] + if settings.PTHREADS: + flags += ['-pthread'] + + srcs = [ + 'src/SDL_gpu_textengine.c', + 'src/SDL_hashtable.c', + 'src/SDL_hashtable_ttf.c', + 'src/SDL_renderer_textengine.c', + 'src/SDL_surface_textengine.c', + 'src/SDL_ttf.c', + ] + + ports.build_port(src_root, final, 'sdl3_ttf', flags=flags, srcs=srcs) + + return [shared.cache.get_lib(get_lib_name(settings), create, what='port')] + + +def clear(ports, settings, shared): + shared.cache.erase_lib(get_lib_name(settings)) + + +def process_dependencies(settings): + settings.USE_SDL = 3 + settings.USE_FREETYPE = 1 + settings.USE_HARFBUZZ = 1 + + +def process_args(ports): + return ['-DTTF_USE_HARFBUZZ=1'] + + +def show(): + return 'sdl3_ttf (-sUSE_SDL_TTF=3 or --use-port=sdl3_ttf; zlib license)' From b5294582ec5e9e6572df69a3f07d94ffe47f9383 Mon Sep 17 00:00:00 2001 From: Fred Date: Thu, 19 Jun 2025 14:59:45 +1000 Subject: [PATCH 2/7] Adds browser tests for SDL3_ttf --- test/browser/test_sdl3_ttf.c | 62 ++++++++++++++++++ test/browser/test_sdl3_ttf.png | Bin 0 -> 81280 bytes .../browser/test_sdl3_ttf_render_text_solid.c | 37 +++++++++++ .../test_sdl3_ttf_render_text_solid.png | Bin 0 -> 570 bytes test/browser/test_sdl_ttf_render_text_solid.c | 24 +++---- test/test_browser.py | 14 ++++ test/test_other.py | 6 ++ test/test_sdl3_ttf.c | 18 ++--- tools/ports/sdl3_ttf.py | 2 +- 9 files changed, 141 insertions(+), 22 deletions(-) create mode 100644 test/browser/test_sdl3_ttf.c create mode 100644 test/browser/test_sdl3_ttf.png create mode 100644 test/browser/test_sdl3_ttf_render_text_solid.c create mode 100644 test/browser/test_sdl3_ttf_render_text_solid.png diff --git a/test/browser/test_sdl3_ttf.c b/test/browser/test_sdl3_ttf.c new file mode 100644 index 0000000000000..ef44bf0755105 --- /dev/null +++ b/test/browser/test_sdl3_ttf.c @@ -0,0 +1,62 @@ +/* + * Copyright 2025 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +SDL_Window *window; +SDL_Renderer *renderer; +TTF_Font *font; + +#define WIDTH 640 +#define HEIGHT 480 + +void render() +{ + + SDL_Color colorA = { 0xff, 0x99, 0x00, 0xff }; + SDL_Color colorB = { 0x11, 0xff, 0xff, 0xff }; + SDL_FRect upperRect = {0, 0, WIDTH, HEIGHT / 2}; + SDL_FRect lowerRect = {0, HEIGHT / 2, WIDTH, HEIGHT / 2}; + + SDL_Surface *helloSurface = TTF_RenderText_Shaded(font, "hello", 0, colorA, colorB); + SDL_Surface *worldSurface = TTF_RenderText_Shaded(font, "world", 0, colorB, colorA); + SDL_Texture *helloTexture = SDL_CreateTextureFromSurface(renderer, helloSurface); + SDL_Texture *worldTexture = SDL_CreateTextureFromSurface(renderer, worldSurface); + + SDL_SetRenderDrawColor(renderer, 0xcc, 0xcc, 0xcc, 0xff); + SDL_RenderClear(renderer); + SDL_RenderTexture(renderer, helloTexture, NULL, &upperRect); + SDL_RenderTexture(renderer, worldTexture, NULL, &lowerRect); + SDL_RenderPresent(renderer); + + SDL_DestroySurface(helloSurface); + SDL_DestroySurface(worldSurface); + SDL_DestroyTexture(helloTexture); + SDL_DestroyTexture(worldTexture); +} + +int main(int argc, char *argv[]) +{ + SDL_Init(SDL_INIT_VIDEO); + TTF_Init(); + + if (!SDL_CreateWindowAndRenderer("SDL3 TTF", WIDTH, HEIGHT, 0, &window, &renderer)) { + printf("SDL_CreateWindowAndRenderer: %s\n", SDL_GetError()); + return 1; + } + font = TTF_OpenFont("LiberationSansBold.ttf", 40); + if (!font) { + printf("TTF_OpenFont: %s\n", SDL_GetError()); + return 1; + } + render(); + + return 0; +} \ No newline at end of file diff --git a/test/browser/test_sdl3_ttf.png b/test/browser/test_sdl3_ttf.png new file mode 100644 index 0000000000000000000000000000000000000000..e782a4b6d16a5c3244a8e42589dc8dba139085b9 GIT binary patch literal 81280 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� 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 ZLZ7URp(}UcxN&e*r2sk8l70 literal 0 HcmV?d00001 diff --git a/test/browser/test_sdl3_ttf_render_text_solid.c b/test/browser/test_sdl3_ttf_render_text_solid.c new file mode 100644 index 0000000000000..76dd67266024e --- /dev/null +++ b/test/browser/test_sdl3_ttf_render_text_solid.c @@ -0,0 +1,37 @@ +/* + * Copyright 2025 The Emscripten Authors. All rights reserved. + * Emscripten is available under two separate licenses, the MIT license and the + * University of Illinois/NCSA Open Source License. Both these licenses can be + * found in the LICENSE file. + */ + +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ + int width = 320; + int height = 48; + + SDL_Init(SDL_INIT_VIDEO); + SDL_Window *window = SDL_CreateWindow("SDL3 TTF Render Text Solid", width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_HIGH_PIXEL_DENSITY); + SDL_Surface *screen = SDL_GetWindowSurface(window); + + TTF_Init(); + TTF_Font *font = TTF_OpenFont("LiberationSansBold.ttf", 32); + if (!font) { + printf("TTF_OpenFont: %s\n", SDL_GetError()); + return 1; + } + + SDL_Color color = { 0xff, 0x99, 0x00, 0xff }; + SDL_Surface *text = TTF_RenderText_Solid(font, "Play", 0, color); + + SDL_FillSurfaceRect(screen, NULL, SDL_MapRGB(SDL_GetPixelFormatDetails(screen->format), NULL, 255, 0, 0)); + SDL_BlitSurface(text, NULL, screen, NULL); + SDL_UpdateWindowSurface(window); + + return 0; +} diff --git a/test/browser/test_sdl3_ttf_render_text_solid.png b/test/browser/test_sdl3_ttf_render_text_solid.png new file mode 100644 index 0000000000000000000000000000000000000000..2f42860921b79bebb823ba7ad949bd0544ffbe93 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0y~yU~~Yo4LI0M1MG8>Ec~2L|kczmscOCPZ4Fntlw@*Jiv+7ov zsHv1>@&T4dmHtV>Z0f7^nWz5x8ht9C(c^`69m9lH2Bu6-g$dIj)V1p?^Be0Qu`iwC z{)gd#)PKe`M_0LPXKXc%{>+eH@<;4Px?%}~dAUu4zY<5yj6z119|mvJ8?w*8zP2vX zn!jM-Z`KWEzL_!Mv*Tygc3od{mO0p}jN8UYCR;yv+PVHeybfB&nJm0?bG)n4qK(%U zgSkp-TTSI2MqD=D{N%*e1Mb#h2aLb4tQ7NY=)I-yxUK8ssvAb$4DPAK2o9QD(3P2ALAOj-gBbg28!Rg9C2G?->}S jSOh%085+0Xqy8~u>-&oPEcXil#y5kftDnm{r-UW|ho9%9 literal 0 HcmV?d00001 diff --git a/test/browser/test_sdl_ttf_render_text_solid.c b/test/browser/test_sdl_ttf_render_text_solid.c index a9f3788913d75..2962b1e7b79db 100644 --- a/test/browser/test_sdl_ttf_render_text_solid.c +++ b/test/browser/test_sdl_ttf_render_text_solid.c @@ -11,16 +11,16 @@ int main() { - SDL_Init(SDL_INIT_VIDEO); - SDL_Surface *screen = SDL_SetVideoMode(320, 32, 32, SDL_HWSURFACE); - - TTF_Init(); - TTF_Font *font = TTF_OpenFont("Arial", 32); - - SDL_Color color = { 0xff, 0x99, 0x00, 0xff }; - SDL_Surface *text = TTF_RenderText_Solid(font, "Play", color); - SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 0, 0)); - SDL_BlitSurface(text, NULL, screen, NULL); - return 0; + SDL_Init(SDL_INIT_VIDEO); + SDL_Surface *screen = SDL_SetVideoMode(320, 32, 32, SDL_HWSURFACE); + + TTF_Init(); + TTF_Font *font = TTF_OpenFont("Arial", 32); + + SDL_Color color = { 0xff, 0x99, 0x00, 0xff }; + SDL_Surface *text = TTF_RenderText_Solid(font, "Play", color); + SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 255, 0, 0)); + SDL_BlitSurface(text, NULL, screen, NULL); + + return 0; } - diff --git a/test/test_browser.py b/test/test_browser.py index a934191bc7ddb..c2a35a3003407 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -2247,6 +2247,14 @@ def test_sdl_canvas_palette_2(self): def test_sdl_ttf_render_text_solid(self): self.reftest('test_sdl_ttf_render_text_solid.c', 'test_sdl_ttf_render_text_solid.png', cflags=['-O2', '-lSDL', '-lGL']) + def test_sdl3_ttf_render_text_solid(self): + self.cflags.append('-Wno-experimental') + shutil.copy2(test_file('freetype/LiberationSansBold.ttf'), self.get_dir()) + self.reftest('test_sdl3_ttf_render_text_solid.c', 'test_sdl3_ttf_render_text_solid.png', + cflags=[ + '-O2', '-sUSE_SDL=3', '-sUSE_SDL_TTF=3', '-lGL', + '--embed-file', 'LiberationSansBold.ttf']) + def test_sdl_alloctext(self): self.btest_exit('test_sdl_alloctext.c', cflags=['-lSDL', '-lGL']) @@ -3211,6 +3219,12 @@ def test_sdl2_ttf(self): self.reftest('test_sdl2_ttf.c', 'test_sdl2_ttf.png', cflags=['-O2', '-sUSE_SDL=2', '-sUSE_SDL_TTF=2', '--embed-file', 'LiberationSansBold.ttf']) + @requires_graphics_hardware + def test_sdl3_ttf(self): + shutil.copy2(test_file('freetype/LiberationSansBold.ttf'), self.get_dir()) + self.reftest('test_sdl3_ttf.c', 'test_sdl3_ttf.png', + cflags=['-O2', '-sUSE_SDL=3', '-sUSE_SDL_TTF=3', '--embed-file', 'LiberationSansBold.ttf']) + @requires_graphics_hardware def test_sdl2_ttf_rtl(self): shutil.copy2(test_file('third_party/notofont/NotoNaskhArabic-Regular.ttf'), self.get_dir()) diff --git a/test/test_other.py b/test/test_other.py index ec4e110c71309..2090fd9a68342 100644 --- a/test/test_other.py +++ b/test/test_other.py @@ -2617,6 +2617,12 @@ def test_sdl2_ttf(self): self.emcc(test_file('browser/test_sdl2_ttf.c'), args=['-sUSE_SDL=2', '-sUSE_SDL_TTF=2'], output_filename='a.out.js') self.emcc(test_file('browser/test_sdl2_ttf.c'), args=['--use-port=sdl2', '--use-port=sdl2_ttf'], output_filename='a.out.js') + @requires_network + def test_sdl3_ttf(self): + # A compile-only test that checks if sdl3-ttf, and dependencies freetype and harfbuzz, are buildable. + self.emcc(test_file('browser/test_sdl3_ttf.c'), args=['-sUSE_SDL=3', '-sUSE_SDL_TTF=3'], output_filename='a.out.js') + self.emcc(test_file('browser/test_sdl3_ttf.c'), args=['--use-port=sdl3', '--use-port=sdl3_ttf'], output_filename='a.out.js') + @requires_network def test_contrib_ports(self): # Verify that contrib ports can be used (using the only contrib port available ATM, but can be replaced diff --git a/test/test_sdl3_ttf.c b/test/test_sdl3_ttf.c index cc8f0250ccd06..ec4c70edab314 100644 --- a/test/test_sdl3_ttf.c +++ b/test/test_sdl3_ttf.c @@ -1,5 +1,5 @@ /* - * Copyright 2013 The Emscripten Authors. All rights reserved. + * Copyright 2025 The Emscripten Authors. All rights reserved. * Emscripten is available under two separate licenses, the MIT license and the * University of Illinois/NCSA Open Source License. Both these licenses can be * found in the LICENSE file. @@ -13,15 +13,15 @@ #include int main() { - SDL_Init(SDL_INIT_VIDEO); + SDL_Init(SDL_INIT_VIDEO); - if (!TTF_Init()) { - printf("TTF_Init: %s\n", SDL_GetError()); - return 1; - } + if (!TTF_Init()) { + printf("TTF_Init: %s\n", SDL_GetError()); + return 1; + } - TTF_Quit(); - SDL_Quit(); + TTF_Quit(); + SDL_Quit(); - return 0; + return 0; } diff --git a/tools/ports/sdl3_ttf.py b/tools/ports/sdl3_ttf.py index 2f35d7590a04c..fe145b2dbcd5f 100644 --- a/tools/ports/sdl3_ttf.py +++ b/tools/ports/sdl3_ttf.py @@ -1,4 +1,4 @@ -# Copyright 2015 The Emscripten Authors. All rights reserved. +# Copyright 2025 The Emscripten Authors. All rights reserved. # Emscripten is available under two separate licenses, the MIT license and the # University of Illinois/NCSA Open Source License. Both these licenses can be # found in the LICENSE file. From 126e598e2d5ff18cf4074b1c0916ed0652c2ab99 Mon Sep 17 00:00:00 2001 From: Fred Date: Thu, 19 Jun 2025 21:07:21 +1000 Subject: [PATCH 3/7] Fixes SDL3_ttf test for firefox --- test/browser/test_sdl3_ttf_render_text_solid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/test_sdl3_ttf_render_text_solid.c b/test/browser/test_sdl3_ttf_render_text_solid.c index 76dd67266024e..6eb5ec6390449 100644 --- a/test/browser/test_sdl3_ttf_render_text_solid.c +++ b/test/browser/test_sdl3_ttf_render_text_solid.c @@ -16,7 +16,7 @@ int main(int argc, char *argv[]) int height = 48; SDL_Init(SDL_INIT_VIDEO); - SDL_Window *window = SDL_CreateWindow("SDL3 TTF Render Text Solid", width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_HIGH_PIXEL_DENSITY); + SDL_Window *window = SDL_CreateWindow("SDL3 TTF Render Text Solid", width, height, 0); SDL_Surface *screen = SDL_GetWindowSurface(window); TTF_Init(); From 1e67c0f1fb798bfd781abc1477560ae98b1d7f9d Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 20 Jun 2025 07:27:44 +1000 Subject: [PATCH 4/7] Minor formatting change in test_sdl3_ttf.c --- test/browser/test_sdl3_ttf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/browser/test_sdl3_ttf.c b/test/browser/test_sdl3_ttf.c index ef44bf0755105..fa08c71e1bae0 100644 --- a/test/browser/test_sdl3_ttf.c +++ b/test/browser/test_sdl3_ttf.c @@ -59,4 +59,4 @@ int main(int argc, char *argv[]) render(); return 0; -} \ No newline at end of file +} From a152f1c90c10458682794c05cbdd2cbab8e4be16 Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 20 Jun 2025 14:27:25 +1000 Subject: [PATCH 5/7] Retrigger checks From 822bf460fffa5fbdc6b719142e56bf4a0eb2f89a Mon Sep 17 00:00:00 2001 From: Fred Date: Fri, 20 Jun 2025 20:46:07 +1000 Subject: [PATCH 6/7] Retrigger tests one more time for good measure From 457633f45b5b3fa2c7de31c13857f27298003be5 Mon Sep 17 00:00:00 2001 From: Fred Date: Sat, 21 Jun 2025 20:32:54 +1000 Subject: [PATCH 7/7] Retrigger checks