HW_Lib/sim/sdl/sim_sdl.cpp

39 lines
1.3 KiB
C++
Raw Normal View History

2024-09-21 12:43:31 +00:00
#include "sim_sdl.h"
bool SIM_SDLInit(char *name, int width, int height, int scale, SIM_SDL3_t *sdl3) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_Log("SDL_Init failed: %s", SDL_GetError());
return false;
}
sdl3->scale = scale;
sdl3->window = SDL_CreateWindow(name, width * scale, height * scale, SDL_WINDOW_RESIZABLE);
if (!sdl3->window) {
SDL_Log("Could not create a window: %s", SDL_GetError());
return false;
}
SDL_SetWindowPosition(sdl3->window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
sdl3->renderer = SDL_CreateRenderer(sdl3->window, nullptr);
if (!sdl3->renderer) {
SDL_Log("Create renderer failed: %s", SDL_GetError());
return false;
}
return true;
}
void SIM_SDL_Color_DrawPiexl(SIM_SDL3_t *sdl3, uint16_t x, uint16_t y, SIM_Color_t color) {
SDL_SetRenderDrawColor(sdl3->renderer, color.ch.red, color.ch.green, color.ch.blue, color.ch.alpha);
for (int y_ = y * sdl3->scale; y_ < (y * sdl3->scale) + sdl3->scale; ++y_) {
for (int x_ = x * sdl3->scale; x_ < (x * sdl3->scale) + sdl3->scale; ++x_) {
SDL_RenderPoint(sdl3->renderer, x_, y_);
}
}
SDL_RenderPresent(sdl3->renderer);
}
void SIM_SDL_Stop(SIM_SDL3_t *sdl3) {
SDL_DestroyRenderer(sdl3->renderer);
SDL_DestroyWindow(sdl3->window);
SDL_Quit();
}