39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
#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();
|
|
}
|