- [NEW] Les finestres guarden la posició i el zoom

This commit is contained in:
2025-07-29 11:29:35 +02:00
parent 913450fadb
commit 2a0febc6b7
5 changed files with 352 additions and 7 deletions

View File

@@ -7,6 +7,7 @@
#include "ui_window.h"
#include "z80debug.h"
#include "ui.h"
#include "file.h"
//#include "zx_128mem.h"
namespace zxscreen
@@ -51,6 +52,15 @@ namespace zxscreen
#define SCREEN_SYNC 0xFFFF
#define SCREEN_BORDER 0xFFFE
void saveWindowConfiguration()
{
file::setConfigValueInteger("screen_zoom", zoom);
int x, y;
SDL_GetWindowPosition(win, &x, &y);
file::setConfigValueInteger("screen_x", x);
file::setConfigValueInteger("screen_y", y);
}
void create_tables()
{
uint32_t count = 0;
@@ -119,7 +129,10 @@ namespace zxscreen
//sprintf(tmp, " %ix%i", x, y);
//setTitle(tmp);
if (e->window.event==SDL_WINDOWEVENT_CLOSE) {
saveWindowConfiguration();
return false;
} else if (e->window.event==SDL_WINDOWEVENT_FOCUS_LOST || e->window.event==SDL_WINDOWEVENT_MOVED) {
saveWindowConfiguration();
} else if ((e->window.event==SDL_WINDOWEVENT_SHOWN) || (e->window.event==SDL_WINDOWEVENT_EXPOSED)) {
redraw();
}
@@ -160,6 +173,7 @@ namespace zxscreen
void reinit()
{
saveWindowConfiguration();
if (win) ui::window::unregisterWindow(SDL_GetWindowID(win));
if (tex) SDL_DestroyTexture(tex);
@@ -167,8 +181,12 @@ namespace zxscreen
if (ren) SDL_DestroyRenderer(ren);
if (win) SDL_DestroyWindow(win);
zoom = file::getConfigValueInteger("screen_zoom", 1);
const int x = file::getConfigValueInteger("screen_x", SDL_WINDOWPOS_UNDEFINED);
const int y = file::getConfigValueInteger("screen_y", SDL_WINDOWPOS_UNDEFINED);
const int z = fullscreen ? 1 : zoom;
win = SDL_CreateWindow("ZX Spectrum Screen", 1216, 565, 352*z, 296*z, fullscreen?SDL_WINDOW_FULLSCREEN_DESKTOP:SDL_WINDOW_ALLOW_HIGHDPI);
win = SDL_CreateWindow("ZX Spectrum Screen", x, y, 352*z, 296*z, fullscreen?SDL_WINDOW_FULLSCREEN_DESKTOP:SDL_WINDOW_ALLOW_HIGHDPI);
ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
tex = SDL_CreateTexture(ren, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, 352, 296);
uitex = ui::createtexture(ren);