diff --git a/Pontu/entryPoints/test.c b/Pontu/entryPoints/test.c index 1428c0c..d4c2aaa 100644 --- a/Pontu/entryPoints/test.c +++ b/Pontu/entryPoints/test.c @@ -1,6 +1,7 @@ //#include "../test/testTextureLoader.c" -#include "../test/testAudio.c" -#include "../test/testGenerateurTexture.c" +#include "../test/testFontLoader.c" +// #include "../test/testAudio.c" +// #include "../test/testGenerateurTexture.c" /* This file is meant to be modified (used only to called other tests functions) @@ -9,7 +10,8 @@ int main(/*int argc, char *argv[]*/) { //testTextureLoader(); //testAudio(); - testGenerateurTexture(); + testFontLoader(); + //testGenerateurTexture(); return 0; } diff --git a/Pontu/include/engine/FontLoader.h b/Pontu/include/engine/FontLoader.h new file mode 100644 index 0000000..2cb7c2c --- /dev/null +++ b/Pontu/include/engine/FontLoader.h @@ -0,0 +1,47 @@ +#ifndef FONT_LOADER_INCLUDED +#define FONT_LOADER_INCLUDED + +#define FONT_PATH rsrc/font/ + +#define MACRO_FOR_ALL_FONTS(M) \ + M(retro) +#define MACRO_FONT_ENUM_GEN(E) FONT_##E, + +#include +#include +#include + + + + +typedef enum +{ + MACRO_FOR_ALL_FONTS(MACRO_FONT_ENUM_GEN) + NB_FONTS_DEFINED ///< Contains the number of fonts +} EnumFont; + +typedef struct +{ + TTF_Font* fonts[NB_FONTS_DEFINED]; ///< An array of texture (indexed with EnumTextures) +} FontHandler; + +/* + * \brief Allows to load fonts located in rsrc/font/. Pleas note that all fonts must be in TTF format. + * \author Allan Point + * \date 03/01/22 + * \return A FontHandler filled with all fonts + * \copyright CECIL + */ +FontHandler loadFonts(void); + +/* + * \brief Allows to free all fonts from a FontHandler. + * \author Allan Point + * \date 03/01/22 + * \return True on success. Else false. Normaly, this function will always retrun true. + * \copyright CECIL + */ +bool freeFonts(FontHandler fontHandler); + + +#endif diff --git a/Pontu/src/engine/FontLoader.c b/Pontu/src/engine/FontLoader.c new file mode 100644 index 0000000..7db502c --- /dev/null +++ b/Pontu/src/engine/FontLoader.c @@ -0,0 +1,46 @@ +#include "engine/FontLoader.h" + +#define MACRO_TO_FONT_NAME(N) #N".TTF", + +const char* fontNames[] = { + MACRO_FOR_ALL_FONTS(MACRO_TO_FONT_NAME) +}; + +FontHandler loadFonts(void) +{ + const char fontPath[] = "rsrc/font/"; + FontHandler fontHandler; + char* fontPathFile = NULL; + for(int i=0; i +#include +#include "engine/TextureLoader.h" +#include "engine/FontLoader.h" + +//gcc test.c -I ../include $(sdl2-config --cflags --libs) + +int testFontLoader(void) { + SDL_Window *window = NULL; + SDL_Renderer *renderer = NULL; + SDL_Texture* picture; + int statut = EXIT_FAILURE; + char* path = "rsrc/img/Lenna.png"; + + if(0 != SDL_Init(SDL_INIT_VIDEO)) + { + fprintf(stderr, "Erreur SDL_INIT: %s\n", SDL_GetError()); + goto Quit; + } + + //fenetre + window = SDL_CreateWindow("FenĂȘtre", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640,480, SDL_WINDOW_SHOWN); + if(window == NULL) + { + fprintf(stderr, "Erreur SDL_CreateWindow: %s\n", SDL_GetError()); + goto Quit; + } + + //rendu + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + if(renderer == NULL) + { + fprintf(stderr, "Erreur SDL_CreateRenderer: %s\n", SDL_GetError()); + goto Quit; + } + + //Fonts + if(TTF_Init() == -1) + { + fprintf(stderr, "Erreur: TTF_Init: %s\n", TTF_GetError()); + goto Quit; + } + + if(0 != SDL_SetRenderDrawColor(renderer, 0,0,0,0)) //choisi la couleur avec laquelle travailler + { + fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError()); + goto Quit; + } + + if(0 != SDL_RenderClear(renderer)) //efface le rendu en le repeignant avec la couleur choisi + { + fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError()); + goto Quit; + } + + if(0 != SDL_SetRenderDrawColor(renderer, 255,255,255,255)) //choisi la couleur avec laquelle travailler + { + fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError()); + goto Quit; + } + SDL_RenderPresent(renderer); + + SDL_bool quit = SDL_FALSE; + SDL_Event event; + + + picture = createTextureFromPath(renderer, path); + FontHandler fontHandler = loadFonts(); + while(!quit) + { + while(SDL_PollEvent(&event)) + { + switch(event.type) + { + case SDL_QUIT: + quit = SDL_TRUE; + break; + case SDL_MOUSEBUTTONUP: + break; + } + } + SDL_RenderCopy(renderer, picture, NULL, NULL); + SDL_RenderPresent(renderer); + + SDL_Delay(20); + } + +Quit: + freeFonts(fontHandler); + if(renderer != NULL) + SDL_DestroyRenderer(renderer); + if(window != NULL) + SDL_DestroyWindow(window); + TTF_Quit(); + SDL_Quit(); + return statut; +}