añadida funcionalidad para mostrar videos

main
fanta 2 weeks ago
parent 35edf83a21
commit f8fb439fdd

@ -7,7 +7,7 @@ fanta <fanta@56k.es> 2026
Dependencias: Dependencias:
<pre> <pre>
apt-get install git gcc make libxmp-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev apt-get install git gcc make libxmp-dev libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev mplayer
</pre> </pre>
Clonar: Clonar:
@ -41,18 +41,22 @@ Y eso es todo amigo/a/e. Si quieres añadir más diapositivas mira en el directo
Recuerda que el formato es así: Recuerda que el formato es así:
<pre> <pre>
slides/slide-000.png;24;97;101;106;250;725;fonts/Daydream DEMO.otf;Tunubesecamirio.com slides/slide-000.png;24;97;101;106;250;725;fonts/Daydream DEMO.otf;NOVIDEO;Tunubesecamirio.com
slides/slide-001.png;24;84;254;84;10;720;fonts/Daydream DEMO.otf;Hackeja La Terra En defensa dels territoris slides/slide-001.png;24;84;254;84;10;720;fonts/Daydream DEMO.otf;dasf;Hackeja La Terra En defensa dels territoris
slides/slide-002.png;20;0;0;168;10;16;fonts/Daydream DEMO.otf;Hackeja La Terra En defensa dels territoris slides/slide-002.png;20;0;0;168;10;16;fonts/Daydream DEMO.otf;NOVIDEO;Hackeja La Terra En defensa dels territoris
slides/slide-003.png;26;255;255;255;10;720;fonts/Daydream DEMO.otf;Hack The Earth In defense of territories slides/slide-003.png;26;255;255;255;10;720;fonts/Daydream DEMO.otf;NOVIDEO;Hack The Earth In defense of territories
slides/slide-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf; slides/slide-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf;NOVIDEO;NOTEXT
</pre> </pre>
El orden pues de las slides se va configurando en el index.txt. El orden pues de las slides se va configurando en el index.txt.
<pre> <pre>
ruta del png;tamaño fuente;red;green;blue;x;y;ruta del ttf/otf;texto (puede ponerse un espacio si no se quiere que se vea nada ruta del png;tamaño fuente;red;green;blue;x;y;ruta del ttf/otf;ruta de un mp4;texto
</pre> </pre>
si no se indica un mp4 que se reproduzca al inicio de una slide se ha de poner NOVIDEO.
si no se quiere mostrar texto se pone NOTEXT
Un saludo cordial. Un saludo cordial.

@ -1,4 +1,3 @@
- Añadir opción para abrir en ventana como parametro. - Añadir opción para abrir en ventana como parametro.
window = SDL_CreateWindow(windowTitle,SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,windowWidth,windowHeight,SDL_WINDOW_OPENGL); - Añadir que muestre pantalla negra tras terminar la última slide. que no se vea lo que queda en el doble buffer

@ -2,8 +2,10 @@
#include <xmp.h> #include <xmp.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <SDL_image.h> #include <SDL_image.h>
#include <SDL_ttf.h> #include <SDL_ttf.h>
#include <unistd.h>
// Fanta <fanta@56k.es> 2026 // Fanta <fanta@56k.es> 2026
// Presentator 0.2 // Presentator 0.2
@ -35,7 +37,7 @@ int transition_active = 0;
int createWindow(void){ int createWindow(void){
SDL_Init(SDL_INIT_VIDEO); SDL_Init(SDL_INIT_VIDEO);
TTF_Init(); TTF_Init();
window = SDL_CreateWindow(windowTitle,SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,windowWidth,windowHeight,SDL_WINDOW_FULLSCREEN); window = SDL_CreateWindow(windowTitle,SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,windowWidth,windowHeight,SDL_WINDOW_BORDERLESS|SDL_WINDOW_FULLSCREEN);
render = SDL_CreateRenderer(window, -1, 0); render = SDL_CreateRenderer(window, -1, 0);
return 0; return 0;
} }
@ -99,6 +101,8 @@ int loadSlide(int nslide){
int slideTextX; int slideTextX;
int slideTextY; int slideTextY;
char * slideFont; char * slideFont;
char * slideVideo;
fp = fopen(slidesIndex, "r"); fp = fopen(slidesIndex, "r");
while ((read = getline(&line, &len, fp)) != -1) { while ((read = getline(&line, &len, fp)) != -1) {
@ -106,7 +110,7 @@ int loadSlide(int nslide){
actualSlide = line; actualSlide = line;
char *token = strtok(actualSlide, ";"); char *token = strtok(actualSlide, ";");
int e; int e;
for (e = 0; e < 9; e++) { for (e = 0; e < 10; e++) {
if (e == 0){ slideName = token; } if (e == 0){ slideName = token; }
if (e == 1){ slideTextSize = atoi(token); } if (e == 1){ slideTextSize = atoi(token); }
if (e == 2){ slideTextRed = atoi(token); } if (e == 2){ slideTextRed = atoi(token); }
@ -115,22 +119,31 @@ int loadSlide(int nslide){
if (e == 5){ slideTextX = atoi(token); } if (e == 5){ slideTextX = atoi(token); }
if (e == 6){ slideTextY = atoi(token); } if (e == 6){ slideTextY = atoi(token); }
if (e == 7){ slideFont = token; } if (e == 7){ slideFont = token; }
if (e == 8){ slideText = token; slideText[ strlen(slideText) - 1 ] = '\0'; } if (e == 8){ slideVideo = token; }
if (e == 9){ slideText = token; slideText[ strlen(slideText) - 1 ] = '\0'; }
token = strtok(NULL, ";"); token = strtok(NULL, ";");
} }
SDL_Rect textureSlideRect = { 0, 0, windowWidth, windowHeight }; SDL_Rect textureSlideRect = { 0, 0, windowWidth, windowHeight };
IMG_Init(IMG_INIT_PNG); IMG_Init(IMG_INIT_PNG);
printf("%s %s\n", slideName, slideText);
textureSlide = IMG_LoadTexture(render, slideName); textureSlide = IMG_LoadTexture(render, slideName);
SDL_RenderCopy(render, textureSlide, NULL, &textureSlideRect); SDL_RenderCopy(render, textureSlide, NULL, &textureSlideRect);
TTF_Font* font = TTF_OpenFont(slideFont, slideTextSize); if (strcmp(slideText,"NOTEXT") != 0){
SDL_Color textColor = {slideTextRed, slideTextGreen, slideTextBlue, 255}; TTF_Font* font = TTF_OpenFont(slideFont, slideTextSize);
SDL_Surface *textSurface = TTF_RenderText_Solid(font, slideText, textColor); SDL_Color textColor = {slideTextRed, slideTextGreen, slideTextBlue, 255};
SDL_Texture *textTexture = SDL_CreateTextureFromSurface(render, textSurface); SDL_Surface *textSurface = TTF_RenderText_Solid(font, slideText, textColor);
SDL_Rect textRect = {slideTextX, slideTextY, textSurface->w, textSurface->h}; SDL_Texture *textTexture = SDL_CreateTextureFromSurface(render, textSurface);
SDL_RenderCopy(render, textTexture, NULL, &textRect); SDL_Rect textRect = {slideTextX, slideTextY, textSurface->w, textSurface->h};
SDL_RenderCopy(render, textTexture, NULL, &textRect);
}
if (strcmp(slideVideo,"NOVIDEO") != 0){
char slideMplayer[] = "mplayer -really-quiet -fs ";
strcat(slideMplayer, slideVideo);
system(slideMplayer);
}
} }
nline = nline +1; nline = nline +1;
} }
@ -190,6 +203,8 @@ int main(int argc, char ** argv) {
while (!quit) { while (!quit) {
SDL_WaitEvent(&evento); SDL_WaitEvent(&evento);

@ -1,5 +1,5 @@
slides/slide-000.png;24;97;101;106;250;725;fonts/Daydream DEMO.otf;Tunubesecamirio.com slides/slide-000.png;24;97;101;106;250;725;fonts/Daydream DEMO.otf;NOVIDEO;NOTEXT
slides/slide-001.png;24;84;254;84;10;720;fonts/Daydream DEMO.otf;Hackeja La Terra En defensa dels territoris slides/slide-001.png;24;84;254;84;10;720;fonts/Daydream DEMO.otf;NOVIDEO;NOTEXT
slides/slide-002.png;20;0;0;168;10;16;fonts/Daydream DEMO.otf;Hackeja La Terra En defensa dels territoris slides/slide-002.png;20;0;0;168;10;16;fonts/Daydream DEMO.otf;NOVIDEO;NOTEXT
slides/slide-003.png;26;255;255;255;10;720;fonts/Daydream DEMO.otf;Hack The Earth In defense of territories slides/slide-003.png;24;97;101;106;250;725;fonts/Daydream DEMO.otf;NOVIDEO;Tunubesecamirio.com
slides/slide-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf; slides/slide-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf;NOVIDEO;NOTEXT

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Loading…
Cancel
Save