#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; }