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:
<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>
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í:
<pre>
slides/slide-000.png;24;97;101;106;250;725;fonts/Daydream DEMO.otf;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-002.png;20;0;0;168;10;16;fonts/Daydream DEMO.otf;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-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf;
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;dasf;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;NOVIDEO;Hack The Earth In defense of territories
slides/slide-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf;NOVIDEO;NOTEXT
</pre>
El orden pues de las slides se va configurando en el index.txt.
<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>
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.

@ -1,4 +1,3 @@
- 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 <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <SDL_image.h>
#include <SDL_ttf.h>
#include <unistd.h>
// Fanta <fanta@56k.es> 2026
// Presentator 0.2
@ -35,7 +37,7 @@ int transition_active = 0;
int createWindow(void){
SDL_Init(SDL_INIT_VIDEO);
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);
return 0;
}
@ -99,6 +101,8 @@ int loadSlide(int nslide){
int slideTextX;
int slideTextY;
char * slideFont;
char * slideVideo;
fp = fopen(slidesIndex, "r");
while ((read = getline(&line, &len, fp)) != -1) {
@ -106,7 +110,7 @@ int loadSlide(int nslide){
actualSlide = line;
char *token = strtok(actualSlide, ";");
int e;
for (e = 0; e < 9; e++) {
for (e = 0; e < 10; e++) {
if (e == 0){ slideName = token; }
if (e == 1){ slideTextSize = atoi(token); }
if (e == 2){ slideTextRed = atoi(token); }
@ -115,22 +119,31 @@ int loadSlide(int nslide){
if (e == 5){ slideTextX = atoi(token); }
if (e == 6){ slideTextY = atoi(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, ";");
}
SDL_Rect textureSlideRect = { 0, 0, windowWidth, windowHeight };
IMG_Init(IMG_INIT_PNG);
printf("%s %s\n", slideName, slideText);
textureSlide = IMG_LoadTexture(render, slideName);
SDL_RenderCopy(render, textureSlide, NULL, &textureSlideRect);
TTF_Font* font = TTF_OpenFont(slideFont, slideTextSize);
SDL_Color textColor = {slideTextRed, slideTextGreen, slideTextBlue, 255};
SDL_Surface *textSurface = TTF_RenderText_Solid(font, slideText, textColor);
SDL_Texture *textTexture = SDL_CreateTextureFromSurface(render, textSurface);
SDL_Rect textRect = {slideTextX, slideTextY, textSurface->w, textSurface->h};
SDL_RenderCopy(render, textTexture, NULL, &textRect);
if (strcmp(slideText,"NOTEXT") != 0){
TTF_Font* font = TTF_OpenFont(slideFont, slideTextSize);
SDL_Color textColor = {slideTextRed, slideTextGreen, slideTextBlue, 255};
SDL_Surface *textSurface = TTF_RenderText_Solid(font, slideText, textColor);
SDL_Texture *textTexture = SDL_CreateTextureFromSurface(render, textSurface);
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;
}
@ -190,6 +203,8 @@ int main(int argc, char ** argv) {
while (!quit) {
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-001.png;24;84;254;84;10;720;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;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-004.png;64;255;0;0;100;100;fonts/Lato-Black.ttf;
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;NOVIDEO;NOTEXT
slides/slide-002.png;20;0;0;168;10;16;fonts/Daydream DEMO.otf;NOVIDEO;NOTEXT
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;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