mirror of
https://github.com/FunKey-Project/FunKey-ProdScreens.git
synced 2025-12-12 08:48:51 +01:00
117 lines
4.3 KiB
C
117 lines
4.3 KiB
C
#include "funkey_prod_screens.h"
|
|
|
|
|
|
/// -------------- FUNCTIONS IMPLEMENTATION --------------
|
|
int launch_prod_screen_display(int argc, char *argv[]){
|
|
SDL_Event event;
|
|
SDL_Surface *text_surface = NULL;
|
|
SDL_Rect text_pos;
|
|
int stop_menu_loop = 0;
|
|
int timeout = 31;
|
|
int prev_ms = 0;
|
|
int res = EXIT_FAILURE;
|
|
|
|
/* Main loop */
|
|
while (!stop_menu_loop && timeout)
|
|
{
|
|
if(SDL_GetTicks() - prev_ms > 1000){
|
|
|
|
/* Update time*/
|
|
prev_ms = SDL_GetTicks();
|
|
char str_title[50];
|
|
timeout--;
|
|
|
|
/* Fill screen white */
|
|
SDL_FillRect(hw_surface, NULL, SDL_MapRGBA(hw_surface->format, bg_color.r, bg_color.g, bg_color.b, 0) );
|
|
|
|
/* Write Title */
|
|
text_surface = TTF_RenderText_Shaded(font_title, prog_title, text_color, bg_color);
|
|
text_pos.x = display_width/2 - text_surface->w/2;
|
|
text_pos.y = Y_PADDING;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
|
|
/* Write "Screen ok ? */
|
|
text_surface = TTF_RenderText_Shaded(font_title, "SCREEN OK ?", text_color, bg_color);
|
|
text_pos.x = display_width/2 - text_surface->w/2;
|
|
text_pos.y = display_height/2 - text_surface->h/2 - Y_PADDING;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
|
|
/* Write timeout */
|
|
sprintf(str_title, "%d", timeout);
|
|
text_surface = TTF_RenderText_Shaded(font_title, str_title, text_color, bg_color);
|
|
text_pos.x = display_width/2 - text_surface->w/2;
|
|
text_pos.y = display_height/2 - text_surface->h/2 + Y_PADDING;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
|
|
/* Write:
|
|
"Press
|
|
L=FAIL
|
|
*/
|
|
SDL_Color red_color={220,20,20};
|
|
text_surface = TTF_RenderText_Shaded(font_info, "Press", red_color, bg_color);
|
|
text_pos.x = X_PADDING;
|
|
text_pos.y = display_height - Y_PADDING - 2*text_surface->h;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
text_surface = TTF_RenderText_Shaded(font_info, "L=FAIL", red_color, bg_color);
|
|
text_pos.x = X_PADDING;
|
|
text_pos.y = display_height - Y_PADDING - text_surface->h;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
|
|
/* Write:
|
|
Press
|
|
R=OK"
|
|
*/
|
|
SDL_Color green_color={20,220,20};
|
|
text_surface = TTF_RenderText_Shaded(font_info, "Press", green_color, bg_color);
|
|
text_pos.x = display_width - text_surface->w - X_PADDING;
|
|
text_pos.y = display_height - Y_PADDING - 2*text_surface->h;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
text_surface = TTF_RenderText_Shaded(font_info, "R=OK", green_color, bg_color);
|
|
text_pos.x = display_width - text_surface->w - X_PADDING;
|
|
text_pos.y = display_height - Y_PADDING - text_surface->h;
|
|
SDL_BlitSurface(text_surface, NULL, hw_surface, &text_pos);
|
|
SDL_FreeSurface(text_surface);
|
|
|
|
/// Render screen
|
|
SDL_Flip(hw_surface);
|
|
}
|
|
|
|
/* Handle events */
|
|
while (SDL_PollEvent(&event))
|
|
switch(event.type)
|
|
{
|
|
case SDL_QUIT:
|
|
stop_menu_loop = 1;
|
|
break;
|
|
case SDL_KEYDOWN:
|
|
switch (event.key.keysym.sym)
|
|
{
|
|
|
|
case SDLK_m:
|
|
stop_menu_loop = 1;
|
|
res = ERROR_MANUAL_FAIL;
|
|
break;
|
|
|
|
case SDLK_n:
|
|
case SDLK_ESCAPE:
|
|
stop_menu_loop = 1;
|
|
res = 0;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* Sleep for some time */
|
|
SDL_Delay(SLEEP_PERIOD_MS);
|
|
}
|
|
|
|
return res;
|
|
} |