From 35d27e4bc022e05392731cebe6f163fa1b40ae6e Mon Sep 17 00:00:00 2001 From: marouault Date: Mon, 24 Jan 2022 10:59:27 +0100 Subject: [PATCH] Added position argument for textLabel --- Pontu/include/engine/TextLabel.h | 14 +++++++++++- Pontu/src/engine/TextLabel.c | 37 +++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/Pontu/include/engine/TextLabel.h b/Pontu/include/engine/TextLabel.h index c983f5c..329be65 100644 --- a/Pontu/include/engine/TextLabel.h +++ b/Pontu/include/engine/TextLabel.h @@ -5,6 +5,18 @@ #include #include "engine/FontLoader.h" +typedef enum { + POSX_LEFT, + POSX_CENTER, + POSX_RIGHT +} POSITIONX_TYPE; + +typedef enum { + POSY_TOP, + POSY_CENTER, + POSY_BOTTOM +} POSITIONY_TYPE; + typedef struct { char* text; @@ -13,7 +25,7 @@ typedef struct SDL_Texture* texture; }TextLabel; -TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer); +TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer, const POSITIONX_TYPE posXType, const POSITIONY_TYPE posYType); void freeTextLabel(TextLabel* label); void drawTextLabel(SDL_Renderer* renderer, TextLabel* label); diff --git a/Pontu/src/engine/TextLabel.c b/Pontu/src/engine/TextLabel.c index 6e36863..c5bc36a 100644 --- a/Pontu/src/engine/TextLabel.c +++ b/Pontu/src/engine/TextLabel.c @@ -3,7 +3,7 @@ #include "engine/TextureLoader.h" -TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer) { +TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer, const POSITIONX_TYPE posXType, const POSITIONY_TYPE posYType) { TextLabel label = { .color = *color, .texture = NULL @@ -11,7 +11,7 @@ TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Col label.text = (char*) malloc(sizeof(char)*strlen(text)); strcpy(label.text, text); - + { SDL_Surface* surface = TTF_RenderText_Solid(font, label.text, label.color); @@ -28,12 +28,39 @@ TextLabel createTextLabel(const char text[], const SDL_Point* pos, const SDL_Col SDL_FreeSurface(surface); } - - label.textZone.x = pos->x; - label.textZone.y = pos->y; label.textZone.w = calculateStringPixelLenght(font, label.text); label.textZone.h = TTF_FontHeight(font); + switch (posXType) + { + case POSX_LEFT: + label.textZone.x = pos->x; + break; + case POSX_CENTER: + label.textZone.x = pos->x-label.textZone.w/2; + break; + case POSX_RIGHT: + label.textZone.x = pos->x-label.textZone.w; + break; + default: + break; + } + + switch (posYType) + { + case POSY_TOP: + label.textZone.y = pos->y; + break; + case POSY_CENTER: + label.textZone.y = pos->y-label.textZone.h/2; + break; + case POSY_BOTTOM: + label.textZone.y = pos->y-label.textZone.h; + break; + default: + break; + } + return label; }