This commit is contained in:
Thomas Peterson 2025-11-14 21:36:34 +01:00
parent 4d91dbb0ee
commit e513499fed
6 changed files with 59 additions and 1 deletions

View File

@ -347,6 +347,20 @@ $root->addComponent($subTitle);
$statusLabel = new Label('Bereit.', 'text-sm text-gray-600');
$kanbanView = new KanbanBoardView($storagePath, $boards, $statusLabel);
// SDL_Window PixelDensity und DisplayScale im Status anzeigen (falls verfügbar)
$densityText = '';
if (function_exists('sdl_get_window_pixel_density')) {
$density = sdl_get_window_pixel_density($window->getWindowResource());
$densityText .= sprintf('PixelDensity: %.2f', $density);
}
if (function_exists('sdl_get_window_display_scale')) {
$scale = sdl_get_window_display_scale($window->getWindowResource());
$densityText .= ($densityText !== '' ? ' | ' : '') . sprintf('DisplayScale: %.2f', $scale);
}
if ($densityText !== '') {
$statusLabel->setText('Bereit. ' . $densityText);
}
$scaleInput = new TextInput('Scale (z.B. 1.0 oder 2.0)', 'w-40 border border-gray-300 rounded px-3 py-2 bg-white text-black');
$scaleInput->setOnChange(function (string $value) use ($statusLabel): void {
$value = trim($value);

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -769,6 +769,23 @@ PHP_FUNCTION(sdl_get_window_size_in_pixels) {
add_index_long(return_value, 1, h);
}
PHP_FUNCTION(sdl_get_window_pixel_density) {
zval *win_res;
SDL_Window *win;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &win_res) == FAILURE) {
RETURN_THROWS();
}
win = (SDL_Window *)zend_fetch_resource(Z_RES_P(win_res), "SDL_Window", le_sdl_window);
if (!win) {
RETURN_FALSE;
}
float density = SDL_GetWindowPixelDensity(win);
RETURN_DOUBLE(density);
}
PHP_FUNCTION(sdl_get_renderer_output_size) {
zval *ren_res;
SDL_Renderer *ren;
@ -793,6 +810,23 @@ PHP_FUNCTION(sdl_get_renderer_output_size) {
add_index_long(return_value, 1, h);
}
PHP_FUNCTION(sdl_get_window_display_scale) {
zval *win_res;
SDL_Window *win;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &win_res) == FAILURE) {
RETURN_THROWS();
}
win = (SDL_Window *)zend_fetch_resource(Z_RES_P(win_res), "SDL_Window", le_sdl_window);
if (!win) {
RETURN_FALSE;
}
float scale = SDL_GetWindowDisplayScale(win);
RETURN_DOUBLE(scale);
}
PHP_FUNCTION(sdl_start_text_input) {
zval *win_res;
SDL_Window *win;
@ -987,6 +1021,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_sdl_get_window_size_in_pixels, 0, 0, 1)
ZEND_ARG_INFO(0, window)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_sdl_get_window_pixel_density, 0, 0, 1)
ZEND_ARG_INFO(0, window)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_sdl_get_window_display_scale, 0, 0, 1)
ZEND_ARG_INFO(0, window)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_sdl_get_renderer_output_size, 0, 0, 1)
ZEND_ARG_INFO(0, renderer)
ZEND_END_ARG_INFO()
@ -1030,6 +1072,8 @@ const zend_function_entry sdl3_functions[] = {
PHP_FE(sdl_set_render_clip_rect, arginfo_sdl_set_render_clip_rect)
PHP_FE(sdl_get_window_size, arginfo_sdl_get_window_size)
PHP_FE(sdl_get_window_size_in_pixels, arginfo_sdl_get_window_size_in_pixels)
PHP_FE(sdl_get_window_pixel_density, arginfo_sdl_get_window_pixel_density)
PHP_FE(sdl_get_window_display_scale, arginfo_sdl_get_window_display_scale)
PHP_FE(sdl_get_renderer_output_size, arginfo_sdl_get_renderer_output_size)
PHP_FE(sdl_start_text_input, arginfo_sdl_start_text_input)
PHP_FE(sdl_stop_text_input, arginfo_sdl_stop_text_input)

View File

@ -48,7 +48,7 @@ class Window
}
// Create window with resizable flag for normal window decorations
$flags = SDL_WINDOW_RESIZABLE;
$flags = SDL_WINDOW_HIGH_PIXEL_DENSITY | SDL_WINDOW_RESIZABLE;
$this->window = sdl_create_window($title, $width, $height, $flags);
if (!$this->window) {