Files
audiocodec/cpustatusui.c
2026-07-14 00:26:01 +02:00

69 lines
1.9 KiB
C

//
// Created by bruno on 8.2.2025.
//
#include <SDL2/SDL_render.h>
#include "cpustatusui.h"
#include "font.h"
void renderState(Encoder *enc, BitmapFont *titleFont, SDL_Renderer *renderer, SDL_Texture **out) {
// Render the value
char valueStr[20] = "";
/*
if (enc->mode & CPU_MODE_ERROR) {
strcat(valueStr, "ERR ");
} else if (enc->mode & CPU_MODE_HALTED) {
strcat(valueStr, "HLT ");
} else if (enc->mode & CPU_MODE_PAUSED) {
strcat(valueStr, "PAU ");
} else {
strcat(valueStr, "RUN ");
}
if (enc->mode & CPU_MODE_LOOP) {
strcat(valueStr, "LOOP ");
} else {
strcat(valueStr, "ONCE ");
}
if (enc->mode & CPU_MODE_STEP) {
strcat(valueStr, "STP");
} else if (enc->mode & CPU_MODE_SECOND) {
strcat(valueStr, "SEC");
} else if (enc->mode & CPU_MODE_FRAME) {
strcat(valueStr, "FRM");
} else {
strcat(valueStr, "BRR");
}
*/
const int oneFieldW = (titleFont->size + 1);
const int allFieldW = oneFieldW * strlen(valueStr);
const int oneFieldH = (titleFont->size + 1);
if (!*out) {
*out = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET,
allFieldW, oneFieldH);
}
SDL_SetRenderTarget(renderer, *out);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_Rect rect = {0, 0, allFieldW, oneFieldH};
SDL_SetRenderDrawColor(renderer, 50, 50, 50, 255);
SDL_RenderFillRect(renderer, &rect);
int x = 0;
for (int j = 0; valueStr[j] != '\0'; j++) {
SDL_Texture *charTex = titleFont->texture[(uint8_t) valueStr[j]];
if (charTex) {
SDL_Rect dstRect = {x, 0, titleFont->size, titleFont->size};
x += titleFont->size + 1;
SDL_RenderCopy(renderer, charTex, NULL, &dstRect);
}
}
SDL_SetRenderTarget(renderer, NULL);
}