Я хотел создать отдельную функцию, в которой я мог бы просто отправить строку, и она будет отображать текст соответствующим образом, чтобы мне не нужно было копировать и вставлять один и тот же материал.Функция, которую я придумал, заключается в следующем:
void renderText(SDL_Renderer* renderer, char* text,
char* font_name, int font_size,
SDL_Color color, SDL_Rect text_area)
{
/* If TTF was not initialized initialize it */
if (!TTF_WasInit()) {
if (TTF_Init() < 0) {
printf("Error initializing TTF: %s\n", SDL_GetError());
return EXIT_FAILURE;
}
}
TTF_Font* font = TTF_OpenFont(font_name, font_size);
if (font == NULL) {
printf("Error opening font: %s\n", SDL_GetError());
return;
}
SDL_Surface* surface = TTF_RenderText_Blended(font, text, color);
SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);
if (!texture) {
printf("error creating texture: %s\n", SDL_GetError());
TTF_CloseFont(font);
return;
}
SDL_RenderCopy(renderer, message, NULL, &text_area);
SDL_FreeSurface(surface);
SDL_DestroyTexture(texture);
TTF_CloseFont(font);
}
Теперь иногда я хочу выровнять текст по окну, для которого мне нужно знать высоту и ширину поверхности, содержащей текст, такчто я могу использовать что-то вроде (WINDOW_WIDTH - surfaceText->w) / 2
или (WINDOW_HEIGHT - surfaceText->h) / 2
.Но нет способа узнать высоту и ширину поверхности, содержащей текст, без создания поверхности.И если мне в конечном итоге понадобится создать поверхность, то разделение этой функции не будет соответствовать ее цели.
Как узнать высоту и ширину поверхности, содержащей текст, без фактического созданияповерхность в библиотеке SDL2_ttf?