#include "ui.h" void render_text(SDL_Renderer* renderer, TTF_Font* font, const char* text, SDL_Rect* rect) { SDL_Color color = {200, 200, 200, UI_ALPHA}; SDL_Surface* surface = TTF_RenderText_Blended(font, text, color); SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface); SDL_Rect text_rect = { rect->x + (rect->w - surface->w) / 2, rect->y + (rect->h - surface->h) / 2, surface->w, surface->h }; SDL_RenderCopy(renderer, texture, NULL, &text_rect); SDL_FreeSurface(surface); SDL_DestroyTexture(texture); } void init_ui(UI* ui) { ui->zoom_display= (SDL_Rect){UI_PADDING, UI_PADDING, BUTTON_WIDTH, BUTTON_HEIGHT}; ui->fps_display = (SDL_Rect){UI_PADDING, UI_PADDING * 2 + BUTTON_HEIGHT, BUTTON_WIDTH, BUTTON_HEIGHT}; TTF_Init(); //ui->font = TTF_OpenFont("/System/Library/Fonts/Monaco.ttf", FONT_SIZE); //ui->font = TTF_OpenFont("C:/Windows/Fonts/arial.ttf", FONT_SIZE); ui->font = TTF_OpenFont("/usr/share/fonts/nerdfonts/TerminessNerdFont-Regular.ttf", FONT_SIZE); if (!ui->font) { printf("Font yüklenemedi: %s\n", TTF_GetError()); } } void render_ui(UI* ui, SDL_Renderer* renderer, ViewInfo view, float fps) { SDL_SetRenderDrawColor(renderer, 60, 60, 60, UI_ALPHA); SDL_RenderFillRect(renderer, &ui->zoom_display); SDL_RenderFillRect(renderer, &ui->fps_display); SDL_SetRenderDrawColor(renderer, 255, 255, 255, UI_ALPHA); SDL_RenderDrawRect(renderer, &ui->zoom_display); SDL_RenderDrawRect(renderer, &ui->fps_display); if (ui->font) { char buf[16]; snprintf(buf, sizeof(buf), "Zoom %.3gx", view.zoom); render_text(renderer, ui->font, buf, &ui->zoom_display); snprintf(buf, sizeof(buf), "Fps %.2f", fps); render_text(renderer, ui->font, buf, &ui->fps_display); } } void cleanup_ui(UI* ui) { if (ui->font) { TTF_CloseFont(ui->font); } TTF_Quit(); }