ref: b7ca6e794ffc102046aa76e101484d3a4ddb30aa
parent: f40979e430491ad0c6fccaa961c57cf14b170c4f
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Sat Jun 15 15:33:19 EDT 2024
fix #148 support variable texture sizes in device disconnected screen
--- a/src/fx_cube.c
+++ b/src/fx_cube.c
@@ -1,20 +1,17 @@
#include "SDL2_inprint.h"
#include "SDL_pixels.h"
+#include "SDL_render.h"
#include <SDL.h>
+#include <time.h>
-#define target_width 320
-#define target_height 240
static SDL_Texture *texture_cube;
static SDL_Texture *texture_text;
static SDL_Renderer *fx_renderer;
static SDL_Color line_color;
-const char *text_m8c = "M8C";
-const char *text_disconnected = "DEVICE DISCONNECTED";
+static unsigned int center_x = 320 / 2;
+static unsigned int center_y = 240 / 2;
-static const float center_x = (float)target_width / 2;
-static const float center_y = (float)target_height / 2;
-
static const float default_nodes[8][3] = {{-1, -1, -1}, {-1, -1, 1}, {-1, 1, -1}, {-1, 1, 1}, {1, -1, -1}, {1, -1, 1}, {1, 1, -1}, {1, 1, 1}};@@ -51,24 +48,30 @@
}
}
-void fx_cube_init(SDL_Renderer *target_renderer, SDL_Color foreground_color) {+void fx_cube_init(SDL_Renderer *target_renderer, SDL_Color foreground_color,
+ unsigned int texture_width, unsigned int texture_height,
+ unsigned int font_glyph_width) {fx_renderer = target_renderer;
line_color = foreground_color;
+ SDL_Point texture_size;
+ SDL_Texture *og_target = SDL_GetRenderTarget(fx_renderer);
+
+ SDL_QueryTexture(og_target, NULL, NULL, &texture_size.x, &texture_size.y);
+
texture_cube = SDL_CreateTexture(fx_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET,
- target_width, target_height);
+ texture_size.x, texture_size.y);
texture_text = SDL_CreateTexture(fx_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET,
- target_width, target_height);
+ texture_size.x, texture_size.y);
- SDL_Texture *og_target = SDL_GetRenderTarget(fx_renderer);
-
SDL_SetRenderTarget(fx_renderer, texture_text);
SDL_SetRenderDrawColor(fx_renderer, 0, 0, 0, SDL_ALPHA_OPAQUE);
SDL_RenderClear(fx_renderer);
- inprint(fx_renderer, text_disconnected, 130, 228, 0xFFFFFF, 0x000000);
- inprint(fx_renderer, text_m8c, 2, 2, 0xFFFFFF, 0x000000);
+ inprint(fx_renderer, "DEVICE DISCONNECTED", texture_width - font_glyph_width * 19 - 21,
+ texture_height - 12, 0xFFFFFF, 0x000000);
+ inprint(fx_renderer, "M8C", 2, 2, 0xFFFFFF, 0x000000);
SDL_SetRenderTarget(fx_renderer, og_target);
@@ -80,6 +83,9 @@
SDL_SetTextureBlendMode(texture_cube, SDL_BLENDMODE_BLEND);
SDL_SetTextureBlendMode(texture_text, SDL_BLENDMODE_BLEND);
+
+ center_x = texture_size.x / 2.0;
+ center_y = texture_size.y / 2.0;
}
void fx_cube_destroy() {--- a/src/fx_cube.h
+++ b/src/fx_cube.h
@@ -2,7 +2,9 @@
#define FX_CUBE_H_
#include "SDL_render.h"
-void fx_cube_init(SDL_Renderer *target_renderer, SDL_Color foreground_color);
+void fx_cube_init(SDL_Renderer *target_renderer, SDL_Color foreground_color,
+ unsigned int texture_width, unsigned int texture_height,
+ unsigned int font_glyph_width);
void fx_cube_destroy();
void fx_cube_update();
#endif
\ No newline at end of file
--- a/src/render.c
+++ b/src/render.c
@@ -318,7 +318,8 @@
void screensaver_init() {set_font_mode(1);
- fx_cube_init(rend, (SDL_Color){255, 255, 255, 255});+ fx_cube_init(rend, (SDL_Color){255, 255, 255, 255}, texture_width, texture_height,+ fonts[font_mode]->glyph_x);
SDL_LogDebug(SDL_LOG_CATEGORY_APPLICATION, "Screensaver initialized");
}
--
⑨