|
|
|
@ -5,8 +5,7 @@ Text_init(int posX, int posY, const FcChar8 *TEXT_FONT_STYLE, int TEXT_FONT_PTSI
|
|
|
|
|
Text *t = malloc(sizeof(Text));
|
|
|
|
|
*(int *)&t->POSX = posX;
|
|
|
|
|
*(int *)&t->POSY = posY;
|
|
|
|
|
|
|
|
|
|
if (TEXT_FONT == NULL) {
|
|
|
|
|
|
|
|
|
|
FcConfig *config = FcInitLoadConfigAndFonts();
|
|
|
|
|
FcPattern *pat = FcPatternCreate();
|
|
|
|
|
|
|
|
|
@ -16,7 +15,7 @@ Text_init(int posX, int posY, const FcChar8 *TEXT_FONT_STYLE, int TEXT_FONT_PTSI
|
|
|
|
|
FcChar8 *style, *family;
|
|
|
|
|
for (int i=0; fs && i < fs->nfont; ++i) {
|
|
|
|
|
FcPattern* font = fs->fonts[i];
|
|
|
|
|
if (FcPatternGetString(font, FC_FILE, 0, &TEXT_FONT_FILE) == FcResultMatch
|
|
|
|
|
if (FcPatternGetString(font, FC_FILE, 0, &(t->TEXT_FONT_FILE)) == FcResultMatch
|
|
|
|
|
&& FcPatternGetString(font, FC_FAMILY, 0, &family) == FcResultMatch
|
|
|
|
|
&& FcPatternGetString(font, FC_STYLE, 0, &style) == FcResultMatch
|
|
|
|
|
&& strcmp(TEXT_FONT_FAMILY, family) == 0
|
|
|
|
@ -24,35 +23,31 @@ Text_init(int posX, int posY, const FcChar8 *TEXT_FONT_STYLE, int TEXT_FONT_PTSI
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
TEXT_FONT = TTF_OpenFont(TEXT_FONT_FILE, TEXT_FONT_PTSIZE);
|
|
|
|
|
t->TEXT_FONT = TTF_OpenFont(t->TEXT_FONT_FILE, TEXT_FONT_PTSIZE);
|
|
|
|
|
FcFontSetDestroy(fs);
|
|
|
|
|
FcObjectSetDestroy(os);
|
|
|
|
|
FcPatternDestroy(pat);
|
|
|
|
|
FcConfigDestroy(config);
|
|
|
|
|
if (TEXT_FONT == NULL) {
|
|
|
|
|
printf("TTF_OpenFont fail with path '%s'. TTF_Error: %s\n", TEXT_FONT_FILE, TTF_GetError());
|
|
|
|
|
if (t->TEXT_FONT == NULL) {
|
|
|
|
|
printf("TTF_OpenFont fail with path '%s'. TTF_Error: %s\n", t->TEXT_FONT_FILE, TTF_GetError());
|
|
|
|
|
free(t);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return t;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
Text_free(Text *t) {
|
|
|
|
|
if (TEXT_FONT != NULL) {
|
|
|
|
|
TTF_CloseFont(TEXT_FONT);
|
|
|
|
|
TEXT_FONT = NULL;
|
|
|
|
|
}
|
|
|
|
|
TTF_CloseFont(t->TEXT_FONT);
|
|
|
|
|
free(t);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
Text_render(const Text* text, SDL_Renderer *renderer, const char *str, int width, int height) {
|
|
|
|
|
SDL_Rect textRect = { text->POSX , text->POSY, width, height };
|
|
|
|
|
Text_render(const Text* t, SDL_Renderer *renderer, const char *str, int width, int height) {
|
|
|
|
|
SDL_Rect textRect = { t->POSX , t->POSY, width, height };
|
|
|
|
|
|
|
|
|
|
SDL_Surface *textSurface = TTF_RenderText_Solid(TEXT_FONT, str, TEXT_FONT_COLOR);
|
|
|
|
|
SDL_Surface *textSurface = TTF_RenderText_Solid(t->TEXT_FONT, str, TEXT_FONT_COLOR);
|
|
|
|
|
if (textSurface == NULL) {
|
|
|
|
|
printf("Text rendering failed. TTF_Error: %s\n", TTF_GetError());
|
|
|
|
|
return 1;
|
|
|
|
|