Create Renderer#drawCircle
This commit is contained in:
parent
ef72acbf0b
commit
86feca9943
@ -1,5 +1,38 @@
|
||||
#include "Renderer.h"
|
||||
|
||||
void drawCircle(SDL_Renderer *renderer, int32_t centreX, int32_t centreY, int32_t radius) {
|
||||
const int32_t diameter = (radius * 2);
|
||||
|
||||
int32_t x = (radius - 1);
|
||||
int32_t y = 0;
|
||||
int32_t tx = 1;
|
||||
int32_t ty = 1;
|
||||
int32_t error = (tx - diameter);
|
||||
|
||||
while (x >= y) {
|
||||
SDL_RenderDrawPoint(renderer, centreX + x, centreY - y);
|
||||
SDL_RenderDrawPoint(renderer, centreX + x, centreY + y);
|
||||
SDL_RenderDrawPoint(renderer, centreX - x, centreY - y);
|
||||
SDL_RenderDrawPoint(renderer, centreX - x, centreY + y);
|
||||
SDL_RenderDrawPoint(renderer, centreX + y, centreY - x);
|
||||
SDL_RenderDrawPoint(renderer, centreX + y, centreY + x);
|
||||
SDL_RenderDrawPoint(renderer, centreX - y, centreY - x);
|
||||
SDL_RenderDrawPoint(renderer, centreX - y, centreY + x);
|
||||
|
||||
if (error <= 0) {
|
||||
y++;
|
||||
error += ty;
|
||||
ty += 2;
|
||||
}
|
||||
|
||||
if (error > 0) {
|
||||
x--;
|
||||
tx += 2;
|
||||
error += (tx - diameter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void drawTexture(SDL_Renderer *renderer, SDL_Texture *texture, int x, int y, int w, int h) {
|
||||
SDL_Rect src;
|
||||
src.x = 0;
|
||||
@ -15,8 +48,8 @@ void drawTexture(SDL_Renderer *renderer, SDL_Texture *texture, int x, int y, int
|
||||
SDL_RenderCopy(renderer, texture, &src, &dist);
|
||||
}
|
||||
|
||||
void drawText(SDL_Renderer *renderer, TTF_Font *font, const std::string text, int x, int y) {
|
||||
SDL_Surface *surface = TTF_RenderText_Solid(font, text.c_str(), {255, 255, 255});
|
||||
void drawText(SDL_Renderer *renderer, TTF_Font *font, const std::string text, int x, int y, SDL_Color color) {
|
||||
SDL_Surface *surface = TTF_RenderText_Solid(font, text.c_str(), color);
|
||||
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
|
||||
|
||||
SDL_Rect src;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#define WINDOW_HEIGHT 500
|
||||
|
||||
void drawTexture(SDL_Renderer *renderer, SDL_Texture *texture, int x, int y, int w, int h);
|
||||
void drawText(SDL_Renderer *renderer, TTF_Font *font, const std::string text, int x, int y);
|
||||
void drawText(SDL_Renderer *renderer, TTF_Font *font, std::string text, int x, int y, SDL_Color color);
|
||||
void drawCircle(SDL_Renderer *renderer, int32_t centreX, int32_t centreY, int32_t radius);
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user