// // Created by bruno on 8.2.2025. // #include #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); }