- [NEW] Passat a SDL3

- [NEW] Ara usa JailAudio
- [NEW] Usant última versió de Respak
- [NEW] Afegit lagueirtofile
This commit is contained in:
2025-06-29 16:56:28 +02:00
parent d5286d8abe
commit 737e18fd96
22 changed files with 6398 additions and 832 deletions

View File

@@ -1,6 +1,6 @@
#include "jdraw.h"
#include "SDL2/SDL.h"
#include "gif.c"
#include "SDL3/SDL.h"
#include "gif.h"
#include "jfile.h"
namespace draw
@@ -42,12 +42,16 @@ namespace draw
// [TODO] Incloure gestió de pantalla completa
// Inicialització de les estructures de SDL
sdl_window = SDL_CreateWindow(titol.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width * zoom, height * zoom, SDL_WINDOW_SHOWN);
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
sdl_window = SDL_CreateWindow(titol.c_str(), width * zoom, height * zoom, 0);
if (!sdl_window) { SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "ERROR: Failed to initialize window!\n"); exit(1); }
sdl_renderer = SDL_CreateRenderer(sdl_window, NULL);
if (!sdl_renderer) { SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "ERROR: Failed to initialize renderer!\n"); exit(1); }
sdl_texture = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, width, height);
SDL_SetTextureScaleMode(sdl_texture, SDL_SCALEMODE_NEAREST);
if (!sdl_texture) { SDL_LogError(SDL_LOG_CATEGORY_VIDEO, "ERROR: Failed to initialize texture!\n"); exit(1); }
// Establim el tamany "logic", indepndent del tamany de finestra
SDL_RenderSetLogicalSize(sdl_renderer, width, height);
//SDL_SetRenderLogicalPresentation(sdl_renderer, width, height,);
// Creem la superficie "screen" i la establim com a superficie destinació
screen = createSurface(width, height);
@@ -58,7 +62,7 @@ namespace draw
sel_color = transparent = 0;
for (int i=0;i<256;++i) color_indices[i] = i;
SDL_ShowCursor(SDL_DISABLE);
SDL_HideCursor();
//textsurf = loadSurface("font.gif");
}
@@ -114,7 +118,7 @@ namespace draw
// Agafem un buffer de bytes de l'arxiu especificat
// getFileBuffer() simplement ens torna el arxiu sencer dins de un array de char
int size;
uint8_t *buffer = (uint8_t *)file::getFileBuffer(filename, &size);
uint8_t *buffer = (uint8_t *)file_getfilebuffer(filename.c_str(), size);
// Si ens ha tornat nullptr, es que no l'ha trobat, tornem nosaltres també nullptr ja que no s'ha pogut crear la superficie
if (buffer == nullptr)
@@ -230,7 +234,7 @@ namespace draw
// Agafem un buffer de bytes de l'arxiu especificat
// getFileBuffer() simplement ens torna el arxiu sencer dins de un array de char
int size;
uint8_t *buffer = (uint8_t *)file::getFileBuffer(filename, &size);
uint8_t *buffer = (uint8_t *)file_getfilebuffer(filename.c_str(), size);
// Li passem el array del arxiu a LoadPalette. Ell ens torna un array de uint32_t amb la paleta
// Van a ser 256 entrades de 32 bits, cada entrada es un color, amb el format 0xAARRGGBB
@@ -497,14 +501,14 @@ namespace draw
// i el enviem a la textura SDL
for (uint32_t i = 0; i < size; ++i)
{
sdl_pixels[i] = palette[screen->pixels[i]];
sdl_pixels[i] = palette[screen->pixels[i]] | 0xff000000;
}
// Desbloquejem la textura
SDL_UnlockTexture(sdl_texture);
// Pintem la textura a pantalla
SDL_RenderCopy(sdl_renderer, sdl_texture, NULL, NULL);
SDL_RenderTexture(sdl_renderer, sdl_texture, NULL, NULL);
// I ho presentem
SDL_RenderPresent(sdl_renderer);