Browse Source

Support resizable windows with most examples

Cameron Cawley 1 day ago
parent
commit
0bbbf3d43b
30 changed files with 60 additions and 30 deletions
  1. 2 1
      examples/asyncio/01-load-bitmaps/load-bitmaps.c
  2. 2 1
      examples/audio/01-simple-playback/simple-playback.c
  3. 2 1
      examples/audio/02-simple-playback-callback/simple-playback-callback.c
  4. 2 1
      examples/audio/03-load-wav/load-wav.c
  5. 2 1
      examples/audio/04-multiple-streams/multiple-streams.c
  6. 3 1
      examples/audio/05-planar-data/planar-data.c
  7. 2 1
      examples/camera/01-read-and-draw/read-and-draw.c
  8. 2 1
      examples/demo/01-snake/snake.c
  9. 1 1
      examples/demo/02-woodeneye-008/woodeneye-008.c
  10. 1 1
      examples/input/02-joystick-events/joystick-events.c
  11. 1 1
      examples/input/04-gamepad-events/gamepad-events.c
  12. 2 1
      examples/misc/01-power/power.c
  13. 3 1
      examples/misc/02-clipboard/clipboard.c
  14. 2 1
      examples/renderer/01-clear/clear.c
  15. 2 1
      examples/renderer/02-primitives/primitives.c
  16. 2 1
      examples/renderer/03-lines/lines.c
  17. 2 1
      examples/renderer/04-points/points.c
  18. 2 1
      examples/renderer/05-rectangles/rectangles.c
  19. 2 1
      examples/renderer/06-textures/textures.c
  20. 2 1
      examples/renderer/07-streaming-textures/streaming-textures.c
  21. 2 1
      examples/renderer/08-rotating-textures/rotating-textures.c
  22. 2 1
      examples/renderer/09-scaling-textures/scaling-textures.c
  23. 2 1
      examples/renderer/10-geometry/geometry.c
  24. 2 1
      examples/renderer/11-color-mods/color-mods.c
  25. 2 1
      examples/renderer/14-viewport/viewport.c
  26. 2 1
      examples/renderer/15-cliprect/cliprect.c
  27. 2 1
      examples/renderer/17-read-pixels/read-pixels.c
  28. 2 1
      examples/renderer/18-debug-text/debug-text.c
  29. 2 1
      examples/renderer/19-affine-textures/affine-textures.c
  30. 3 1
      examples/template.c

+ 2 - 1
examples/asyncio/01-load-bitmaps/load-bitmaps.c

@@ -33,10 +33,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/asyncio/load-bitmaps", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/asyncio/load-bitmaps", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Couldn't create window/renderer!", SDL_GetError(), NULL);
         SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Couldn't create window/renderer!", SDL_GetError(), NULL);
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     queue = SDL_CreateAsyncIOQueue();
     queue = SDL_CreateAsyncIOQueue();
     if (!queue) {
     if (!queue) {

+ 2 - 1
examples/audio/01-simple-playback/simple-playback.c

@@ -29,10 +29,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
     }
     }
 
 
     /* we don't _need_ a window for audio-only things but it's good policy to have one. */
     /* we don't _need_ a window for audio-only things but it's good policy to have one. */
