Treballant en la conversió a SDL3
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
#include "jdraw.h"
|
||||
#include <SDL2/SDL.h>
|
||||
#include <SDL3/SDL.h>
|
||||
#include "gif.c"
|
||||
#include "jfile.h"
|
||||
#include <vector>
|
||||
@@ -15,7 +15,7 @@ namespace draw
|
||||
SDL_Renderer *sdl_renderer = nullptr; // El renderer de SDL
|
||||
SDL_Texture *sdl_texture = nullptr; // La textura de SDL a la que pintarem la nostra superficie "screen" i que despres volcarem a pantalla
|
||||
|
||||
SDL_Rect dest_rect = {0, 0, 320, 240};
|
||||
SDL_FRect dest_rect = {0, 0, 320, 240};
|
||||
static int fullscreen_scale = 1;
|
||||
|
||||
static int screen_zoom = 1;
|
||||
@@ -89,23 +89,22 @@ namespace draw
|
||||
// [TODO] Incloure gestió de pantalla completa
|
||||
|
||||
// Inicialització de les estructures de SDL
|
||||
sdl_window = SDL_CreateWindow(screen_title.c_str(), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, screen_width * screen_zoom, screen_height * screen_zoom, screen_fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_SHOWN);
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
|
||||
sdl_window = SDL_CreateWindow(screen_title.c_str(), screen_width * screen_zoom, screen_height * screen_zoom, screen_fullscreen ? SDL_WINDOW_FULLSCREEN : 0);
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, nullptr);
|
||||
sdl_texture = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, screen_width, screen_height);
|
||||
|
||||
SDL_RendererInfo info;
|
||||
char *driver_name;
|
||||
const int num_render_drivers = SDL_GetNumRenderDrivers();
|
||||
printf("Available renderers:\n");
|
||||
for (int i=0; i<num_render_drivers; ++i)
|
||||
{
|
||||
SDL_GetRenderDriverInfo(i, &info);
|
||||
printf(" - %i: %s\n", i, info.name);
|
||||
SDL_GetRenderDriver(i);
|
||||
printf(" - %i: %s\n", i, driver_name);
|
||||
}
|
||||
|
||||
SDL_GetRendererInfo(sdl_renderer, &info);
|
||||
printf("\nRenderer: %s\n", info.name);
|
||||
printf("\nRenderer: %s\n", SDL_GetRendererName(sdl_renderer));
|
||||
|
||||
SDL_ShowCursor(false);
|
||||
SDL_HideCursor();
|
||||
|
||||
if (screen_fullscreen)
|
||||
{
|
||||
@@ -183,11 +182,11 @@ namespace draw
|
||||
SDL_DestroyWindow(sdl_window);
|
||||
|
||||
const int zoom = screen_fullscreen ? 1 : screen_zoom;
|
||||
sdl_window = SDL_CreateWindow(screen_title.c_str(), SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, screen_width * zoom, screen_height * zoom, screen_fullscreen?SDL_WINDOW_FULLSCREEN_DESKTOP:SDL_WINDOW_SHOWN);
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
|
||||
sdl_window = SDL_CreateWindow(screen_title.c_str(), screen_width * zoom, screen_height * zoom, screen_fullscreen?SDL_WINDOW_FULLSCREEN:0);
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, nullptr);
|
||||
sdl_texture = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, screen_width, screen_height);
|
||||
|
||||
SDL_ShowCursor(false);
|
||||
SDL_HideCursor();
|
||||
|
||||
if (screen_fullscreen)
|
||||
{
|
||||
@@ -213,12 +212,10 @@ namespace draw
|
||||
void setZoom(const int value)
|
||||
{
|
||||
if (value < 1) return;
|
||||
const SDL_DisplayMode *dm = SDL_GetCurrentDisplayMode(SDL_GetDisplayForWindow(sdl_window));
|
||||
|
||||
SDL_DisplayMode dm;
|
||||
SDL_GetCurrentDisplayMode(0, &dm);
|
||||
|
||||
if (screen_width*value > dm.w) return;
|
||||
if (screen_height*value > dm.h) return;
|
||||
if (screen_width*value > dm->w) return;
|
||||
if (screen_height*value > dm->h) return;
|
||||
|
||||
screen_zoom = value;
|
||||
reinit();
|
||||
@@ -707,7 +704,7 @@ namespace draw
|
||||
}
|
||||
|
||||
// Pintem la textura a pantalla
|
||||
SDL_RenderCopy(sdl_renderer, sdl_texture, NULL, &dest_rect);
|
||||
SDL_RenderTexture(sdl_renderer, sdl_texture, NULL, &dest_rect);
|
||||
|
||||
if (screen_mode & SCREEN_MODE_SCANLINES)
|
||||
{
|
||||
@@ -718,14 +715,14 @@ namespace draw
|
||||
for (int y=0; y<screen_height; ++y)
|
||||
{
|
||||
SDL_SetRenderDrawColor(sdl_renderer, 0, 0, 0, 192);
|
||||
SDL_RenderDrawLine(sdl_renderer, dest_rect.x, dest_rect.y + y*zoom, dest_rect.x + dest_rect.w, dest_rect.y + y*zoom);
|
||||
SDL_RenderLine(sdl_renderer, dest_rect.x, dest_rect.y + y*zoom, dest_rect.x + dest_rect.w, dest_rect.y + y*zoom);
|
||||
SDL_SetRenderDrawColor(sdl_renderer, 0, 0, 0, 96);
|
||||
if (zoom>3) SDL_RenderDrawLine(sdl_renderer, dest_rect.x, 1+dest_rect.y + y*zoom, dest_rect.x + dest_rect.w, 1+dest_rect.y + y*zoom);
|
||||
if (zoom>3) SDL_RenderLine(sdl_renderer, dest_rect.x, 1+dest_rect.y + y*zoom, dest_rect.x + dest_rect.w, 1+dest_rect.y + y*zoom);
|
||||
}
|
||||
SDL_SetRenderDrawColor(sdl_renderer, 0, 0, 0, 16);
|
||||
for (int x=0; x<screen_width; ++x)
|
||||
{
|
||||
SDL_RenderDrawLine(sdl_renderer, dest_rect.x + x*zoom, dest_rect.y, dest_rect.x + x*zoom, dest_rect.y + dest_rect.h);
|
||||
SDL_RenderLine(sdl_renderer, dest_rect.x + x*zoom, dest_rect.y, dest_rect.x + x*zoom, dest_rect.y + dest_rect.h);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user