diff --git a/include/gfx.hpp b/include/gfx.hpp new file mode 100644 index 0000000..34a444e --- /dev/null +++ b/include/gfx.hpp @@ -0,0 +1,9 @@ +#ifndef GFX_UTILS_HPP + #define GFX_UTILS_HPP + #include + +namespace gfx { + void draw_circle(SDL_Renderer *renderer, int center_x, int center_y, int radius); +} + +#endif diff --git a/src/gfx/circle.cpp b/src/gfx/circle.cpp new file mode 100644 index 0000000..03a8de9 --- /dev/null +++ b/src/gfx/circle.cpp @@ -0,0 +1,30 @@ +#include + +namespace gfx { + void draw_circle(SDL_Renderer *renderer, int center_x, int center_y, int radius) { + int x = radius; + int y = 0; + int decision = 1 - x; + + SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255); + while (x >= y) { + SDL_RenderPoint(renderer, center_x + x, center_y + y); + SDL_RenderPoint(renderer, center_x - x, center_y + y); + SDL_RenderPoint(renderer, center_x + x, center_y - y); + SDL_RenderPoint(renderer, center_x - x, center_y - y); + SDL_RenderPoint(renderer, center_x + y, center_y + x); + SDL_RenderPoint(renderer, center_x - y, center_y + x); + SDL_RenderPoint(renderer, center_x + y, center_y - x); + SDL_RenderPoint(renderer, center_x - y, center_y - x); + + y++; + + if (decision <= 0) { + decision += 2 * y + 1; + } else { + x--; + decision += 2 * (y - x + 1); + } + } + } +} diff --git a/src/main.cpp b/src/main.cpp index 5b3ddd0..5da6c96 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -4,6 +4,7 @@ #include #include #include +#include "../include/gfx.hpp" bool key_event(SDL_Event e) { if (e.type == SDL_EVENT_KEY_DOWN) { @@ -26,33 +27,6 @@ bool event_handling(SDL_Event e) { return false; } -void draw_circle(SDL_Renderer *renderer, int centerX, int centerY, int radius) { - int x = radius; - int y = 0; - int decision = 1 - x; - - SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255); - while (x >= y) { - SDL_RenderPoint(renderer, centerX + x, centerY + y); - SDL_RenderPoint(renderer, centerX - x, centerY + y); - SDL_RenderPoint(renderer, centerX + x, centerY - y); - SDL_RenderPoint(renderer, centerX - x, centerY - y); - SDL_RenderPoint(renderer, centerX + y, centerY + x); - SDL_RenderPoint(renderer, centerX - y, centerY + x); - SDL_RenderPoint(renderer, centerX + y, centerY - x); - SDL_RenderPoint(renderer, centerX - y, centerY - x); - - y++; - - if (decision <= 0) { - decision += 2 * y + 1; - } else { - x--; - decision += 2 * (y - x + 1); - } - } -} - int main() { if (!SDL_Init(SDL_INIT_VIDEO)){ std::printf("SDL_INIT() failed"); @@ -61,8 +35,15 @@ int main() { SDL_Window *window; window = SDL_CreateWindow("Physics Sim", 720, 540, SDL_WINDOW_RESIZABLE); + if (window == NULL) { + std::printf("SDL_CreateWindow() failed"); + return EXIT_FAILURE; + } SDL_Renderer *renderer = SDL_CreateRenderer(window, NULL); + if (renderer == NULL) { + std::printf("SDL_CreateRenderer() failed"); + } SDL_Event e; @@ -76,7 +57,7 @@ int main() { exit = event_handling(e); SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); SDL_RenderClear(renderer); - draw_circle(renderer, circle_pos.x, circle_pos.y, 10); + gfx::draw_circle(renderer, circle_pos.x, circle_pos.y, 10); circle_pos.x++; SDL_RenderPresent(renderer); SDL_Delay(16);