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