-    if (!SDL_CreateWindowAndRenderer("examples/audio/simple-playback", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/audio/simple-playback", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* We're just playing a single thing here, so we'll use the simplified option.
     /* We're just playing a single thing here, so we'll use the simplified option.
        We are always going to feed audio in as mono, float32 data at 8000Hz.
        We are always going to feed audio in as mono, float32 data at 8000Hz.

+ 2 - 1
examples/audio/02-simple-playback-callback/simple-playback-callback.c

@@ -63,10 +63,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
     }
     }
 
 
     /* we don't _need_ a window for audio-only things but it's good policy to have one. */
     /* we don't _need_ a window for audio-only things but it's good policy to have one. */
-    if (!SDL_CreateWindowAndRenderer("examples/audio/simple-playback-callback", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/audio/simple-playback-callback", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* We're just playing a single thing here, so we'll use the simplified option.
     /* We're just playing a single thing here, so we'll use the simplified option.
        We are always going to feed audio in as mono, float32 data at 8000Hz.
        We are always going to feed audio in as mono, float32 data at 8000Hz.

+ 2 - 1
examples/audio/03-load-wav/load-wav.c

@@ -39,10 +39,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
     }
     }
 
 
     /* we don't _need_ a window for audio-only things but it's good policy to have one. */
     /* we don't _need_ a window for audio-only things but it's good policy to have one. */
-    if (!SDL_CreateWindowAndRenderer("examples/audio/load-wav", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/audio/load-wav", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Load the .wav file from wherever the app is being run from. */
     /* Load the .wav file from wherever the app is being run from. */
     SDL_asprintf(&wav_path, "%ssample.wav", SDL_GetBasePath());  /* allocate a string of the full file path */
     SDL_asprintf(&wav_path, "%ssample.wav", SDL_GetBasePath());  /* allocate a string of the full file path */

+ 2 - 1
examples/audio/04-multiple-streams/multiple-streams.c

@@ -65,10 +65,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/audio/multiple-streams", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/audio/multiple-streams", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* open the default audio device in whatever format it prefers; our audio streams will adjust to it. */
     /* open the default audio device in whatever format it prefers; our audio streams will adjust to it. */
     audio_device = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, NULL);
     audio_device = SDL_OpenAudioDevice(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, NULL);

+ 3 - 1
examples/audio/05-planar-data/planar-data.c

@@ -39,10 +39,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/audio/planar-data", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/audio/planar-data", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     stream = SDL_OpenAudioDeviceStream(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &spec, NULL, NULL);
     stream = SDL_OpenAudioDeviceStream(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &spec, NULL, NULL);
     if (!stream) {
     if (!stream) {
@@ -58,6 +59,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
 /* This function runs when a new event (mouse input, keypresses, etc) occurs. */
 /* This function runs when a new event (mouse input, keypresses, etc) occurs. */
 SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
 SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
 {
 {
+    SDL_ConvertEventToRenderCoordinates(renderer, event);
     if (event->type == SDL_EVENT_QUIT) {
     if (event->type == SDL_EVENT_QUIT) {
         return SDL_APP_SUCCESS;  /* end the program, reporting success to the OS. */
         return SDL_APP_SUCCESS;  /* end the program, reporting success to the OS. */
     } else if (event->type == SDL_EVENT_MOUSE_BUTTON_DOWN) {
     } else if (event->type == SDL_EVENT_MOUSE_BUTTON_DOWN) {

+ 2 - 1
examples/camera/01-read-and-draw/read-and-draw.c

@@ -33,7 +33,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/camera/read-and-draw", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/camera/read-and-draw", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
@@ -83,6 +83,7 @@ SDL_AppResult SDL_AppIterate(void *appstate)
            the window when we get a first frame from the camera. */
            the window when we get a first frame from the camera. */
         if (!texture) {
         if (!texture) {
             SDL_SetWindowSize(window, frame->w, frame->h);  /* Resize the window to match */
             SDL_SetWindowSize(window, frame->w, frame->h);  /* Resize the window to match */
+            SDL_SetRenderLogicalPresentation(renderer, frame->w, frame->h, SDL_LOGICAL_PRESENTATION_LETTERBOX);
             texture = SDL_CreateTexture(renderer, frame->format, SDL_TEXTUREACCESS_STREAMING, frame->w, frame->h);
             texture = SDL_CreateTexture(renderer, frame->format, SDL_TEXTUREACCESS_STREAMING, frame->w, frame->h);
         }
         }
 
 

+ 2 - 1
examples/demo/01-snake/snake.c

@@ -340,9 +340,10 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
 
 
     *appstate = as;
     *appstate = as;
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/demo/snake", SDL_WINDOW_WIDTH, SDL_WINDOW_HEIGHT, 0, &as->window, &as->renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/demo/snake", SDL_WINDOW_WIDTH, SDL_WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &as->window, &as->renderer)) {
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(as->renderer, SDL_WINDOW_WIDTH, SDL_WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     snake_initialize(&as->snake_ctx);
     snake_initialize(&as->snake_ctx);
 
 

+ 1 - 1
examples/demo/02-woodeneye-008/woodeneye-008.c

@@ -347,7 +347,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
     if (!SDL_Init(SDL_INIT_VIDEO)) {
     if (!SDL_Init(SDL_INIT_VIDEO)) {
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
-    if (!SDL_CreateWindowAndRenderer("examples/demo/woodeneye-008", 640, 480, 0, &as->window, &as->renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/demo/woodeneye-008", 640, 480, SDL_WINDOW_RESIZABLE, &as->window, &as->renderer)) {
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 

+ 1 - 1
examples/input/02-joystick-events/joystick-events.c

@@ -111,7 +111,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/input/joystick-events", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/input/joystick-events", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }

+ 1 - 1
examples/input/04-gamepad-events/gamepad-events.c

@@ -94,7 +94,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/input/gamepad-events", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/input/gamepad-events", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }

+ 2 - 1
examples/misc/01-power/power.c

@@ -22,10 +22,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/misc/power", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/misc/power", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     return SDL_APP_CONTINUE;  /* carry on with the program! */
     return SDL_APP_CONTINUE;  /* carry on with the program! */
 }
 }

+ 3 - 1
examples/misc/02-clipboard/clipboard.c

@@ -47,10 +47,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/misc/clipboard", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/misc/clipboard", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     CalculateCurrentTimeString();
     CalculateCurrentTimeString();
 
 
@@ -81,6 +82,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
 /* This function runs when a new event (mouse input, keypresses, etc) occurs. */
 /* This function runs when a new event (mouse input, keypresses, etc) occurs. */
 SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
 SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
 {
 {
+    SDL_ConvertEventToRenderCoordinates(renderer, event);
     if (event->type == SDL_EVENT_QUIT) {
     if (event->type == SDL_EVENT_QUIT) {
         return SDL_APP_SUCCESS;  /* end the program, reporting success to the OS. */
         return SDL_APP_SUCCESS;  /* end the program, reporting success to the OS. */
     } else if (event->type == SDL_EVENT_MOUSE_BUTTON_DOWN) {
     } else if (event->type == SDL_EVENT_MOUSE_BUTTON_DOWN) {

+ 2 - 1
examples/renderer/01-clear/clear.c

@@ -24,10 +24,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/clear", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/clear", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     return SDL_APP_CONTINUE;  /* carry on with the program! */
     return SDL_APP_CONTINUE;  /* carry on with the program! */
 }
 }

+ 2 - 1
examples/renderer/02-primitives/primitives.c

@@ -26,10 +26,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/primitives", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/primitives", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* set up some random points */
     /* set up some random points */
     for (i = 0; i < SDL_arraysize(points); i++) {
     for (i = 0; i < SDL_arraysize(points); i++) {

+ 2 - 1
examples/renderer/03-lines/lines.c

@@ -23,10 +23,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/lines", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/lines", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     return SDL_APP_CONTINUE;  /* carry on with the program! */
     return SDL_APP_CONTINUE;  /* carry on with the program! */
 }
 }

+ 2 - 1
examples/renderer/04-points/points.c

@@ -43,10 +43,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/points", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/points", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* set up the data for a bunch of points. */
     /* set up the data for a bunch of points. */
     for (i = 0; i < SDL_arraysize(points); i++) {
     for (i = 0; i < SDL_arraysize(points); i++) {

+ 2 - 1
examples/renderer/05-rectangles/rectangles.c

@@ -26,10 +26,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/rectangles", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/rectangles", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     return SDL_APP_CONTINUE;  /* carry on with the program! */
     return SDL_APP_CONTINUE;  /* carry on with the program! */
 }
 }

+ 2 - 1
examples/renderer/06-textures/textures.c

@@ -32,10 +32,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/textures", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/textures", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/07-streaming-textures/streaming-textures.c

@@ -29,10 +29,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/streaming-textures", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/streaming-textures", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, TEXTURE_SIZE, TEXTURE_SIZE);
     texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_STREAMING, TEXTURE_SIZE, TEXTURE_SIZE);
     if (!texture) {
     if (!texture) {

+ 2 - 1
examples/renderer/08-rotating-textures/rotating-textures.c

@@ -32,10 +32,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/rotating-textures", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/rotating-textures", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/09-scaling-textures/scaling-textures.c

@@ -32,10 +32,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/scaling-textures", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/scaling-textures", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/10-geometry/geometry.c

@@ -32,10 +32,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/geometry", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/geometry", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/11-color-mods/color-mods.c

@@ -32,10 +32,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/color-mods", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/color-mods", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/14-viewport/viewport.c

@@ -32,10 +32,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/viewport", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/viewport", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/15-cliprect/cliprect.c

@@ -39,10 +39,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/cliprect", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/cliprect", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     cliprect_direction.x = cliprect_direction.y = 1.0f;
     cliprect_direction.x = cliprect_direction.y = 1.0f;
 
 

+ 2 - 1
examples/renderer/17-read-pixels/read-pixels.c

@@ -41,10 +41,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/read-pixels", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/read-pixels", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 2 - 1
examples/renderer/18-debug-text/debug-text.c

@@ -26,10 +26,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/debug-text", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/debug-text", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     return SDL_APP_CONTINUE;  /* carry on with the program! */
     return SDL_APP_CONTINUE;  /* carry on with the program! */
 }
 }

+ 2 - 1
examples/renderer/19-affine-textures/affine-textures.c

@@ -34,10 +34,11 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/renderer/affine-textures", WINDOW_WIDTH, WINDOW_HEIGHT, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/renderer/affine-textures", WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
 
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
     /* Textures are pixel data that we upload to the video hardware for fast drawing. Lots of 2D
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many
        engines refer to these as "sprites." We'll do a static texture (upload once, draw many

+ 3 - 1
examples/template.c

@@ -23,10 +23,12 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
 
 
-    if (!SDL_CreateWindowAndRenderer("examples/CATEGORY/NAME", 640, 480, 0, &window, &renderer)) {
+    if (!SDL_CreateWindowAndRenderer("examples/CATEGORY/NAME", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
         return SDL_APP_FAILURE;
         return SDL_APP_FAILURE;
     }
     }
+    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
+
     return SDL_APP_CONTINUE;  /* carry on with the program! */
     return SDL_APP_CONTINUE;  /* carry on with the program! */
 }
 }